Benutzer mit den meisten Antworten
Umgang mit Bildern

Frage
-
Hallo,
bei vielen Szenarien kann ein Benutzer heutzutage Bilder hoch laden. Ich frage mich gerade, wie geht man damit um. Speichert man diese in der Datenbank? Oder im Filesystem und lediglich eine Pfad in der Datenbank? Auch in Bezug auf Traffic, das z.B. Azure anfällt, frag ich mich, wie man am besten vorgehen sollte.
Antworten
-
Hallo Uriel,
grundstälich ist beides möglich, also Dateisystem und Datenbank. Datenbanken machen es insofern einfacher, dass man die Daten genauso abrufen kann wie alle anderen auch und man sich nicht um einen eigenen Ordner mit speziellen Rechten kümmern muss. Aber es gibt auch viele Gründe dafür, die Bilder als Datei abzulegen:
- You will be able to serve the pictures as static files.
- No database access or application code will be required to fetch the pictures.
- The images could be served from a different server to improve performance.
- It will reduce database bottleneck.
- The database ultimately stores its data on the file system.
- Images can be easily cached when stored on the file system.
Quelle: http://stackoverflow.com/questions/561447/store-pictures-as-files-or-in-the-database-for-a-web-app
Was Azure betrifft, so dürfte das auch von der Menge an Bildern abhängen. Datenbankspeicher kostet vor allem bei sonst eher kleinen Datenbanken mehr. Und der Traffic vom Dateisystem des Webservers zum Client ist natürlich ein Schritt kürzer als von der DB zum Webserver zum Client. Letzteres fällt natürlich kostenmäßig weg, wenn alles auf der selben VM läuft.
Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Als Antwort markiert UrielMhezzek Donnerstag, 19. Januar 2017 09:31
Alle Antworten
-
Hallo,
es kommt drauf an was für Bilder es sind.
Bilder die jeder sehen darf lege ich in das Dateisystem und den Pfad in die Datenbank.
Geschützte Bilder lege ich in eine FileTables.
Bei Azure entstehen kosten durch den Traffic, deswegen würde ich nicht geschützte Bilder in einen kostenlosen Speicher legen und die möglichen nachteile in kauf nehmen.
Sind nur die Pfade in der Datenbank, hast Du alle Möglichkeiten offen.
Gruß, Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
-
Hallo Uriel,
grundstälich ist beides möglich, also Dateisystem und Datenbank. Datenbanken machen es insofern einfacher, dass man die Daten genauso abrufen kann wie alle anderen auch und man sich nicht um einen eigenen Ordner mit speziellen Rechten kümmern muss. Aber es gibt auch viele Gründe dafür, die Bilder als Datei abzulegen:
- You will be able to serve the pictures as static files.
- No database access or application code will be required to fetch the pictures.
- The images could be served from a different server to improve performance.
- It will reduce database bottleneck.
- The database ultimately stores its data on the file system.
- Images can be easily cached when stored on the file system.
Quelle: http://stackoverflow.com/questions/561447/store-pictures-as-files-or-in-the-database-for-a-web-app
Was Azure betrifft, so dürfte das auch von der Menge an Bildern abhängen. Datenbankspeicher kostet vor allem bei sonst eher kleinen Datenbanken mehr. Und der Traffic vom Dateisystem des Webservers zum Client ist natürlich ein Schritt kürzer als von der DB zum Webserver zum Client. Letzteres fällt natürlich kostenmäßig weg, wenn alles auf der selben VM läuft.
Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Als Antwort markiert UrielMhezzek Donnerstag, 19. Januar 2017 09:31
-
Hi,
wichtig ist auch noch zu berücksichtigen, ob sich die ASP.NET-Anwendung in einer skalierbaren Umgebung befindet, d.h., wenn über einen NLB der bedienende Server ausgewählt wird. In diesem Fall kann die Ablage im Dateisystem sehr kompliziert werden (Kopiervorgänge auf die Server oder Ablage außerhalb).--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks -
-
Hi,
ein NLB ist ein Network Load Balancer. Wenn Du keine skalierbare Umgebung hast, dann hast Du auch keinen NLB und brauchst es nicht zu berücksichtigen.Den Zugriff auf das Dateisystem kannst Du auch sichern, indem der Zugriff nur vom Konto des AppPools erlaubt wird und die Bilder per ashx geliefert werden. Da kannst im Handler auch Rechteprüfungen durchführen (z.B. mit RoleProvider.IsInRole).
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks