Range-based sharding involves dividing data into contiguous ranges determined by the shard key values. In this model, documents with "close" shard key values are likely to be in the same chunk or shard. This allows for efficient queries where reads target documents within a contiguous range. However, both read and write performance may decrease with poor shard key selection. See Shard Key Selection.
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 fragmentada. 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, apenas um chunk será criado inicialmente. O balancer então migra as faixas desse chunk, se necessário, de acordo com a faixa de intervalo configurada.
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
Para saber como distribuir um cluster fragmentado e implementar a fragmentação à distância, consulte Distribuir um cluster fragmentado autogerenciado.