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.
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.