Speichern der Daten-URL in Mongo DB

8

Ich denke darüber nach, data-url s in meiner mongoDB statt zu speichern, um einen Verweis auf eine Datei zu speichern oder GridFS zu verwenden.

Daten-URL:

%Vor%

Alle Dateien, die ich speichere, sind JPG oder PNG und haben eine Größe von weniger als 1 MB.

Ich frage mich, ob dies als schlechte Praxis angesehen wird, und was die Auswirkungen auf die Leistung für Lese-und Schreibvorgänge, Speichern der data-url s 1) in einer separaten Sammlung 2) als Metadaten in einer Sammlung.

Ich bin offen für alle anderen Vorschläge für kleine Dateispeicher.

    
TaylorMac 14.02.2014, 10:17
quelle

1 Antwort

6

Erstens würde ich base64-kodierte Daten nicht in einer Datenbank speichern, die perfekt binäre Daten speichern kann. Das ist nur Platzverschwendung. Speichern Sie das Bild selbst, nicht seine base64-Darstellung, d. H. Nicht data : "VBORw0KGgoAAAANSUhEUgAAA..." , aber data : BinData("VBORw0KGgoAAAANSUhEUgAAA...") (die erste ist eine Zeichenfolge für MongoDB, die zweite ist Binärdaten). Base64 erhöht die Größe um 33%.

Abgesehen davon denke ich, dass das in Ordnung ist. Der Kompromiss besteht aus 1 Anfrage, die alle Daten gegen mehrere Anfragen ergreift. Der Nachteil beim Speichern größerer Datenmengen ist, dass alle Daten für einen Moment im RAM gespeichert sein müssen, aber bei 1 MB ist das wahrscheinlich kein Problem.

Sie sollten jedoch sicherstellen, dass Sie das Dokument nicht in Situationen abrufen, in denen Sie das Bild nicht benötigen. 1 MB ist nicht zu viel, aber für eine lese-schwere Sammlung ist es eine Katastrophe.

    
mnemosyn 14.02.2014, 10:34
quelle

Tags und Links