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" provavelmenteestarão no mesmo chunk 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.