Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

Índices de chave de fragmentação

As coleções fragmentadas exigem um índice que ofereça suporte à chave de fragmento. O índice pode ser um índice na chave de fragmentação ou um índice composto , onde a chave de fragmentação é um prefixo do índice.

Você não pode descartar ou ocultar um índice se ele for o único índice não oculto compatível com a chave de fragmentação.

A partir do MongoDB 7.0.3, 6.0.12 e 5.0.22, você pode descartar o índice de uma chave de fragmento com hash. Para obter mais informações, consulte Descartar um índice de chave de fragmento com hash.

O MongoDB pode forçar uma restrição de exclusividade em um índice de chave de fragmento à distância. O uso de um índice único na chave de fragmento força a exclusividade em toda a combinação da chave, e não em componentes individuais da chave de fragmento.

Para uma coleção fragmentada variada, somente os seguintes índices podem ser exclusivos:

  • o índice na chave de fragmentação

  • um índice composto onde a chave de fragmentação é um prefixo

  • O _id índice padrão; no entanto, o _id índice só impõe a restrição de exclusividade por fragmento se o _id campo não for a chave de fragmento.

Importante

Os clusters fragmentados não impõem a restrição de exclusividade em campos _id no cluster quando o campo _id não é a chave de fragmento.

Se o campo _id não for a chave de fragmento, a restrição de exclusividade se aplicará somente ao fragmento que armazena o documento. Isso significa que dois ou mais documentos podem ter o mesmo valor de _id, desde que ocorram em fragmentos diferentes.

Por exemplo, considere uma coleção fragmentada com chave de fragmento {x: 1} que abranja dois fragmentos A e B. Como a chave _id não é a chave de fragmento, a coleção pode ter um documento com o valor _id 1 no fragmento A e outro documento com valor _id 1 no fragmento B.

Nos casos em que o campo _id não é a chave de fragmento, o MongoDB espera que os aplicativos garantam a exclusividade dos valores _id nos fragmentos, por exemplo, usando um identificador exclusivo para preencher o campo _id.

As restrições de índice único significam que:

  • Para uma collection que será fragmentada, você não poderá fragmentar a collection se a collection tiver vários índices únicos, a menos que a chave de shard seja o prefixo de todos os índices únicos.

  • Para uma collection já fragmentada, não é possível criar índices únicos em outros campos, a menos que a chave de shard seja incluída como prefixo.

  • Um índice exclusivo armazena um valor nulo de um documento que não tem o campo indexado; ou seja, um campo com índice não preenchido é tratado como outra instância de um valor null para a chave de índice. Para obter mais informações, consulte Campo de documento ausente em um índice exclusivo de campo único.

Para impor singularidade nos valores de chave de fragmentação, passe o parâmetro unique como true para o método sh.shardCollection():

  • Se a collection estiver vazia, sh.shardCollection() cria o índice exclusivo na chave de fragmentação se tal índice ainda não existir.

  • Se a collection não estiver vazia, é necessário criar o índice antes de usar sh.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.

Você não pode especificar uma restrição única em um índice hash.

Para manter a exclusividade em um campo que não é sua chave de shard, consulte Restrições únicas em campos arbitrários.

Voltar

Chaves de fragmentação

Nesta página