Benutzerprofilbilder auf Festplatte oder in der Datenbank speichern?

Ich erstelle eine asp.net mvc-Anwendung, mit der Benutzer ein Bild an ihr Profil anhängen können, aber auch in anderen Bereichen des Systems,

Wenn der Benutzer diese hochlädt, frage ich mich, ob es besser ist, sie in der Datenbank oder auf der Festplatte zu speichern.

Databse Vorteile

Einfaches Sichern der gesamten Datenbank und Beibehalten des Profilinhalts / der Bilder mit den zugehörigen Profil- / Benutzertabellen

wenn ich später Webdienste erstelle, können sie einfach alle profiile bezogenen Daten von einer Stelle (der Datenbank) abrufen.

Dateisystemvorteile

Laden von Dateien von der Festplatte ist wahrscheinlich schneller

jegliche anderen Vorteile?

Wo speichern andere Websites diese Art von Informationen? Bin ich zu Recht ein wenig besorgt über die Datenbankleistung für so etwas?

Kann es eine Möglichkeit geben, Bilder zwischenzuspeichern, die für einen bestimmten Zeitraum aus der Datenbank entfernt wurden?

Alternativ, wie wäre es mit der Idee, diese Bilder in der Datenbank zu speichern, aber im Schatten auf die Festplatte zu kopieren, damit der Webserver sie von dort laden kann? Dies scheint sowohl das Backup als auch den Komfort einer Datenbank zu bieten und gleichzeitig die Geschwindigkeitsvorteile von Dateien auf der Festplatte zu bieten.

Infrastruktur in Frage

Die Website wird unter Windows Server 2003 mit NTFS-Dateisystem für IIS bereitgestellt.Die Datenbank wird SQL Server 2008 sein

Zusammenfassun

Reading auf vielen verwandten Themen hier auf SO, neigen viele Leute jetzt in Richtung SQL Server Filestream-Typ. Nach allem, was ich jedoch sammeln könnte (ich kann mich irren), gibt es keinen großen Vorteil, wenn die Dateien ziemlich klein sind. Das Filestreaming scheint jedoch die Leistung erheblich zu verbessern, wenn die Dateien mehrere MB oder mehr groß sind.

Da meine Profilbilder in der Regel ca. 5 KB groß sind, habe ich beschlossen, sie nur in einem Dateispeicher in der Datenbank als varbinary (max) zu speichern.

In ASP.NET MVC wurde ein Leistungsproblem festgestellt, das FileContentResults für Bilder zurückgab, die wie folgt aus der Datenbank gezogen wurden. Daher habe ich die Datei beim Lesen auf der Festplatte zwischengespeichert, wenn der Speicherort für diese Datei nicht in meinem Anwendungscache gefunden wurde.

So ich denke, ich habe mich für einen Hybrid entschieden;

Datenbankspeicher, um das Backen von Daten zu vereinfachen und Dateien direkt mit Profilen zu verknüpfenShadow kopiert auf die Festplatte, um ein besseres Caching zu ermöglichen

Ich kann jederzeit den Cache-Ordner auf der Festplatte löschen. Wenn die Bilder erneut angefordert werden, werden sie beim ersten Treffer erneut kopiert und anschließend aus dem Cache bereitgestellt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage