sql >> Base de Datos >  >> NoSQL >> MongoDB

Comprender el límite de tamaño del documento MongoDB BSON

En primer lugar, esto en realidad se eleva en la próxima versión a 8MB o 16MB ... pero creo que para poner esto en perspectiva, Eliot de 10gen (quien desarrolló MongoDB) lo expresa mejor:

EDITAR: El tamaño se ha 'aumentado' oficialmente a 16MB

Por lo tanto, en el ejemplo de su blog, 4 MB es en realidad mucho... Por ejemplo, el texto completo sin comprimir de "La guerra de los mundos" es solo 364k (html):http://www.gutenberg.org/etext/36

Si la entrada de tu blog es tan larga y tiene tantos comentarios, yo no voy a leerla :)

En el caso de los trackbacks, si les dedica 1 MB, fácilmente podría tener más de 10 000 (probablemente más cerca de 20 000)

Entonces, a excepción de situaciones realmente extrañas, funcionará muy bien. Y en el caso de excepción o spam, realmente no creo que quieras un objeto de 20 mb de todos modos. Creo que limitar los trackbacks a 15k o más tiene mucho sentido, sin importar el rendimiento. O al menos una carcasa especial si alguna vez sucede.

-Eliot

Creo que sería muy difícil alcanzar el límite... y con el tiempo, si actualizas... tendrás que preocuparte cada vez menos.

El punto principal del límite es que no use toda la RAM en su servidor (ya que necesita cargar todos los MB s del documento en RAM cuando lo consulta).

Por lo tanto, el límite es un % de RAM utilizable normal en un sistema común... que seguirá creciendo año tras año.

Nota sobre el almacenamiento de archivos en MongoDB

Si necesita almacenar documentos (o archivos) de más de 16MB puede usar la API de GridFS, que dividirá automáticamente los datos en segmentos y se los devolverá (evitando así el problema con los límites de tamaño/RAM).

En lugar de almacenar un archivo en un solo documento, GridFS divide el archivo en partes o fragmentos y almacena cada fragmento como un documento separado.

GridFS usa dos colecciones para almacenar archivos. Una colección almacena los fragmentos de archivos y la otra almacena metadatos de archivos.

Puede usar este método para almacenar imágenes, archivos, videos, etc. en la base de datos como lo haría en una base de datos SQL. He usado esto incluso para almacenar archivos de video de varios gigabytes.