Das Unix Dateisystem hat alle Eigenschaften einer Datenbank und ist extrem gut debugged und performant.
Das Grundprinzip ist: jeder Record (oder jeder Record-Set) ist ein File. Der Primarschlüssel ist der Dateiname.
Um viele Dateien effizient auf viele Directories zu verteilen (die meisten Betriebssysteme benutzen keinen B-Tree zur Directory-Ablage und deswegen dürfen die einzelnen Directories nicht zu voll werden), empfiehlt sich eine "Partitionierung": der erste Buchstabe in einem Verzeichnis, dann die ersten zwei oder drei Buchstaben als zweites Unterverzechnis. Dies könnte so aussehen: foobar_user --> /f/foo/foobar_user. Probleme könnten trotzdem bei Häufungen auftreten, beispielsweise wenn viele Records mit einem idenytischen Prefix beginnen.
Um eine sehr gute Verteilung auf die Directories zu erreichen, kann man mehrere Dinge tun:
Der Unix Werkzeugkasten (ls, cat, grep, awk, tar) ist dein Freund! Und wieder ein Tool weniger: keine Dämonen, keine Logfiles, keine Lizenzen, keine Upgrades, kein Management, ....
Das Hauptproblem stellen alle Zugriffswege dar, die nicht über den Primärschlüssel erfolgen; also üblicherweise dort, wo man Indices einsetzen würde.
Entweder man kann darauf verzichten, oder man muss "händisch" Indexdateien pflegen, d.h. bei jeder index-relevanten Mutation (erzeugen, löschen, umbenennen) muss de Index applikatorisch aktualisiert werden.
Der Index ist dann allerdings nicht immer 100% korrekt (Race Conditions, appl. Fehler, Abstürze, ...). Ist dies ein k.o.-Kriterium ist eine Datenbank doch angeraten. Aber eine einfache bitte: z.B. Berkeley-DB von http://www.sleepycat.com/
14-Jan-2003