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

setIndexCommitQuorum

Nesta página

  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Comportamento
  • Exemplos
setIndexCommitQuorum

O comando setIndexCommitQuorum define o número mínimo de membros portadores de dados que devem estar preparados para confirmar suas construções de índice local antes que o nó primário confirme o índice.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas para todos os comandos, consulte Comandos sem suporte.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

db.runCommand(
{
setIndexCommitQuorum: <string>,
indexNames: [ <document> ],
commitQuorum: <int> | <string>,
comment: <any>
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição
string

O nome da collection para a qual os índices estão sendo construídos.

array

Uma array de construções de índices em andamento para modificar. Cada elemento da array deve ser o nome do índice.

Os índices especificados para indexNames devem ser o conjunto inteiro de compilações em andamento associadas a um determinado construtor de índices, ou seja, os índices construídos por uma única operação createIndexes ou db.collection.createIndexes() .

int ou string

O número mínimo de nós do conjunto de réplicas contendo dados (ou seja, quórum para a confirmação), incluindo o primário, que deve relatar uma construção de índice bem-sucedida antes que o primário marque o indexes como pronto.

A partir de MongoDB v5.0, é possível retomar algumas construções de índice interrompidas quando o commit quorum está definido como "votingMembers".

Para atualizar o commitQuorum, os nós do conjunto de réplicas de membros devem ter members[n].buildIndexes configurado para true. Se algum nó de votação tiver members[n].buildIndexes definido como false, você não poderá usar o "votingMembers" quórum para a confirmação padrão. Configure todos os nós com members[n].buildIndexes definido como true ou selecione um quórum para a confirmação diferente.

suporta os seguintes valores:

  • "votingMembers" - todos os membros do conjunto de réplicas de votos com dados (Padrão). Um membro "votante" é qualquer membro do conjunto de réplicas em que members[n].votes é maior que 0.

  • "majority" - uma maioria simples de membros do conjunto de réplicas com dados.

  • <int> - um número específico de membros do conjunto de réplicas com dados. Especifique um número inteiro maior que 0.

  • Um nome de tag do conjunto de réplicas.

comment
any

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

Observação

Exige featureCompatibilityVersion 4.4+

Cada mongod no conjunto de réplica ou agrupamento fragmentado deve ter featureCompatibilityVersion configurado para pelo menos 4.4 para iniciar construções de índice simultaneamente entre membros do conjunto de réplicas.

A criação de índices é um processo de várias etapas. O processo de criação do índice usa o commit quorum para minimizar o atraso de replicação em nós secundários.

Quando um nó secundário recebe uma entrada de oplog commitIndexBuild , o nó interrompe outros aplicativos de oplog até que a construção do índice local possa ser confirmada. As compilações de índices podem levar de momentos a dias para serem concluídas, portanto, o atraso de replicação pode ser significativo se o nó secundário for construído mais lentamente do que o primary.

Para gerenciar o atraso de replicação, o quórum para a confirmação atrasa a confirmação da criação do índice no nó primário até que um número mínimo de secundários também esteja pronto para confirmar a criação do índice.

O quórum para a confirmação não garante que os índices nos secundários estejam prontos para uso quando o comando for concluído. Para garantir que um número específico de secundários esteja pronto para uso, defina uma referência de escrita apropriada.

Se um nó secundário que não estiver incluído no quorum para o commit receber uma entrada commitIndexBuild no oplog, o nó poderá bloquear a replicação até que a criação do índice seja concluída.

A emissão setIndexCommitQuorum não tem efeito sobre as compilações de índice iniciadas com commitQuorum de 0.

Importante

Nós do conjunto de réplicas com buildIndexes definido como false não podem ser incluídos em um commit quorum.

Existem diferenças importantes entre quóruns de commit e preocupações de gravação:

  • Construções de índice usam quorum para o commit.

  • As operações de escritura usam write concerns.

Cada nó portador de dados em um cluster é um membro votante.

O quórum para a confirmação especifica quantos nós votantes portadores de dados, ou quais nós votantes, incluindo o primário, devem estar preparados para confirmar uma construção simultânea de índice antes que o primário execute o commit.

A preocupação de gravação é o nível de reconhecimento de que a gravação se propagou para o número especificado de instâncias.

O quorum de confirmação especifica quantos nós devem estar prontos para concluir a criação do índice antes que o primário faça a confirmação da criação do índice. Por outro lado, quando o primário tiver confirmado a criação do índice, a preocupação de gravação especifica quantos nós devem finalizar a criação do índice antes que o comando retorne.

Construir índices em um conjunto de réplicas ou cluster particionado é feito simultaneamente em todos os membros do conjunto de réplicas que contêm dados. Para clusters fragmentados, a construção de índices ocorre somente em fragmentos que contêm dados para a coleção que está sendo indexada. O primário requer um número mínimo de membros de dados voting (ou seja, quórum para a confirmação), incluindo ele próprio, que deve concluir a construção antes de marcar o índice como pronto para uso. Consulte Construções de Índice em Ambientes Replicados para obter mais informações.

A seguinte operação inicia uma construção de índice de dois índices:

db.getSiblingDB("examples").invoices.createIndexes(
[
{ "invoices" : 1 },
{ "fulfillmentStatus" : 1 }
]
)

Por padrão, as compilações de índice usam o quórum para a confirmação "votingMembers" ou todos os membros do conjunto de réplicas votantes portadores de dados. A operação a seguir modifica o quórum para a confirmação de criação de índice para "majority" ou para uma maioria simples dos nós votantes portadores de dados:.

db.getSiblingDB("examples").runCommand(
{
"setIndexCommitQuorum" : "invoices",
"indexNames" : ["invoices_1", "fullfillmentStatus_1"],
"commitQuorum" : "majority"
}
)
  • Os índices especificados para indexNames devem ser o conjunto inteiro de construções em andamento associadas a um determinado construtor de índice, ou seja, a operação createIndexes() .

  • O campo indexNames especifica os nomes dos índices. Como os índices foram criados sem um nome explícito, o MongoDB gerou um nome de índice concatenando os nomes dos campos indexados e a ordem de classificação.

Voltar

Definir versão de compatibilidade do recurso