Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Read concern "maioria"

"majority"

Para operações de leitura não associadas a transações multidocumentos, a preocupação de leitura "majority" garante que os dados lidos foram reconhecidos pela maioria dos membros do conjunto de réplicas. Os documentos lidos são duráveis e garantem que não sejam revertidos.

Para operações em transações multidocumento, a preocupação de leitura "majority" fornece suas garantias somente se a transação for confirmada com a preocupação de gravação "maioria". Caso contrário, a preocupação de leitura "majority" não oferece garantias sobre os dados lidos nas transações.

Independentemente do nível de read concern, os dados mais recentes em um nó podem não refletir a versão mais recente dos dados no sistema.

Para obter mais informações sobre o que acontece se um primário falhar, consulte Failover automático.

Cada membro do conjunto de réplica mantém, em memória, uma visualização dos dados no ponto de confirmação da maioria; o ponto de confirmação da maioria é calculado pelo primário. Para atender à preocupação de leitura "majority", o nó retorna dados dessa visualização e é comparável em desempenho a outras preocupações de leitura.

A preocupação de leitura "majority" não diminui o desempenho das queries; apenas modifica o que retorna ao cliente. A preocupação de leitura "majority" permite que apenas os dados armazenados de forma duradoura na maioria dos nós no conjunto de réplicas retornem ao cliente. Em comparação, as queries com preocupação de leitura "local" podem retornar dados que podem ser perdidos em determinados cenários, como um rollback.

A preocupação de leitura "majority" está disponível para uso com ou sem sessões e transações causalmente consistentes.

Aviso

Se você estiver usando uma arquitetura PSA (primária-secundária-arbiter) de três membros, considere o seguinte:

Considere a seguinte linha do tempo de uma operação de gravação Escrever 0 para um conjunto de réplicas de três membros:

Observação

Para simplificar, o exemplo pressupõe:

  • Todas as gravações anteriores à gravação 0 foram replicadas com sucesso para todos os membros.

  • Escrever prev é a escrita anterior antes de Escrever 0.

  • Nenhuma outra gravação ocorreu após Write 0.

Linha do tempo de uma operação de gravação para um conjunto de réplicas de três membros.
Hora
Evento
Escrita mais recente
Mais recente w: escrita da "maioria"

t 0

Primário aplica Write 0

Primary: Gravar 0
1Secundário: Gravar anterior
2Secundário: Gravar anterior

Primary: Gravar anterior
1Secundário: Gravar anterior
2Secundário: Gravar anterior

t 1

O secundário 1 aplica a gravação 0

Primary: escrever 0
1secundário: escrever 0
2secundário: escrever anterior

Primary: Gravar anterior
1Secundário: Gravar anterior
2Secundário: Gravar anterior

t 2

O secundário 2 aplica a escrita 0

Primário: Escrever 0
1Secundário: Escrever 0
2Secundário: Escrever 0

Primary: Gravar anterior
1Secundário: Gravar anterior
2Secundário: Gravar anterior

t 3

O Primário está ciente do sucesso da replicação para o Secundário 1 e envia uma confirmação ao cliente

Primário: Escrever 0
1Secundário: Escrever 0
2Secundário: Escrever 0

Primary: Gravar 0
1Secundário: Gravar anterior
2Secundário: Gravar anterior

t 4

O primary está ciente da replicação bem-sucedida para o secundário 2

Primário: Escrever 0
1Secundário: Escrever 0
2Secundário: Escrever 0

Primary: Gravar 0
1Secundário: Gravar anterior
2Secundário: Gravar anterior

t 5

O secundário 1 recebe um aviso (por meio de mecanismo de replicação regular) para atualizar o snapshot de sua gravação w: "maioria" mais recente

Primário: Escrever 0
1Secundário: Escrever 0
2Secundário: Escrever 0

Primary: escrever 0
1secundário: escrever 0
2secundário: escrever anterior

t 6

O secundário 2 recebe um aviso (por meio do mecanismo de replicação regular) para atualizar seu snapshot do w mais recente: "majority" write

Primário: Escrever 0
1Secundário: Escrever 0
2Secundário: Escrever 0

Primário: Escrever 0
1Secundário: Escrever 0
2Secundário: Escrever 0

Depois, as tabelas a seguir resumem o estado dos dados que uma operação de leitura com a preocupação de leitura "majority" veria no momento T.

Linha do tempo de uma operação de escrita para um conjunto de réplica de três membros.
Meta de leitura
Hora T
Estado dos dados

Principal

Antes de 3

Os dados refletem a gravação anterior

Principal

Após t 3

Os dados refletem Gravação 0

Secundário 1

Antes de 5

Os dados refletem a gravação anterior

Secundário 1

Após t 5

Os dados refletem Gravação 0

Secundário 2

Antes ou às 6

Os dados refletem a gravação anterior

Secundário 2

Após t 6

Os dados refletem Gravação 0

A preocupação de leitura "majority" está disponível para o mecanismo de armazenamento WiredTiger.

Dica

O comando serverStatus retorna o campo storageEngine.supportsCommittedReads, que indica se o mecanismo de armazenamento suporta a preocupação de leitura "majority".

Observação

Você define a preocupação de leitura no nível da transação, não no nível da operação individual. Para definir a preocupação de leitura para transações, consulte Transações e preocupação de leitura.

Para operações em transações multidocumento, a preocupação de leitura "majority" fornece suas garantias somente se a transação for confirmada com a preocupação de gravação "maioria". Caso contrário, a preocupação de leitura "majority" não oferece garantias sobre os dados lidos nas transações.

Você pode especificar o nível de preocupação de leitura "majority" para uma agregação que inclui um estágio de $out.

Você pode usar sessões causalmente consistentes para ler suas próprias gravações, se as gravações solicitarem confirmação.

A partir do MongoDB 5.0, enableMajorityReadConcern e --enableMajorityReadConcern não podem ser alterados e são sempre definidos como true devido a melhorias no mecanismo de armazenamento.

Em versões anteriores do MongoDB, enableMajorityReadConcern e --enableMajorityReadConcern são configuráveis e podem ser configurados como false para evitar que a pressão do cache de armazenamento imobilize um sistema com uma arquitetura PSA (primary-secondary-arbiter) de três membros.

Se você estiver usando uma arquitetura PSA (primária-secundária-arbiter) de três membros, considere o seguinte: