Frage

In der Regel, wie schlecht der performance-hit ist das speichern einer Datei in einer Datenbank (speziell mssql), im Gegensatz zu dem Dateisystem?Ich kann nicht kommen mit ein Grund außerhalb der Anwendung Portabilität, ich möchte meine Dateien als varbinaries in SQL Server.

War es hilfreich?

Lösung

Haben Sie einen Blick auf diese Antwort:

Speichern von Bildern in der Datenbank - Ja oder Nein?

Im wesentlichen, die Platz-und performance-Treffer kann sehr groß werden, je nach der Anzahl der Benutzer.Auch, Bedenken Sie, dass Web-Server sind Billig und man kann leicht mehr hinzufügen, um die Last zu verteilen, während die Datenbank die teuersten und am schwersten zu skalieren Teil einer web-Architektur in der Regel.

Es gibt einige Gegenbeispiele (z.B. Microsoft Sharepoint), aber in der Regel, speichern von Dateien in die Datenbank ist keine gute Idee.

Es sei denn vielleicht, Sie schreiben von desktop-apps und/oder wissen ungefähr, wie viele Benutzer, die Sie jemals haben wird, sondern auf etwas, was als zufällige und unexpectable wie eine öffentliche Website, können Sie zahlen einen hohen Preis für das speichern von Dateien in die Datenbank.

Andere Tipps

Wenn Sie auf SQL Server 2008 verschieben, können Sie Sie nutzen die FILESTREAM-Unterstützung, der Ihnen das beste von beidem: die Dateien werden im Dateisystem abgelegt, aber die Datenbank-integration ist viel besser als nur die Speicherung einer Dateipfad in ein varchar-Feld.Ihre Abfrage zurückgeben kann ein standard .NET-stream-Datei, wodurch die integration viel einfacher.

Erste Schritte mit FILESTREAM-Speicherung

Ich würde sagen, es hängt von Ihrer situation.Zum Beispiel, ich arbeite in lokalen Regierung, und wir haben viele Bilder wie mugshots, etc.Wir nicht haben eine hohe Anzahl von Benutzern, aber wir müssen gute Sicherheit und überwachung rund um die Daten.Die Datenbank ist eine bessere Lösung für uns, da dies macht es einfacher und wir gehen nicht in die Skalierung Probleme.

Was ist hier die Frage?

Moderne DBMS SQL2008 haben eine Vielzahl von Möglichkeiten des Umgangs mit BLOBs, die nicht nur kleben Sie in eine Tabelle.Es gibt vor-und Nachteile, natürlich, und Sie vielleicht brauchen, zu denken, über die es ein wenig tiefer.

Dies ist ein Interessantes Papier, durch das späte (?) Jim Gray

BLOB oder Nicht Zu BLOB:Die Speicherung großer Objekte in einer Datenbank oder einem Dateisystem

In meiner eigenen Erfahrung, ist es immer besser zum speichern von Dateien als Dateien.Der Grund dafür ist, dass das Dateisystem ist optimiert für die Datei storeage, in der Erwägung, dass eine Datenbank nicht.Natürlich gibt es einige Ausnahmen (z.B.die groß angekündigte next-gen-MS-Dateisystem soll gebaut werden auf der Basis von SQL-server), aber im Allgemeinen, das ist meine Regel.

Während die Leistung ist ein Problem, ich denke, die modernen Datenbank-designs es geschafft haben, viel weniger ein Problem für kleine Dateien.

Leistung beiseite, es hängt auch davon ab, wie eng miteinander verbunden, die Daten ist.Wenn die Datei Daten enthält, die eng mit den Bereichen der Datenbank, dann ist es konzeptionell gehört der Nähe und kann gespeichert werden in einem blob.Wenn es Informationen enthält, die möglicherweise beziehen sich auf mehrere Datensätze oder kann haben einige Verwendung außerhalb des Kontextes der Datenbank, dann gehört es außerhalb.Zum Beispiel ein Bild auf einer web-Seite abgerufen wird auf einer separaten Anforderung von der Seite aus, die Sie links, so kann es gehören, außerhalb (je nach der spezifischen design und überlegungen zur Sicherheit).

Unser Kompromiss, und ich weiß nicht Versprechen, es ist der beste, hat schon zu speichern, kleinere XML-Dateien in der Datenbank, aber Bilder und andere Dateien, die es außerhalb.

Wir die Entscheidung getroffen, store als varbinary für http://www.freshlogicstudios.com/Products/Folders/ auf halbem Weg erwartet Sie performance-Probleme.Ich kann sagen, wir waren angenehm überrascht, wie gut es geklappt.

Ich Stimme mit @ZombieSheep.Just one more thing - I in der Regel nicht denken, dass die Datenbanken tatsächlich müssen tragbar sein, weil Sie Sie vermissen alle die Funktionen, die Ihr DBMS-Hersteller.Ich denke, dass die Migration auf eine andere Datenbank wäre das Letzte, was man denken würde,.Nur meine $.02

Der Aufwand für die Parsen ein blob (Bild) in ein byte-array und dann schreiben Sie es auf einen Datenträger in der richtigen Dateinamen und dann Lesen es ist genug von einem overhead-hit, Sie zu entmutigen, diese Aktion zu oft, vor allem, wenn die Dateien sind ziemlich groß.

Nicht zu vage sein oder irgendetwas, aber ich denke, die Art von 'Datei' Sie speichern werden, ist einer der größten Faktoren.Wenn Sie im wesentlichen sprechen von einem großen Textfeld, das könnte als Datei gespeichert werden meine Präferenz wäre für db-Speicher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top