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

MongoDB $slice (eingebettetes Array-Paging)

Ich werde also sagen, dass Sie Ihr Schema ändern sollten, um Kommentare als separate Dokumente zu hinterlassen, da dies ein ungebundenes Array ist und Ihre Abfragen effizienter werden. Ich werde es erklären.

Wenn Sie eingebettete Dokumente zu einem Array hinzufügen, das keine feste Größe hat, muss mongoDB möglicherweise das Dokument verschieben, wenn es wächst, wodurch der Füllfaktor geändert und eine Fragmentierung verursacht wird (der Füllfaktor ist eine Schätzung von Mongodbs Seite darüber, wie groß Ihr Dokument wird wachsen, weist es mehr Platz für diesen Fall vor).

Sie sind auch auf 16 MB pro Dokument beschränkt. Stellen Sie sich also vor, wenn Sie einen verrückten beliebten Thread erhalten oder sich entscheiden, Kommentare mit anderen Metadaten zu erweitern, ist es möglich, dass Sie diese Barriere durchbrechen. Das Abrufen eines großen Dokuments ist außerdem teuer und zeitaufwändig.

Im Allgemeinen sind eingebettete Dokumente großartig, wenn sie keine ungebundenen Arrays sind. Eine Liste der Top-10-Kommentare zu führen wird also großartig funktionieren, aber mehr als 1000 Kommentare zu führen ist schlecht.

Es gibt einige gute Präsentationen unter

http://www.10gen.com/presentations /mongodb-berlin/2012/10-kennzahlen http://www.10gen.com/presentations/mongosv -2011/schema-design-by-example

Ich denke, es wird bald mehr Arbeit zum Schema-Design geben, die langfristig hilfreicher sein wird. Ich denke, es ist das Schwierigste, um ehrlich zu sein. Ich weiß, es hat eine Weile gedauert, bis ich die Unterschiede zu relationalen Modellen verstanden habe.