Welcher Weg ist besser? Speichern Sie eine Mediendatei in MongoDB als Array von Bytes oder als Zeichenfolge?

8

Ich speichere Mediendateien (Bilder, PDFs usw.) in MongoDB als Array von Bytes. Ich sah Beispiele, in denen Leute es speicherten, indem sie das Array von Bytes zum Zeichenkette kodierten und entschlüsselten. Was ist der Unterschied? Vielleicht ein Unterschied in der Leistung? Also, welcher Weg ist besser?

Ich habe bemerkt, dass Mongo Management Studio die Sammlung länger öffnet, wenn sie als Array von Bytes gespeichert wird, wenn sie wie String

gespeichert wird     
Sergiy Sundutov 29.12.2016, 07:38
quelle

1 Antwort

2

Ich nehme an, dass Sie die Datei in einem Dokument speichern möchten. Aber haben Sie darüber nachgedacht, GridFS im Vergleich zum Speichern der Datei im Dokument zu verwenden?

Wie Liam herausfand, bietet eine MongoDB einen Blog-Post zu GridFS-Überlegungen hier

Einer der Vorteile in einem Projekt, an dem ich gerade arbeite, ist, dass keine Überprüfung der Dateigrößen vorgenommen werden muss und Sie die Datei einfach in einem binären Stream schreiben und lesen können.

Aus Performance-Sicht ist das Speichern und Abrufen der Datei in Binärform schneller als das erste Serialisieren in eine Zeichenfolge. In einem Testprogramm, das mit einer MongoDb 3.2-Datenbank ausgeführt wurde, war das Speichern einer Datei in binärer Form in einem Dokument bis zu dreimal schneller als das Speichern der Datei in einer serialisierten Zeichenfolge. Das ist verständlich, da die string-serialisierte Form einfach 'mehr Bytes' zum Speichern oder Lesen ist.

Im selben Testprogramm wurde auch ein kurzer Test gegen GridFS durchgeführt, aber da muss man wirklich eine Runde mit der Chunck-Größe spielen, um die bestmögliche Leistung zu erreichen.

Unterhalb eines Code-Dumps für ein sehr grobes Testprogramm (Beachten Sie, dass Sie das richtige example.jpg selbst angeben müssen und dass die Datenbankverbindung fest codiert wurde.)

%Vor%     
Michaël van der Haven 03.01.2017, 11:07
quelle

Tags und Links