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

Comprensione del limite di dimensione del documento BSON MongoDB

Prima di tutto, questo verrà effettivamente aumentato nella prossima versione a 8MB o 16MB ... ma penso che per mettere questo in prospettiva, Eliot di 10gen (che ha sviluppato MongoDB) lo mette meglio:

MODIFICA: La dimensione è stata ufficialmente "aumentata" a 16MB

Quindi, nell'esempio del tuo blog, 4 MB sono davvero tanti.. Ad esempio, il testo completo non compresso di "War of the Worlds" è solo 364k (html):http://www.gutenberg.org/etext/36

Se il tuo post sul blog è così lungo con così tanti commenti, io per primo non lo leggerò :)

Per i trackback, se dedichi loro 1 MB, potresti facilmente averne più di 10k (probabilmente più vicino a 20k)

Quindi, fatta eccezione per le situazioni veramente bizzarre, funzionerà alla grande. E nel caso eccezionale o nello spam, non credo che tu voglia comunque un oggetto da 20 MB. Penso che limitare i trackback a 15k o giù di lì abbia molto senso, indipendentemente dalle prestazioni. O almeno un involucro speciale se mai dovesse succedere.

-Elio

Penso che sarebbe piuttosto difficile raggiungere il limite... e nel tempo, se aggiorni... dovrai preoccuparti sempre meno.

Il punto principale del limite è di non utilizzare tutta la RAM del server (poiché è necessario caricare tutti i MB s del documento nella RAM quando lo si interroga.)

Quindi il limite è una certa % della normale RAM utilizzabile su un sistema comune... che continuerà a crescere anno dopo anno.

Nota sull'archiviazione di file in MongoDB

Se devi archiviare documenti (o file) di dimensioni superiori a 16MB puoi utilizzare l'API GridFS che suddividerà automaticamente i dati in segmenti e te li ritrasmetterà (evitando così il problema con i limiti di dimensione/RAM).

Invece di archiviare un file in un unico documento, GridFS divide il file in parti, o blocchi, e memorizza ogni blocco come documento separato.

GridFS utilizza due raccolte per archiviare i file. Una raccolta archivia i blocchi di file e l'altra memorizza i metadati di file.

Puoi utilizzare questo metodo per archiviare immagini, file, video, ecc. nel database proprio come potresti fare in un database SQL. L'ho usato per archiviare anche file video da più gigabyte.