Cytat
Przeszukałem internet i za głupi jestem na to aby określić co będzie lepsze, dodam iż struktura drzewa nie będzie nigdy zmieniana - najwyżej dojdą nowe odnogi a limit ilości poziomów nie stanowi utrudnienia co decyduje według mnie o możliwości zastosowania takiej metody, w pozostałych 99% przypadków pasowało by użyć lepszych drzewiastych metod ale na tę okazję ta może być najszybsza a mi o szybkość chodzi.
Hmm, z tego co pamiętam, to systemy plików utrzymujące tablice alokacji na bazach utrzymywały coś w deseń relacyjny.
I tu trzeba postąpić dwojako - założyłeś, że pliki mogą należeć tylko do jednego katalogu, a nie uwzględniłeś tego, że w systemie plików mogą pojawić się dowiązania symboliczne. Zostawiam to Tobie.

Zakładając jednak, że jeden plik może należeć do dokładnie jednego katalogu, wystarczy Ci zbudować odpowiednie drzewo na płaskiej strukturze w bazie. Jak dobrze zindeksujesz, to będziesz miał wydajnościowo całkiem przyzwoicie. I proponowałbym tu użycie InnoDB, bo MySQL - w przypadku jakichś wymagających blokowania operacji - blokuje całą tabelę, a nie tylko rekord.

Jakie drzewo? Nie pamiętam konkretnie nazwy, ale był gdzieś algorytm z podziałem na poddrzewa; dzisiaj gdzieś to czytałem, tylko nie bardzo chce mi się już szukać; po keywordzie powinieneś trafić. I drzewo budujesz wg struktury katalogowej. Na liściach zapisujesz sobie identyfikator pliku, a potem zwykłym JOIN-em dociągasz niezbędne o nim informacje.
Summa summarum, wystarczą dwie tabele. Wydajność? Kwestia dobrania odpowiedniego algorytmu zapisu drzewa, masz do wyboru kilka, ale proponowałbym poddrzewa, albo BST, albo zwykłe zapisywanie przez kolumnę order/depth (słowa-klucze, jak coś

).