Para agentes de IA: um Ă­ndice de documentação estĂĄ disponĂ­vel em https://www.mongodb.com/pt-br/docs/llms.txt — as versĂ”es de markdown de todas as pĂĄginas estĂŁo disponĂ­veis anexando .md a qualquer caminho de URL.
Menu Docs

Reduzir o tamanho de documentos grandes

Armazenar documentos grandes em seu banco de dados pode levar ao uso excessivo de RAM e largura de banda. O MongoDB mantĂ©m os dados acessados com frequĂȘncia, conhecidos como o conjunto de trabalho, na RAM. Quando o conjunto de trabalho cresce alĂ©m da alocação de RAM, o desempenho Ă© degradado, pois os dados devem ser recuperados do disco.

Se suas consultas mais frequentes forem para documentos que contĂȘm muito mais informaçÔes do que vocĂȘ precisa para essa consulta, considere reestruturar seu esquema com documentos menores usando referĂȘncias a coleçÔes adicionais. Ao dividir seus dados em mais coleçÔes e usar documentos menores para dados acessados com frequĂȘncia, vocĂȘ reduz o tamanho geral do conjunto de trabalho e melhora o desempenho.

Observação

Sua configuração de hardware pode afetar o tamanho dos documentos que seu sistema pode suportar. O limite de Tamanho do documento BSON é 16 megabytes.

Considere um website de catålogo de filmes que exiba uma lista dos 50 títulos de filmes lançados mais recentemente e suas imagens de pÎster na pågina inicial. Na pågina inicial, um usuårio pode clicar em um filme para ver mais detalhes.

O site armazena informaçÔes sobre filmes em uma coleção movies . Cada documento de filme contém todas as informaçÔes disponíveis para esse filme:

// movies collection
{
"_id": 123,
"title": "2001: A Space Odyssey",
"poster": <url>,
"director": "Stanley Kubrick",
"release_year": 1968,
"box_office_usd": 146000000,
"countries_released": [
"United States",
...
],
"cast": [
"Keir Dullea",
...
],
"crew": [
"Ray Lovejoy",
...
],
...
}

Observação

Sempre que possĂ­vel, vocĂȘ deve hospedar imagens fora da implantação do MongoDB e referenciĂĄ-las com URLs. Se vocĂȘ armazenar imagens em seu banco de dados, terĂĄ muito mais chances de atingir o limite de tamanho do documento.

Neste exemplo, a query mais frequente que o website realiza é encontrar title e poster dos 50 filmes mais recentes. Em vez de realizar queries de todas as informaçÔes do filme, considere dividir a collection movie em duas collections separadas, movies e movie_metadata. As collections estão vinculadas ao _id dos documentos de movie:

// movies collection
{
"_id": 123,
"title": "2001: A Space Odyssey",
"poster": <url>
}
// movie_metadata collection
{
"_id": <object_id>,
"movie_id": 123, // reference to a movies document
"director": "Stanley Kubrick",
"release_year": 1968,
"box_office_usd": 146000000,
"countries_released": [
"United States",
...
],
"cast": [
"Keir Dullea",
...
],
"crew": [
"Ray Lovejoy",
...
],
...
}

Dessa forma, quando o website realiza a query dos 50 filmes mais recentes e seus pÎsteres, carrega apenas as informaçÔes de que necessita. Se um usuårio clicar em um filme, o site realizarå outra query para localizar o documento movie_metadata associado a esse filme. Esse novo esquema tem melhor desempenho que o original porque a query mais frequente retorna documentos muito menores.

Considere seu caso de uso, especialmente as operaçÔes que vocĂȘ executa com mais frequĂȘncia, e crie um esquema que use com eficiĂȘncia seu conjunto de trabalho.

Para ler sobre estratégias para manter documentos em seu conjunto de trabalho em um tamanho gerenciåvel, consulte os seguintes padrÔes:

Para saber como incorporar o modelo de dados flexível em seu esquema, consulte as seguintes apresentaçÔes em MongoDB.live 2020: