Benutzerbilder – database vs. Dateisystemspeicher

Ich schreibe eine Upload-function in .NET für Präsentationsbilder von Benutzerprofilen. Ich wähle zwischen zwei verschiedenen Möglichkeiten, um dies zu tun, und möchte auf Rat und Meinung zu den Vor- und Nachteilen fragen.

  1. Speichern Sie die Bilder direkt im Dateisystem

  2. Speichern Sie die Bilder in der database

Bisher war ich meist pro die erste Option – Benennung der Bilder nach den Benutzernamen, da jeder Benutzer nur ein Präsentationsbild haben kann. Dann überprüfe ich den angegebenen Pfad, wenn der Benutzer ein Bild hat, wenn nicht ein Standardbild “kein Bild” angezeigt wird.

Eine andere Sache, die ich daran mag, ist, dass es Platz in der DB spart – die DB wird ohne die zusätzliche binäre Last ziemlich schwer sein.

Ich bin mir sicher, dass es andere Aspekte gibt, über die ich nicht nachgedacht habe, daher würde ich gerne Ihre Meinung dazu hören. Wenn jemand eine radikal andere Lösung für das Problem hat, bitte teilen Sie das auch!

   

Ihre Frage wurde zuvor in StackOverflow beantwortet:

Speichern Sie Bilder als Dateien oder in der database für eine Web-App

Einschließlich viele andere doppelte Fragen!

Im Allgemeinen ist es besser, Dateien im Dateisystem zu speichern. Dateisysteme sind bereits auf das Speichern von Dateien abgestimmt. Dies hat jedoch seine Nachteile, insbesondere in Bezug auf Verwaltung, Sicherung und Wiederherstellung, und es ist ein wenig zwiespältiger Zusammenhang zwischen einem varchar-Dateipfadfeld in der database und einer Datei in dem Dateisystem. Welches databasesystem verwenden Sie? Ich denke, wenn Sie SQL Server 2008 verwenden, bietet der neue FileStream-Typ eine sehr gute Methode zum Speichern von Dateien in dieser database.

Bearbeiten: Hinweis Ich spreche wirklich allgemein über das Speichern von Dateien in der database. Beim Speichern von Bildern, die auf HTML-Seiten in der database angezeigt werden sollen, ist eine gewisse Komplexität erforderlich.

Dateisystem ist gut, aber nicht praktikabel mit mehr als 3000 Bildern pro Ordner. Es ist besser, eine automatische Ordnererstellung für alle 3000 Bilderblöcke zu schreiben.

Datenredundanz und Inkonsistenz Schwierigkeiten beim Zugriff auf Daten Datenisolierung Integritätsbedingungen Atomaritätsproblem gleichzeitiger Zugriff und Anomalien (Aktualisierungssicherheitsproblem

Für feste (nicht veränderliche) Inhalte wie Fotos, Videos usw. können Dateisysteme nicht skaliert werden, besonders wenn Sie viele Dateien in einem Verzeichnis haben und die performance darunter leidet. Eine bessere Option ist die Verwendung der Objektspeichertechnologie, die das Bild als Objekt speichert und die zugehörigen Metadaten automatisch in die database einfügt.

Wie wäre es mit dem Speichern von doc-, pdf-, xls-, jpg-Dateien? Welchen empfohlen?

Ich werde an einem Dokumenten-Management-System arbeiten, das 10000 Dateien speichern könnte, aber das Problem ist, dass ich mir Sorgen über die Verbreitung von Viren mache, wenn wir Dateisystem-Technik verwenden.