MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Noções básicas sobre o limite de tamanho do documento MongoDB BSON


Em primeiro lugar, isso realmente está sendo aumentado na próxima versão para 8MB ou 16MB ... mas acho que para colocar isso em perspectiva, Eliot da 10gen (que desenvolveu o MongoDB) coloca melhor:

EDITAR: O tamanho foi oficialmente 'aumentado' para 16MB

Então, no exemplo do seu blog, 4 MB é realmente muito.

Se o seu post é tão longo com tantos comentários, eu, pelo menos, não vou lê-lo :)

Para trackbacks, se você dedicar 1 MB a eles, poderá facilmente ter mais de 10k (provavelmente mais perto de 20k)

Então, exceto em situações realmente bizarras, funcionará muito bem. E no caso de exceção ou spam, eu realmente não acho que você gostaria de um objeto de 20 MB de qualquer maneira. Acho que limitar trackbacks em 15k ou mais faz muito sentido, não importa o desempenho. Ou pelo menos uma caixa especial, se isso acontecer.

-Eliot

Eu acho que você seria muito pressionado para atingir o limite... e com o tempo, se você atualizar... você terá que se preocupar cada vez menos.

O ponto principal do limite é que você não use toda a RAM do seu servidor (já que você precisa carregar todos os MB s do documento na RAM quando você o consulta.)

Portanto, o limite é algum % de RAM utilizável normal em um sistema comum ... que continuará crescendo ano após ano.

Observação sobre como armazenar arquivos no MongoDB

Se você precisar armazenar documentos (ou arquivos) maiores que 16MB você pode usar a API GridFS, que dividirá automaticamente os dados em segmentos e os transmitirá de volta para você (evitando assim o problema com limites de tamanho/RAM).

Em vez de armazenar um arquivo em um único documento, o GridFS divide o arquivo em partes ou partes e armazena cada parte como um documento separado.

O GridFS usa duas coleções para armazenar arquivos. Uma coleção armazena os fragmentos do arquivo e a outra armazena os metadados do arquivo.

Você pode usar esse método para armazenar imagens, arquivos, vídeos, etc. no banco de dados da mesma forma que faria em um banco de dados SQL. Eu usei isso para armazenar arquivos de vídeo com vários gigabytes.