Navigation: Homepage | xmlgawk | Buchkritik | Sitemap

Das Filesystem als Datenbank

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:

Vorteile

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, ....

Beispiele wie man Mengenlehre mit dem Unix Werkzeugkasten betreiben kann, findet man hier: http://www.catonmat.net/blog/set-operations-in-unix-shell/ und aktualisiert hier: http://www.catonmat.net/blog/set-operations-in-unix-shell-simplified/

Nachteile

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/

Datum

14-Jan-2003

last modified: $Date: 2008/12/03 21:23:43 $