Reduza o número de collections
Nesta página
Criar muitas collections pode diminuir o desempenho. Com cada coleta, o MongoDB cria um índice _id padrão, que utiliza armazenamento adicional. Se você criar collections em excesso, essas collections e índices podem sobrecarregar os recursos do conjunto de réplicas e diminuir o desempenho.
Sobre esta tarefa
Considere o seguinte esquema que armazena leituras diárias de temperatura que são feitas a cada hora. O banco de banco de dados do temperature
armazena as leituras de cada dia em coleções separadas.
// Temperatures for May 10, 2024 { _id: 1, timestamp: "2024-05-10T010:00:00Z", temperature: 60 }, { _id: 2 timestamp: "2024-05-10T011:00:00Z", temperature: 61 }, { _id: 3 timestamp: "2024-05-10T012:00:00Z", temperature: 64 } ...
// Temperatures for May 11, 2024 { _id: 1, timestamp: "2024-05-11T010:00:00Z", temperature: 68 }, { _id: 2 timestamp: "2024-05-11T011:00:00Z", temperature: 72 }, { _id: 3 timestamp: "2024-05-11T012:00:00Z", temperature: 72 } ...
Com um número ilimitado de collections, o número de índices _id
padrão pode crescer para degradar o desempenho.
Além disso, essa abordagem requer uma operação $lookup
para fazer query em várias collections. As operações $lookup
adicionam complexidade às queries e podem sobrecarregar recursos.
Para reduzir o número de collections, descarte ou arquive collections não utilizadas ou remodele seu esquema de dados consolidando collections relacionadas, desnormalizando dados ou aproveitando documentos incorporados quando apropriado.
Exemplo
Você pode modificar o esquema para armazenar as leituras de temperatura de cada dia em uma única coleção. Por exemplo:
db.dailyTemperatures.insertMany( [ { _id: ISODate("2024-05-10T00:00:00Z"), readings: [ { timestamp: "2024-05-10T10:00:00Z", temperature: 60 }, { timestamp: "2024-05-10T11:00:00Z", temperature: 61 }, { timestamp: "2024-05-10T12:00:00Z", temperature: 64 } ] }, { _id: ISODate("2024-05-11T00:00:00Z"), readings: [ { timestamp: "2024-05-11T10:00:00Z", temperature: 68 }, { timestamp: "2024-05-11T11:00:00Z", temperature: 72 }, { timestamp: "2024-05-11T12:00:00Z", temperature: 72 } ] } ] )
O esquema atualizado requer menos recursos do que o original. Em vez de precisar de um índice separado para cada dia, o índice _id
padrão agora facilita as queries por data.