Diskussion Bilder in DB

Guten Tag,
Ich beschäftige mich derzeit mit der Frage, ob es sinnvoll ist, Bilder in einer Datenbank abzulegen.
Ich entwickle derzeit eine Datenbank, die lediglich als Zusatz Bilder enthält. Sie werden nur für eine Funktion benötigt. Diese wird auch relative selten, quasi einmal im Jahr ausgeführt.
Ich habe mich somit entschieden die Bilder im Dateisystem zu hinterlegen.

Dies möchte ich jetzt schriftlich begründen und die Vor- und Nachteile abwägen.
Meiner Einschätzung, liegen die Vorteile des Dateisystems darin, dass die Bilder schneller geöffnet werden. Eine Abfrage an die Datenbank entfällt. Probleme treten auf wenn der Stand der Datenbank mit der des Dateisystems nicht übereinstimmt. Bilder können “verwaisen” oder nicht mehr vorliegen.
Für das Ablegen in einer Datenbank spricht, dass alle Informationen zusammen liegen. Die Integrität wird vereinfacht. Weiterhin lässt sich die Rechtevergabe einfacher regeln.
Meiner Meinung wird es durch ablegen der Bilder schwerer Backups zu fahren.
Letzendlich handelt es sich in meinem Fall um 16.000 Bilder.

Ich hoffe ich bekomme hier noch einige Anregungen sowie Kritik beziehungsweise Verbessungen wenn ich was falsches erwähnt habe.

Eigentlich hast Du alle Vor- und Nachteile genannt.

Vielleicht noch zum Backup. Wenn die Bilder in der DB sind und man täglich einen Dump machen will ist das natürlich eher blöd - die Bilder sind ja statisch. Aber man könnte die Tabelle mit den Bildern auch excluden. Wenn in der DB zumindest die Metadaten stehen und die Bilder im Filesystem könnte man natürlich Integritätschecks machen: alle Bilder noch da, alle Bilder in der DB, md5-Summen in der DB mit der Realität abgleichen, whatever. Man kann also auch die Nachteile beider Varianten mildern.

Nicht notwendigerweise.

Microsoft hat mal einen Test gemacht, der gezeigt hat, dass für bestimmte Dateigrößen die Datenbank schneller sein kann als das Dateisystem: To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem - Microsoft Research

Das war natürlich alles für SQL Server und Windows. Ich habe mal eine Web-Anwendung geschrieben die etwas ähnliches für Postgres und Oracle getestet hat. Das Ganze war sehr unwissenschaftlich und nicht sehr ausführlich, aber auch da konnte ich zumindest den Trend beobachten, dass die Datenbank nicht notwendigerweise langsamer ist, als das Dateisystem. Ich habe das mit BLOBs mit ca. 50KB getestet.

Das habe ich auch festgestellt. Nur leider gibt es dazu keine wirklichen wissenschaftlichen Artikel dazu bzw. finde ich keine passenden. Viel habe ich aus diversten Foren entnommen. Der obige Artikel klingt interessant, jedoch auch schon einige Zeit alt und wie du bereits sagtest Microsoft :wink:

Aber einige Anhaltspunkte habe ich ja bereits auf die ich mich berufen kann. Sollte mal ein neuer Artikel auftauchen könnt ihr mich ja, falls ich ihn nicht vorher finde, darauf aufmerksam machen.
Schönes Wochenende :slight_smile: