MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB $ slice (impaginazione di array incorporata)

Quindi dirò che dovresti cambiare il tuo schema per lasciare commenti come documenti separati poiché si tratta di un array non associato e renderà le tue query più efficienti. Te lo spiego io.

Quando aggiungi documenti incorporati a un array che non è una dimensione fissa, mongoDB avrà potenzialmente bisogno di spostare il documento man mano che cresce, cambiando il fattore di riempimento e causando la frammentazione (il fattore di riempimento è un'ipotesi dal lato di mongodb su quanto sarà grande il tuo documento crescere, prealloca più spazio per quel caso).

Sei anche limitato a 16 MB di documento pr, quindi immagina che se ottieni un thread follemente popolare o decidi di estendere i commenti con altri metadati, è possibile che tu rompa quella barriera. Anche il recupero di un documento di grandi dimensioni è costoso e richiede tempo.

In generale, i documenti incorporati sono ottimi se non sono array non associati. Quindi tenere un elenco dei primi 10 commenti funzionerà alla grande, ma mantenere più di 1000 commenti è negativo.

Ci sono alcune buone presentazioni sotto

http://www.10gen.com/presentations /mongodb-berlin/2012/10-indicatori-chiave-di-prestazioni http://www.10gen.com/presentations/mongosv -2011/schema-design-by-example

Penso che presto ci sarà altro lavoro sulla progettazione dello schema che sarà più utile a lungo termine. Penso che sia la parte più difficile ad essere onesti. Lo so, mi ci è voluto un po' per capire le differenze rispetto ai modelli relazionali.