Ich benutze mongodb und möchte einige Thumbnails in meinem Server speichern. Was ist das Beste? Verwenden Sie GridFS oder konvertieren Sie diese Bilder nach base64 und speichern Sie sie direkt in einem Dokument.Mongodb base64 image vs gridfs
Antwort
Ich empfehle Ihnen, GridFS zu verwenden. Mit GridFS können Sie den Vorteil von MongoDB REST API nutzen. Es wird also keine Überhitzung geben, um Dokumente mit der MongoDB API abzurufen. REST API wird die ganze harte Arbeit erledigen und Ihnen Zeit sparen.
Es hängt wirklich von Ihrer Server-Seite Technologie und persönlichen Vorlieben ab. 10gen schlägt vor, dass Sie Dokumente verwenden, es sei denn, Sie speichern Dateien, die größer als das Dokumentenlimit (16 MB) sind. Ich würde vorschlagen, dass Sie das tun, was Ihnen in der Sprache, mit der Sie arbeiten, leichter fällt. Wenn Sie nach dem Dokument andere Dokumente zu modellieren haben, geben Sie ansonsten gridFS eine Aufnahme.
Wie immer gibt es einige (dis) Vorteile:
Pro:
- Weniger Datenbank-Anfragen, wenn nur das Dokument + Thumbnail benötigt wird.
- Weniger Clientanforderungen. (Natürlich können Sie die Thumbnails von GridFS holen, und legen sie in der Antwort, aber das in mehr Datenbank-Anfragen führen würde)
Neutral:
- Lagerbedingungen gleich sind
Nachteile:
- Sie können die Miniatur des Miniaturbildes nicht einfach in einem anderen Dokument wiederverwenden, da keine ID vorhanden ist, auf die verwiesen werden kann. (Für uns, das ist kein Problem, weil die Server-Antworten komprimiert sind gzip und man kann wirklich den Unterschied zwischen 1 und 5 gleich Bilder nicht sagen)
Mit MongoDB und NoSQL es geht um Ihre Anwendungsfälle zu wissen !
Wenn viel von Ihrer Dokumente das gleiche Bild teilen, sollten Sie GridFS verwenden und nur auf diese Dateien Links bieten, weil 1. gemeinsamen Nutzung von Daten platzsparender und 2. der Client-Cache kann, ist die Bildanforderung und muss sie nur einmal abrufen.
Wenn Ihre Clients immer das Thumbnail benötigen, sollten Sie in Erwägung ziehen, die Dateien als base64 in die Antwort einzubetten. Dies ist besonders schön, wenn 1. Bilder nicht zwischen Dokumenten geteilt werden und/oder 2. Bilder oft ändern und Caching ist nutzlos/nicht möglich.
Base64 bedeutet natürlich mehr Verkehr auf der Leitung, weil es 8 Bits benötigt, um 6 Bits zu übertragen. d.h. 75% Effizienz. Dies betrifft natürlich nur die Client-Server-Kommunikation, da Sie Ihre Daten in MongoDB immer als Binärfeld speichern können.
Bevorzugen Sie mehr Datenbankanforderungen (= mit GridFS)? Oder größere Daten/Dokumentgröße auf dem Draht (= eingebettet)?
Was wir getan haben:
Wir Miniaturinformationen verwenden, auch wenn wir möglicherweise doppelte Bilder haben. Nach der Aktivierung der gzip-Komprimierung auf dem Server spielte die Größe der Server-Client-Übertragung keine Rolle mehr. Aber wie gesagt, es ist ein Kompromiss: Jetzt haben wir weniger Client-Anfragen und weniger Datenbank-Anfragen, aber weil die Einbettung das Zwischenspeichern der Bilder unmöglich macht, haben wir jetzt mehr Daten auf dem Draht.
Fazit:
Es gibt keine Einheitsgröße Lösung passt.
- 1. Volltextsuche auf MongoDB GridFS?
- 2. Gridfs-Nginx vs Gridfs von Tornado
- 3. Node.js Datei-Upload (Express 4, MongoDB, GridFS, GridFS-Stream)
- 4. Verteilte Dateisysteme: GridFS vs GlusterFS vs Ceph vs HekaFS Benchmarks
- 5. Konvertieren Base64-Image in rohe Binärdatei mit Node.js
- 6. Base64 Encoding Image
- 7. gwt base64 image
- 8. MySQL - Base64 vs BLOB
- 9. Abfrage auf MongoDB GridFS-Metadaten (Java)
- 10. Speichern von Bildern: MongoDb vs Dateisystem
- 11. Base64 Image Größenänderung beim Speichern
- 12. GET Daten: image/png; base64, {{image}} net :: ERR_INVALID_URL
- 13. Mongo gridfs-stream
- 14. Emotion API Projekt Oxford base64 image
- 15. Extract Image Abmessungen von Base64 String
- 16. Base64-Image mit Firebase 3 hochladen
- 17. Input type = "Datei" set base64 image data
- 18. Wie konvertiere ich ein Base64-Image?
- 19. Daten: image/gif; base64 Bilder nicht animiert
- 20. Canvas zu Base64 auf Image src
- 21. Löschen Sie mehrere Dateien in MongoDB GridFS in PHP
- 22. MongoDB GridFS Eins-zu-eins Abfrage Effizienz in Ruby
- 23. Speichern von Dateien in MongoDB GridFS mit Node.JS
- 24. Kopieren/Duplizieren von Dateien in MongoDB, GridFS und NodeJS
- 25. holen Sie ein Bild von Mongodb mit gridfs und PHP
- 26. Drop alle Dateien in gridfs mit pymongo MongoDB
- 27. Speicher von Dateien in mongodb mit gridfs und Mungo
- 28. MongoDB, Carrierwave, GridFS und Verhinderung der Duplizierung von Dateien
- 29. Django + MongoDB vs Node.js + MongoDB
- 30. Base64-Bildupload VS Binärbild-Upload?
Wie ist die endgültige Größe in K? GridFs wird nicht aufgeteilt, bis die Datei über 256k liegt. Werden Sie die endgültige Datei als Binärdatei oder base64 verwenden? – WiredPrairie