MongoDB Gridfs sagt der große Vorteil ist, dass große Datei in Stücke aufgeteilt, und dann müssen Sie nicht die gesamte Datei in den Speicher laden, wenn Sie nur einen Teil der Datei sehen wollen. Aber meine Verwirrung ist, dass, obwohl ich eine große Datei von der lokalen Festplatte öffne, ich einfach skip() API verwenden kann, um nur einen Teil der Datei zu laden, die ich wollte. Ich muss nicht die gesamte Datei laden. Wie kommt es, dass MongoDB sagt, dass das der Vorteil ist?verwirrt über den Vorteil von MongoDB Gridfs
Antwort
Auch wenn die Methode cursor.skip() nicht die gesamte Datei zurückgibt, muss sie in den Speicher geladen werden. Es erfordert, dass der Server vom Anfang der Auflistung oder des Index ausgeht, um die Position "Offset" oder "Skip" zu erhalten, bevor mit der Rückgabe der Ergebnisse begonnen wird (wirkt sich nicht sehr auf die Größe der Sammlung aus). Mit zunehmendem Offset wird cursor.skip() langsamer und CPU-intensiver. Bei größeren Sammlungen kann cursor.skip() IO gebunden werden.
Anstatt jedoch eine Datei in einem einzelnen Dokument zu speichern, teilt GridFS die Datei in Teile oder Chunks auf und speichert jeden Chunk als separates Dokument. So ermöglicht der Benutzer den Zugriff auf Informationen aus beliebigen Abschnitten von Dateien, z. B. "überspringen" in der Mitte der Datei (mit ID oder Dateiname) ohne CPU-intensiv.
Offizielle Dokumentationen: 1. Skip 2. GridFS.
Update:
Worüber Peter Brittain vorschlägt:
Es gibt viele Dinge zu berücksichtigen (Infrastruktur, vorausgesetzt Nutzungsstatistiken, die Dateigröße etc.), während man zwischen Dateisystem und GridFS wählen.
Zum Beispiel: Wenn Sie Millionen von Dateien haben, GridFS zu Griff neigt es besser, auch müssen Sie die Dateisystemeinschränkungen wie die maximale Anzahl von Dateien/Verzeichnis usw.
Vielleicht möchten Sie prüfen, betrachten Durch diesen Artikel gehen: Why use GridFS over ordinary Filesystem Storage?
- 1. Volltextsuche auf MongoDB GridFS?
- 2. MongoDB GridFS Metadaten ersetzen/aktualisieren
- 3. Node.js Datei-Upload (Express 4, MongoDB, GridFS, GridFS-Stream)
- 4. Mongodb base64 image vs gridfs
- 5. Verwirrt über Frustum Culling
- 6. Abfrage auf MongoDB GridFS-Metadaten (Java)
- 7. Handhabung Datei in mongodb mit gridfs
- 8. Vorteil von $ PATH über Alias
- 9. Migrieren von Binärdateien Daten aus SQL Server zu MongoDB GridFS
- 10. Verwirrt über Rückkehr von Referenz
- 11. verwirrt über, von wo aus
- 12. Angular-Controller: verwirrt über den ‚$ scope‘ Parameter
- 13. Speichern von Dateien in MongoDB GridFS mit Node.JS
- 14. Gridfs-Nginx vs Gridfs von Tornado
- 15. Puffer von express mit GridFS in MongoDB speichern
- 16. holen Sie ein Bild von Mongodb mit gridfs und PHP
- 17. Speicher von Dateien in mongodb mit gridfs und Mungo
- 18. Verwirrt über Perls Entities.pm
- 19. Verwirrt über Nebenwirkungen/ContinueAfter
- 20. Kopieren/Duplizieren von Dateien in MongoDB, GridFS und NodeJS
- 21. MongoDB, Carrierwave, GridFS und Verhinderung der Duplizierung von Dateien
- 22. ReactiveUI - Verwirrt über
- 23. Ich bin ein bisschen verwirrt was Vorteil .each() hat
- 24. Welchen Vorteil hat die Verwendung von Annotationen über den Schnittstellentyp?
- 25. Verwirrt über Docker Preispolitik
- 26. Verwirrt über monotone Heuristiken
- 27. Verwirrt über drei Optimierungstechniken
- 28. Verwirrt Über Karte Updates
- 29. Verwirrt über den Aufbau einer Iso von einer anderen Iso
- 30. Verwirrt über global.asax?
Dies erklärt, warum Sie GridFS anstelle eines normalen BinData-Objekts verwenden möchten. Die Frage ist jedoch, warum GridFS besser ist als die lokale Festplatte. Insbesondere glaube ich nicht, dass es sich hier um einen Cursorsprung handelt, sondern eher [fseek] (http://man7.org/linux/man-pages/man3/fseek.3.html) oder gleichwertig ... –
Antwort warum oder besser unter welchen Bedingungen GridFS ist besser als die lokale Festplatte. – DeGe