Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bild direkt in der Datenbank oder als base64-Daten speichern?

Ich behaupte, dass Bilder (Dateien) normalerweise NICHT in einer Base64-codierten Datenbank gespeichert werden. Stattdessen werden sie in ihrer rohen binären Form in einer binären (Blob-) Spalte oder Datei gespeichert.

Base64 wird nur als Transportmechanismus verwendet, nicht zur Speicherung. Beispielsweise können Sie ein base64-codiertes Bild in ein XML-Dokument oder eine E-Mail-Nachricht einbetten.

Base64 ist auch Stream-freundlich. Sie können spontan codieren und decodieren (ohne die Gesamtgröße der Daten zu kennen).

Auch wenn base64 gut für den Transport geeignet ist, speichern Sie Ihre Bilder nicht base64-kodiert .

Base64 bietet keine Prüfsumme oder irgendetwas Wertvolles für die Speicherung.

Die Base64-Codierung erhöht den Speicherbedarf um 33 % gegenüber einem reinen Binärformat. Es erhöht auch die Datenmenge, die aus dem persistenten Speicher gelesen werden muss, was im Allgemeinen immer noch der größte Engpass bei der Datenverarbeitung ist. Es ist im Allgemeinen schneller, weniger Bytes zu lesen und sie spontan zu codieren. Nur wenn Ihr System CPU-gebunden statt IO-gebunden ist und Sie das Bild regelmäßig in base64 ausgeben, sollten Sie in Erwägung ziehen, in base64 zu speichern.

Inline-Bilder (Base64-codierte Bilder, die in HTML eingebettet sind) stellen selbst einen Engpass dar – Sie senden 33 % mehr Daten über das Kabel und tun dies seriell (der Webbrowser muss auf die Inline-Bilder warten, bevor er das Herunterladen der Seite abschließen kann HTML).

Wenn Sie dennoch base64-codierte Bilder speichern möchten, stellen Sie bitte sicher, dass Sie base64-codierte Daten nicht in einer UTF8-Spalte speichern und dann indizieren.