A fragmentação de uma collection distribui seus documentos em vários shards em seu cluster MongoDB . O MongoDB usa sua chave de shard especificada para determinar com precisão onde cada documento pertence. A escolha de uma chave de shard eficaz é fundamental, garantindo a distribuição uniforme de dados e o balanceamento de volume de trabalho em todos os shards disponíveis. Essa abordagem se torna essencial quando as collections ficam muito grandes para um único shard lidar com eficiência. Uma vez fragmentado, o MongoDB distribui automaticamente a coleção em todos os fragmentos disponíveis de acordo com sua estratégia de fragmentação escolhida.
Quando considerar a fragmentação
Você deve considerar a fragmentação de uma collection ao se aproximar de determinados limites de recursos ou de desempenho.
Alta utilização de recursos
Se o conjunto de trabalho de uma collection couber na RAM, o MongoDB atenderá consultas da memória, que fornece os tempos de resposta de consulta mais rápidos. Quando o conjunto de trabalho cresce além da memória disponível, as latências de consulta aumentam devido ao maior acesso ao disco. A fragmentação de uma collection melhora o desempenho da query ao distribuir os dados em vários shards, em que cada shard mantém seus próprios índices de dados.
Tamanho de dados grande
Se sua coleção contiver 3TB de dados ou mais, considere fragmentá-las para otimizar o desempenho.
Opções de distribuição
Ao fragmentar uma collection no MongoDB, você pode escolher entre as seguintes opções de distribuição:
Opção | Descrição |
---|---|
A fragmentação à distância usa um ou mais campos de documento para determinar a colocação dos dados. Dados com valores de chave de shard semelhantes são armazenados no mesmo shard, otimizando queries baseadas em intervalo. Essa abordagem funciona melhor quando seus padrões de acesso incluem operações de faixa. | |
A fragmentação por hash calcula um valor de hash do seu campo especificado e distribui dados aleatoriamente entre os fragmentos. Embora útil para a escalabilidade de escrita, essa abordagem pode impacto o desempenho das queries baseadas em intervalo, uma vez que dados logicamente adjacentes podem residir em shards diferentes. | |
A fragmentação por zona distribui coleções em um subconjunto específico de fragmentos, em vez de todo o cluster. Essa abordagem é ideal quando as collections excedem a capacidade de um único shard, mas exigem posicionamento estratégico – seja pela proximidade geográfica dos usuários, pela otimização de padrões de acesso distintos com hardware especializado ou pela manutenção da conformidade normativa por meio do controle da localização dos dados. |
Comportamento
Ao fragmentar uma coleção, você deve:
Escolha uma chave de fragmento. Utilize o comando de banco de dados
analyzeShardKey
para facilitar esta escolha.Selecione um método de fragmentação:
Balanceador de cluster fragmentado para migração automática de dados
Refragmentação a fragmentação para redistribuição completa