Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Gerencias áreas de fragmentos

Nesta página

  • Adicionar fragmentos a uma zona
  • Crie um intervalo de zona
  • Remover um intervalo de zona
  • Visualizar zonas existentes

Em clusters de fragmentos, você pode criar zonas que representam um grupo de fragmentos e associar um ou mais intervalos de valores de chave de fragmentos a essa zona. O MongoDB roteia leituras e gravações que se enquadram em um intervalo de zona apenas para os fragmentos dentro da zona.

Dica

Ao definir as zonas e as faixas de zonas antes de fragmentar uma collection vazia ou não existente, a operação de collection de shards cria chunks para as faixas de zonas definidas, bem como quaisquer chunks adicionais para cobrir todo a faixa dos valores da chave de shard e executa uma distribuição inicial de shards com base nas faixas de zonas. 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 gerenciará a distribuição de chunks dali para a frente.

Consulte Predefinir zonas e faixas de zona para uma collection vazia ou não existente para ver um exemplo.

Associar uma zona com um fragmento específico utilizando o método sh.addShardToZone() quando conectado a uma instância do mongos. Um único fragmento pode ter múltiplas zonas, e vários fragmentos também podem ter a mesma zona.

Exemplo

O exemplo a seguir adiciona a zona NYC a dois fragmentos e as zonas SFO e NRT a um terceiro fragmento:

sh.addShardToZone("shard0000", "NYC")
sh.addShardToZone("shard0001", "NYC")
sh.addShardToZone("shard0002", "SFO")
sh.addShardToZone("shard0002", "NRT")

Você pode remover a zona de um fragmento específico utilizando o método sh.removeShardFromZone() quando conectado a uma instância do mongos, como no exemplo seguinte, que remove a zona do NRT de um fragmento:

sh.removeShardFromZone("shard0002", "NRT")

Para definir a faixa de chaves de shard da zona, use o método sh.updateZoneKeyRange() quando conectado a uma instância do mongos. As faixas de chaves de shard só podem ter uma zona atribuída. Não é possível sobrepor as faixas definidas.

Exemplo

Dada uma collection chamada users no banco de dados de records, fragmentada pelo campo zipcode. As seguintes operações atribuem:

  • dois intervalos de códigos postais em Manhattan e Brooklyn na zona NYC

  • um intervalo de códigos postais em São Francisco, na zona SFO

sh.updateZoneKeyRange("records.users", { zipcode: "10001" }, { zipcode: "10281" }, "NYC")
sh.updateZoneKeyRange("records.users", { zipcode: "11201" }, { zipcode: "11240" }, "NYC")
sh.updateZoneKeyRange("records.users", { zipcode: "94102" }, { zipcode: "94135" }, "SFO")

Observação

  • As faixas de zona estão sempre inclusas no limite inferior e exclusivas do limite superior.

  • A eliminação de uma coleção exclui seus intervalos de zonas/tags associados.

Use o método do ajudante de shell sh.removeRangeFromZone() para remover uma faixa de uma zona.

Exemplo

O exemplo a seguir remove a atribuição de NYC zonas para o intervalo de códigos postais em Manhattan:

sh.removeRangeFromZone("records.user", {zipcode: "10001"}, {zipcode: "10281"})

Observação

A eliminação de uma coleção exclui seus intervalos de zonas/tags associados.

Use sh.status() para listar as zonas associadas a cada fragmento no cluster. Você também pode ver uma zona de shards consultando a collection shards no banco de dados de config.

O exemplo a seguir utiliza o método find() para retornar todos os shards com a zona NYC.

use config
db.shards.find({ tags: "NYC" })

Você pode encontrar intervalos de zone para todos namespace na coleção tags do config banco de dados database. A saída de sh.status() também exibe todos os intervalos de zona.

O exemplo seguinte utiliza o método find() para retornar qualquer intervalo associado à zona NYC.

use config
db.tags.find({ tag: "NYC" })
← Zonas