Fragmentação com intervalos
A fragmentação baseada em intervalo envolve a divisão de dados em intervalos contíguos determinados pelos valores de chave de shard. Nesse modelo, os documentos com valores de chave de shard "próximos" provavelmente estarão no mesmochunk ou shard. Isso permite queries eficientes onde se lê documentos de destino dentro de um intervalo contíguo. No entanto, o desempenho de leitura e gravação pode diminuir com uma seleção de uma chave de shard ruim. Consulte Seleção de chave de shard.
A fragmentação baseada em faixas é a metodologia de fragmentação padrão se nenhuma outra opção, como as necessárias para a fragmentação com hash ou zonas, estiver configurada.
Seleção de chave de shard
A fragmentação com intervalos é mais eficiente quando a chave de shard exibe as seguintes características:
A imagem seguinte ilustra um cluster fragmentado utilizando o campo X
como a chave de shard. Se os valores de X
tiverem um intervalo grande, baixa frequência e mudarem em uma taxa não monotônica, a distribuição de inserções poderá ser semelhante à seguinte:
Fragmentar uma Coleção
Use o método sh.shardCollection()
, especificando o namespace completo da collection e o índice de destino ou índice composto a ser usado como chave de shard.
sh.shardCollection( "database.collection", { <shard key> } )
Importante
A partir do MongoDB 5.0, você pode reestruturar uma coleção alterando a chave de fragmento de uma coleção.
Você pode refinar uma chave de fragmento adicionando um ou mais campos de sufixo à chave de fragmento existente.
Fragmentar uma collection preenchida
Se você fragmentar uma collection preenchida:
A operação de fragmentação cria a(s) parte(s) inicial(is) para cobrir todo o intervalo dos valores da chave de shard. O número de chunks criados depende do tamanho de chunk configurado.
Após a criação inicial da parte, o balanceador migra essas partes iniciais através dos shards, conforme apropriado, bem como managed a distribuição da parte daqui para frente.
Fragmentar uma collection vazia
Se você fragmentar uma collection vazia:
Sem zonas e faixas de zona especificadas para a collection vazia ou inexistente:
A operação de fragmentação cria um único chunk vazio para cobrir todo o intervalo dos valores de chave de shard.
Após a criação inicial do chunk, o balanceador migra o chunk inicial através dos shards, conforme apropriado, bem como gerencia a distribuição do chunk daqui para frente.
Com zonas e faixas de zona especificadas para collections vazias ou inexistentes:
A operação de fragmentação cria chunks vazios para as faixas de zonas definidas e chunks adicionais para cobrir toda a faixa de valores das chaves de shard e executa uma distribuição inicial de chunks com base nas faixas de zonas. A criação e distribuição inicial de chunks agiliza a configuração da fragmentação por zonas.
Após a distribuição inicial, o balancer passa a gerenciar a distribuição de chunks.
Dica
Veja também:
Para saber como distribuir um cluster fragmentado e implementar a fragmentação à distância, consulte Distribuir um cluster fragmentado autogerenciado.