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, o 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
analyzeShardKeypara 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