Thread Bilder in der DB ablegen sinnvoll oder nicht?: eigenes CMS (20 answers)
Opened by renee at 2004-07-21 10:40

sri
 2004-07-22 19:12
#32439 #32439
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Auf die Frage ob Datenbank oder Dateisystem gibt es keine Patentlösung.

Speichern im Dateisystem ist immer schneller als in einer Datenbank, lässt sich aber z.B. durch vorangestellte mod_proxy Apache/Squids recht gut ausgleichen.

Es ist eine Frage der skalierbarkeit, denn bedenke, nicht alle Dateisysteme verhalten sich gleich, Ext2/3 z.B. bekommen bei mehreren Tausend Dateien in einem Verzeichnis ernste Probleme, so das eine generierte Verzeichnisstruktur ala "/f1/12/e3/23/12.jpg" nötig wird. (Recht einfach mit MD5 zu generieren, aber wenig skalierbar, Speicherfressend und schlecht für Backups).

Das einzige mir bekannte Dateisystem das hundert tausende Dateien in einem Verzeichnis ohne performance einbussen verträgt ist ReiserFS.

Das speichern in einer Datenbank dagegen ist sehr einfach und skalierbar. Backups sind ein Kinderspiel.

Postgresql kann grosse binär objekte sogar on-the-fly komprimieren! (Stichwort TOAST) :)

Bei einem grossen Projekt an dem ich gerade arbeite habe ich mich für eine hybridlösung entschieden.
Hierbei werden statische Dateien (ein paar hundert bilder/css/templates) im Dateisystem (auf einem geteilten NFS server), und durch den Benutzer hochladbare Dateien (viele tausend css/bilder) in einer Postgresql gespeichert.

Ergo: Wenn du mehr als Tausend Bilder hast greiffe zur Datenbank (benutze aber mod_proxy/squid), ansonsten nutze einfach das Dateisystem.

View full thread Bilder in der DB ablegen sinnvoll oder nicht?: eigenes CMS