Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

sharedCollection

Nesta página

  • Definição
  • Considerações
  • Exemplo
shardCollection

Fragmenta uma collection para distribuir seus documentos entre shards. Você deve executar enableSharding em um banco de dados antes de executar o comando shardCollection . O comando shardCollection deve ser executado no banco de dados admin .

Para executar shardCollection, utilize o método db.runCommand( { <command> } ).

Dica

Em mongosh, esse comando também pode ser executado por meio do método auxiliar sh.shardCollection().

Os métodos auxiliares são práticos para os usuários mongosh, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.

shardCollection tem o seguinte formato:

{
shardCollection: "<database>.<collection>",
key: { <field1>: <1|"hashed">, ... },
unique: <boolean>,
numInitialChunks: <integer>,
presplitHashedZones: <boolean>,
collation: { locale: "simple" }
}

shardCollection tem os seguintes campos:

Campo
Tipo
Descrição
shardCollection
string
O namespace da collection para fragmentar no formato <database>.<collection>.
key
documento

O documento que especifica o campo ou campos a serem usados como a chave de shard.

{ <field1>: <1|"hashed">, ... }

Defina os valores do campo como:

A chave de fragmento deve ser suportada por um índice. A menos que a coleção esteja vazia, o índice deve existir antes do comando shardCollection. Se a coleção estiver vazia, o MongoDB criará o índice antes de fragmentar a coleção se o índice que pode suportar a chave de fragmentação ainda não existir.

Consulte também Índices de chaves de shard

unique
booleano

Especifique true para garantir que o índice subjacente imponha uma restrição exclusiva. O padrão é false.

Você não pode especificar true ao usar hashed shard keys.

numInitialChunks
inteiro

Especifica o número inicial de chunks para criar em todos os shards no cluster ao compartilhar uma collection vazia com uma hashed shard key. Em seguida, o MongoDB cria e equilibra os chunks no cluster. numInitialChunks deve resultar em menos de 8192 por shard.

Se a collection não estiver vazia ou a chave de shard não contiver um campo hashed, a operação retornará um erro.

  • Se fragmentar com presplitHashedZones: true, o MongoDB tentará distribuir uniformemente o número especificado de partes pelas zonas do cluster.

  • Se fragmentar com presplitHashedZones: false ou omitido e não houver zona e faixa de zona para a coleção vazia, o MongoDB tentará distribuir uniformemente o número especificado de partes através dos fragmentos no cluster.

  • Se fragmentar com presplitHashedZones: false ou omitido e houver zonas e faixas de zona definidas para a coleção vazia, numInitChunks não terá efeito.

collation
documento
Opcional. Se a collection especificada para shardCollection tiver um agrupamento padrão, você precisa incluir um documento de agrupamento com { locale : "simple" }, senão o comando shardCollection falha. Pelo menos um dos índices cujos campos suportam o padrão de chave de shard deve ter o agrupamento simples.
booleano

Opcional. Especifique true para executar a criação e distribuição inicial de chunks para uma collection vazia ou inexistente com base nas zonas e faixas de zonas definidas para a collection. Apenas para fragmentação hashed .

shardCollection com presplitHashedZones: true retorna um erro se alguma das seguintes afirmações for verdadeira:

Não execute mais de um comando shardCollection na mesma coleção ao mesmo tempo.

Uma vez que uma coleção tenha sido fragmentada, o MongoDB não fornece nenhum método para desfazer a fragmentação de uma coleção fragmentada.

Embora você possa alterar sua chave de shard posteriormente, é importante considerar cuidadosamente sua escolha de chave de shard para evitar problemas de escalabilidade e desempenho.

Dica

Veja também:

As hashed shard keys com índice hashed usam um índice hashed composto como a chave de shard.

Use o formato field: "hashed" para especificar um campo de hashed shard key.

Observação

Se as migrações de chunks estiverem em andamento durante a criação de uma collection de hashed shard keys, a distribuição inicial de chunks poderá ser desigual até que o balanceador equilibre automaticamente a collection.

Dica

Veja também:

A operação de coleção de fragmentos (ou seja, o comando shardCollection e o auxiliar sh.shardCollection()) podem executar a criação e a distribuição inicial de partes para uma coleção vazia ou inexistente se as zonas e os intervalos de zonas tiverem sido definidos para a coleção. A distribuição inicial de partes permite uma configuração mais rápida do zoneamento de fragmentação. Após a distribuição inicial, o balanceador passa a gerenciar a distribuição de partes como de costume.

Consulte Predefinir zonas e faixas de zona para uma collection vazia ou não existente para ver um exemplo.Se estiver fragmentando uma collection usando uma hashed shard key de faixa ou campo único, a opção numInitialChunks não terá efeito se zonas e faixas de zonas tiverem sido definidas para a collection vazia.

Para fragmentar uma coleção usando um índice com hash composto, consulte Fragmentação por zona e índices hashed compostos.

MongoDB oferece suporte à fragmentação de coleção em índices compostos com hash. Ao fragmentar uma coleção vazia ou inexistente usando uma chave de fragmento composta com hash, aplicam-se requisitos adicionais para que o MongoDB execute a criação e a distribuição inicial da parte.

A opção numInitialChunks não tem efeito se zonas e faixas de zonas tiverem sido definidas para a coleção vazia, e preSplitHashedZones for false.

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

Se especificar unique: true:

  • Se a coleção estiver vazia, shardCollection criará o índice único na chave de fragmento se esse índice ainda não existir.

  • Se a coleção não estiver vazia, você deverá criar o índice antes de utilizar shardCollection.

Embora possa existir um índice composto exclusivo onde a chave de fragmentação é um prefixo, se você utilizar o parâmetro unique, a collection deverá ter um índice exclusivo que esteja na chave de fragmentação.

Consulte também Collection fragmentada e índices hashed.

Alterado na versão 3.4.

Se a coleção tiver um agrupamento padrão, o comando shardCollection precisa incluir um parâmetro collation com o valor { locale: "simple" }. Para coleções não vazias com um agrupamento padrão, você deve ter pelo menos um índice com o agrupamento simples cujos campos ofereçam suporte ao padrão da chave de fragmento.

Você não precisa especificar a opção collation para collections sem agrupamento. Se você especificar a opção de agrupamento para uma coleção sem agrupamento, ela não terá efeito.

O mongos usa "majority" na preocupação de gravação do comando shardCollection e seu auxiliar sh.shardCollection().

A seguinte operação habilita a fragmentação para a collection people no banco de dados de records e utiliza o campo zipcode como a chave de shard:

db.adminCommand( { shardCollection: "records.people", key: { zipcode: 1 } } )

Voltar

setAllowMigrations

Próximo

estado de fragmentação