Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

Partição de dados com blocos

O MongoDB usa a chave de fragmento associada à coleção para particionar os dados em partes pertencentes a um fragmento específico. Uma parte consiste em uma faixa de dados fragmentados. Cada parte tem limites inferiores inclusivos e superiores exclusivos com base na chave de fragmento.

Diagrama do espaço de valor da chave de fragmentação segmentado em intervalos ou blocos.

A menor unidade de dados que um bloco pode representar é um único valor de chave de fragmento único.

  • A operação de fragmentação cria um bloco inicial grande para cobrir todos os valores chave de fragmento.

  • Após a criação do bloco inicial, o balanceador move intervalos para fora do bloco inicial quando precisa iniciar o balanceamento de dados.

  • Se você tiver zonas e faixas de zona definidas para uma collection vazia ou não existente.

    • A operação de fragmentação cria chunks vazios para as faixas de zona 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 zona . Essa criação e distribuição inicial de chunks permite uma configuração mais rápida da fragmentação por zonas.

    • Após a distribuição inicial, o balancer passa a gerenciar a distribuição de chunks.

  • Se você não tiver zonas e intervalos de zonas definidos para uma collection vazia ou inexistente:

    • Para fragmentação com hash:

      • A operação de fragmentação cria partes vazios para cobrir toda a faixa de valores da chave de fragmento e executa uma distribuição inicial de partes. Por padrão, a operação cria dois partes por fragmento e migra pelo cluster.

      • Após a distribuição inicial, o balancer passa a gerenciar a distribuição de chunks.

    • Para fragmentação à distância:

      • 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 e gerencia a distribuição do chunk daqui para frente.

Dica

O tamanho do intervalo padrão no MongoDB é 128 megabytes. Você pode aumentar ou reduzir o tamanho do bloco. Considere as implicações de alterar o tamanho padrão do bloco:

  1. Pequenas faixas levam a uma distribuição mais uniforme de dados às custas de migrações mais frequentes, o que adiciona sobrecarga na camada de roteamento de query ( ).mongos

  2. Grandes intervalos levam a menos migrações, reduzindo a rede e a sobrecarga interna na camada de roteamento de query, mas podem resultar em uma distribuição desigual de dados.

  3. O tamanho do intervalo afeta o número máximo de documentos por intervalo a serem migrados.

Para a maioria dos sistemas, uma distribuição de dados ligeiramente desigual é preferível a migrações frequentes.

O MongoDB migra intervalos de dados em um cluster fragmentado para distribuir os dados de uma coleção fragmentada uniformemente entre os fragmentos. As migrações podem ser:

  • Manual. Utilize a migração manual apenas em casos limitados, como para distribuir dados durante inserções em massa. Consulte Migrando Blocos Manualmente para obter mais detalhes.

  • Automático. O processo do balanceador migra automaticamente os dados quando há uma distribuição desigual dos dados de uma coleção fragmentada entre os fragmentos. Consulte Limites de Migração para obter mais detalhes.

Para obter mais informações sobre o balanceador de cluster fragmentado, consulte Balanceador de cluster fragmentado.

O balanceador é um processo em segundo plano que gerencia migrações de dados. Se o desequilíbrio de dados entre o maior e o menor fragmento exceder os limites de migração, o balanceador começará a migrar dados pelo cluster.

Diagrama de uma coleção distribuído em três fragmentos. Para esta coleção, a diferença no número de blocos entre os fragmentos atinge os *limites de migração* (neste caso, 2) e aciona a migração.

Você pode gerenciar certos aspectos do balanceador. O balanceador também respeita quaisquer zonas criadas como parte da configuração de zonas em um cluster fragmentado.

Consulte Balanceador de Cluster Fragmentado para obter mais informações sobre o balanceador.

Ao executar o método sh.shardCollection(), o balanceador começa a distribuir os dados da coleção para outros fragmentos no cluster. Um único fragmento só pode participar de uma migração de parte por vez. Quando o MongoDB consegue copiar uma faixa de dados de um fragmento para outro, a faixa no fragmento do doador é marcada para remoção pelo excluidor da faixa. Este processo é lento e consome muitos recursos.

A partir do MongoDB 8.0, se a sua implantação atender aos requisitos de recursos, é recomendado que você utilize o método sh.shardAndDistributeCollection() para fazer o fragmento da coleção. Este método envolve os comandos shardCollection e reshardCollection para criar fragmentos na coleção e recriá-los imediatamente na mesma chave. Isso faz com que o MongoDB reequilibrar os dados entre os fragmentos sem esperar no balanceador.

Para obter mais informações, consulte Refragmentar com a mesma chave de fragmento.

Os chunks que crescem além do tamanho de bloco especificado, mas não podem ser divisão são chamados de chunks jumbo. A causa mais comum é quando um chunk representa um valor chave de shard único. Os chunks jumbo podem se tornar um gargalo de desempenho, especialmente se o valor da chave de shard ocorrer com alta frequência.

A partir do MongoDB 5.0, você pode fazer o reshard de uma collection alterando a chave de shard de um document.

O refineCollectionShardKey comando permite uma distribuição de dados mais refinada e pode resolver jumbo chunks causados por cardinalidade insuficiente da chave de shard.

Para saber se você deve reestruturar sua collection ou refinar sua chave de shard, consulte Alterar uma chave de shard.

Para mais informações, veja:

Voltar

Fragmentação com intervalos

Receber um selo de habilidade

Mestre "estratégias de fragmentação" de grátis!

Saiba mais

Nesta página