Vorteile der Speicherung von Bildern/Blobs in der Datenbank
- Das Speichern der Bilder ist automatisch Teil Ihrer Transaktionen
- Das Dateisystem muss nicht bereinigt und mit der Datenbank synchronisiert werden
- Der Zugriff auf die Bilder wird auf die gleiche Weise kontrolliert wie der Zugriff auf die restlichen Daten
- Nur ein einziges Backup, um das man sich kümmern muss
- Eine Datenbank ist normalerweise besser geeignet, um Millionen (wenn nicht Milliarden) von Datensätzen zu speichern. Im Dateisystem muss man eine geschickte Verteilung auf mehrere Verzeichnisse finden. Ein einzelnes Verzeichnis kann Millionen von Dateien nicht effizient verarbeiten.
- Für einige Workloads könnte das Speichern der Bilder in der Datenbank tatsächlich schneller sein.
Für SQL Server hat Microsoft dies tatsächlich getestet:
http://research.microsoft.com/apps/pubs/default.aspx?id=64525
Ich wäre nicht überrascht, wenn sich andere Datenbanken ähnlich verhalten würden.
Nachteile:
- Macht Ihre Datenbank und damit Ihre Backups viel größer (denken Sie an die Zeit, die für die Wiederherstellung benötigt wird).
- Dateisysteme sind normalerweise besser mit inkrementellen Sicherungen (es sei denn, Sie haben Oracles RMAN)
- Auf die Bilder kann nicht von anderen Anwendungen zugegriffen werden (z. B. einem WebServer, Tools zur Größenänderung von Bildern, FTP-Server)
- Bilder können nicht über ein Inhaltsverteilungsnetzwerk verteilt werden, um den Lastausgleich in einer Webanwendung zu ermöglichen (um den Anwendungsserver zu entlasten)
- Allgemeine Meinung ist, dass der Abruf aus der Datenbank langsamer sein wird.
- bei manchen Datenbanken könnte das Abrufen der Blobs tatsächlich die Effizienz des Datenbankcaches verringern (nicht so bei Oracle, SQL Server und PostgreSQL. Ich weiß es aber nicht bei MySQL)