Schauen Sie sich diese Antwort an:
Bilder in DB speichern - Ja oder Nein?
Im Wesentlichen kann der Platz- und Leistungseinbruch je nach Anzahl der Benutzer sehr groß sein. Denken Sie auch daran, dass Webserver billig sind und Sie leicht mehr hinzufügen können, um die Last auszugleichen, während die Datenbank normalerweise der teuerste und am schwierigsten zu skalierende Teil einer Webarchitektur ist.
Es gibt einige entgegengesetzte Beispiele (z. B. Microsoft Sharepoint), aber normalerweise ist das Speichern von Dateien in der Datenbank keine gute Idee.
Sofern Sie möglicherweise keine Desktop-Apps schreiben und / oder ungefähr wissen, wie viele Benutzer Sie jemals haben werden, aber auf etwas so Zufälligem und Unerwartetem wie einer öffentlichen Website, zahlen Sie möglicherweise einen hohen Preis für das Speichern von Dateien in der Datenbank.
Ich würde sagen, es hängt von Ihrer Situation ab. Zum Beispiel arbeite ich in der Kommunalverwaltung und wir haben viele Bilder wie Fahndungsfotos usw. Wir haben keine große Anzahl von Benutzern, aber wir müssen eine gute Sicherheit und Prüfung der Daten haben. Die Datenbank ist eine bessere Lösung für uns, da sie dies einfacher macht und wir nicht auf Skalierungsprobleme stoßen werden.
quelle
Was ist die Frage hier?
Das moderne DBMS SQL2008 bietet verschiedene Möglichkeiten, mit BLOBs umzugehen, die nicht nur in einer Tabelle enthalten sind. Natürlich gibt es Vor- und Nachteile, und Sie müssen möglicherweise etwas tiefer darüber nachdenken.
Dies ist ein interessantes Papier des verstorbenen (?) Jim Gray
Zu BLOB oder nicht zu BLOB: Großer Objektspeicher in einer Datenbank oder einem Dateisystem
quelle
Nach meiner eigenen Erfahrung ist es immer besser, Dateien als Dateien zu speichern. Der Grund dafür ist, dass das Dateisystem für die Speicherung von Dateien optimiert ist, eine Datenbank jedoch nicht. Natürlich gibt es einige Ausnahmen (z. B. soll das vielbeachtete MS-Dateisystem der nächsten Generation auf SQL Server aufgebaut sein), aber im Allgemeinen ist das meine Regel.
quelle
Während Leistung ein Problem ist, denke ich, dass moderne Datenbankdesigns es für kleine Dateien viel weniger problematisch gemacht haben.
Abgesehen von der Leistung hängt es auch davon ab, wie eng die Daten gekoppelt sind. Wenn die Datei Daten enthält, die in engem Zusammenhang mit den Feldern der Datenbank stehen, gehört sie konzeptionell in ihre Nähe und kann in einem Blob gespeichert werden. Wenn es Informationen enthält, die sich möglicherweise auf mehrere Datensätze beziehen oder außerhalb des Datenbankkontexts verwendet werden können, gehört es außerhalb. Beispielsweise wird ein Bild auf einer Webseite auf eine separate Anforderung von der Seite abgerufen, die darauf verweist, sodass es möglicherweise nach außen gehört (abhängig vom spezifischen Design und den Sicherheitsaspekten).
Unser Kompromiss, und ich verspreche nicht, dass es der beste ist, bestand darin, kleinere XML-Dateien in der Datenbank zu speichern, aber Bilder und andere Dateien außerhalb der Datenbank.
quelle
Wir haben die Entscheidung getroffen, als varbinary für http://www.freshlogicstudios.com/Products/Folders/ zu speichern, wobei Leistungsprobleme auf halbem Wege erwartet werden. Ich kann sagen, dass wir angenehm überrascht waren, wie gut es geklappt hat.
quelle
Ich stimme @ZombieSheep zu. Nur noch eine Sache - ich glaube im Allgemeinen nicht, dass Datenbanken tatsächlich portabel sein müssen, da Sie alle Funktionen vermissen, die Ihr DBMS-Anbieter bietet. Ich denke, dass die Migration in eine andere Datenbank das Letzte ist, was man in Betracht ziehen würde. Nur meine $ .02
quelle
Der Aufwand, einen Blob (ein Bild) in ein Byte-Array zu analysieren und ihn dann im richtigen Dateinamen auf die Festplatte zu schreiben und dann zu lesen, reicht aus, um Sie davon abzuhalten, dies zu oft zu tun, insbesondere wenn es sich um Dateien handelt eher groß.
quelle
Um nicht vage zu sein oder so, aber ich denke, die Art der 'Datei', die Sie speichern, ist einer der wichtigsten bestimmenden Faktoren. Wenn Sie im Wesentlichen über ein großes Textfeld sprechen, das als Datei gespeichert werden könnte, würde ich den Datenbankspeicher bevorzugen.
quelle