MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Größenbeschränkung für MongoDB-BSON-Dokumente verstehen

Zunächst einmal wird dies in der nächsten Version tatsächlich auf 8MB angehoben oder 16MB ... aber ich denke, um dies ins rechte Licht zu rücken, bringt es Eliot von 10gen (der MongoDB entwickelt hat) am besten auf den Punkt:

BEARBEITEN: Die Größe wurde offiziell auf 16MB "angehoben".

Also, in Ihrem Blog-Beispiel sind 4 MB tatsächlich eine ganze Menge. Zum Beispiel ist der vollständige unkomprimierte Text von „Krieg der Welten“ nur 364 KB (html):http://www.gutenberg.org/etext/36

Wenn dein Blogbeitrag so lang ist und so viele Kommentare enthält, werde ich ihn nicht lesen :)

Wenn Sie Trackbacks 1 MB widmen, könnten Sie leicht mehr als 10.000 (wahrscheinlich näher an 20.000) haben.

Abgesehen von wirklich bizarren Situationen wird es also großartig funktionieren. Und im Ausnahmefall oder Spam glaube ich wirklich nicht, dass Sie sowieso ein 20-MB-Objekt wollen. Ich denke, dass es sehr sinnvoll ist, Trackbacks auf etwa 15.000 zu begrenzen, egal was für die Leistung. Oder zumindest ein spezielles Gehäuse, falls es jemals passiert.

-Eliot

Ich denke, es wird Ihnen ziemlich schwer fallen, das Limit zu erreichen ... und mit der Zeit, wenn Sie ein Upgrade durchführen ... müssen Sie sich immer weniger Sorgen machen.

Der Hauptpunkt des Limits besteht darin, dass Sie nicht den gesamten RAM auf Ihrem Server verbrauchen (da Sie alle MB laden müssen s des Dokuments in den Arbeitsspeicher, wenn Sie es abfragen.)

Die Grenze liegt also bei einigen % des normal nutzbaren RAM auf einem gewöhnlichen System ... der Jahr für Jahr weiter wachsen wird.

Hinweis zum Speichern von Dateien in MongoDB

Wenn Sie Dokumente (oder Dateien) speichern müssen, die größer als 16MB sind Sie können die GridFS-API verwenden, die die Daten automatisch in Segmente aufteilt und sie an Sie zurückstreamt (wodurch das Problem mit Größenbeschränkungen/RAM vermieden wird).

Anstatt eine Datei in einem einzigen Dokument zu speichern, teilt GridFS die Datei in Teile oder Chunks und speichert jeden Chunk als separates Dokument.

GridFS verwendet zwei Sammlungen zum Speichern von Dateien. Eine Sammlung speichert die Dateiblöcke und die andere Dateimetadaten.

Sie können diese Methode verwenden, um Bilder, Dateien, Videos usw. in der Datenbank ähnlich wie in einer SQL-Datenbank zu speichern. Ich habe dies verwendet, um sogar Multi-Gigabyte-Videodateien zu speichern.