Bilder in Datenbank speichern

Ronald Nickel

Legendäres Mitglied
Hallo

mit dem Befehl "ImageWriteBase64" kann man in CFML Bilder als einen String in eine datenbank abspeichern astatt sie als Datei auf dem Webserver abzulegen.

Frage:
Bingt das was bezüglich Zugriffszeit bzw. gibt es andere Gründe die für oder gegen einen solchen Workarround sprechen?

Gruß Ronny
 
Nun, der große Speicherverbrauch könnte dagegen sprechen, dann kannst Du Sie auch gleich als Rohdatei speichern in einen Blob.
 
ich dachte immer Inhalte der DB würden nicht zum Webspace gehören. Mein Gedanke war 1000 Bilder lieber in eine DB zu packen bevor ich sie als Datei auf der Server speichere.
 
QUOTE (Ronald Nickel @ Sa 26.11.2011, 23:34) ich dachte immer Inhalte der DB würden nicht zum Webspace gehören. Mein Gedanke war 1000 Bilder lieber in eine DB zu packen bevor ich sie als Datei auf der Server speichere.

Nun ja, ich weiß nicht, wie es andere Webhoster machen, aber man kann die Datengröße der DB auch dazu zählen lassen, wenn sie dann auf einmal 10 GB groß ist.
 
was ist mit der Abrufzeit. Was ist schneller ausgelesen - eine Datenbank oder eine Datei? Lohnt sich der Zirkus in Sachen Performance eine Datei in eine DB zu schreiben und auch von dort wieder auszulesen?
 
Das meinte ich eigendlich mit "ImageWriteBase64" . Frage ist immer noch: Bringt es Vorteile?

Gruß Ronny
 
QUOTE (Ronald Nickel @ Sa 26.11.2011, 23:58) Das meinte ich eigendlich mit "ImageWriteBase64" . Frage ist immer noch: Bringt es Vorteile?

Gruß Ronny

Zu Base64:


Vorteile
- Einfügen in die Datenbank relativ ungefährlich, würde aber bei sauberen Datenbankeinsatz (sauberes Escapen) nicht ins Gewicht fallen


Nachteile
- Bilder müssen beim Speichern und Ausgeben immer umgewandelt werden (damit würde wohl auch die Geschwindigkeit des Aufrufs leiden, wobei noch hinzukommt)
- Die Bilder verbrauchen in der Datenbank mehr Speicherplatz


Also das was ich oben schon meinte (s. oben #2).


Ohne Base64 musst Du es nachmessen (jede Engine verhält sich hier anderes Schrieb-/Lese-Geschwindigkeit), bzw. es kommt ja auch drauf an, in wie weit die Bilder dann in einen öffentlichen Ordner oder geschützten Ordner liegen müssen, sprich ob eine Aufrufkrücke zwingend erforderlich ist.
 
QUOTE (Sascha Ahlers @ So 27.11.2011, 02:46)Nachteile
- Bilder müssen beim Speichern und Ausgeben immer umgewandelt werden (damit würde wohl auch die Geschwindigkeit des Aufrufs leiden, wobei noch hinzukommt)
- Die Bilder verbrauchen in der Datenbank mehr Speicherplatz


QUOTE (Ronald Nickel @ So 27.11.2011, 00:47)was ist mit der Abrufzeit. Was ist schneller ausgelesen - eine Datenbank oder eine Datei?
Lohnt sich der Zirkus in Sachen Performance eine Datei in eine DB zu schreiben und auch von dort wieder auszulesen?

Eine SQL ist auch nur eine Datei

also, ob das Bild aus einer BildDatei oder einer SQLDatei ausgegeben wird ....
.... ändert erstmal nix (KEINE VERBESSERUNG MÖGLICH)

Wie Sasche schon sagte .... ist das Bild als SQL größer
= mehr Festplattenaktivität beim Dazeizugriff = mehr Zeitbedarf
+ Umwandlung von Base64 in ... ähm, Original ... = mehr Zeitbedarf
+ Es ist ein Zusätzlicher "Mitarbeiter" in der Verarbeitungskette = mehr Zeitbedarf

zu dem Mitarbeiter
Steve Woz ruft SteveJobs an "Wie war nochnal die TelNum von Bill gates?"
Steve Jobs nennt Nummer

vs

Steve Woz ruft Säkretärin von SteveJobs an "Wie war nochnal die TelNum von Bill gates?"
Säkretärin klingelt durch und fragt SteveJobs "Wie war nochnal die TelNum von Bill gates?" fragt Woz
Säkretärin nennt Woz die ANtwort die Sie von Jobs bekommen hat

 
DB Backup wird etwas komplizierter.
Entweder grosse Backup Datei oder jedesmal die Bildertabelle vom Backup ausnehmen.

Ich mache es so, dass ich Informationen zu den Bildern in der DB speichere und die Bilddatei auf dem Server. So kann man auch sehr schön den Zugriff auf die Datei einschränken, wenn diese von http nicht erreichbar ist, sondern nur durch Skript aufgerufen werden kann.
 
Zurück
Oben