ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Menu Docs

Read concern "local"

Uma query com read concern "local" retorna dados da instância sem nenhuma garantia de que os dados foram escritos na maioria dos membros do conjunto de réplicas (ou seja, podem ser revertidos).

A read concern "local" é o padrão para operações de leitura tanto nos servidores primários quanto nos secundários.

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.

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

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.

Você pode criar coleções e índices dentro de uma transação. Se estiver criando explicitamente uma coleção ou um índice, a transação deverá usar a preocupação de leitura "local". Se você criar implicitamente uma coleção, poderá usar qualquer uma das preocupações de leitura disponíveis para transações.

Em um conjunto de réplicas, mesmo que uma transação use preocupação de leitura local, você poderá observar um isolamento de leitura mais forte quando a operação ler a partir de um snapshot no ponto em que a transação foi aberta.

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.

Timeline of a write operation to a three member replica set
Hora
Evento
Escrita mais recente
Mais recente w: escrita da "maioria"

t 0

Primário aplica Write 0

Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 1

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

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write prev
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 2

O secundário 2 aplica a escrita 0

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 3

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

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev

t 4

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

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev

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

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write prev

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

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0

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

Timeline of a write operation to a three member replica set.
Meta de leitura
Tempo T
Estado dos dados

Principal

Depois de t 0

Os dados refletem a gravação 0.

secundário 1

Antes de t 1

Os dados refletem a gravação anterior

secundário 1

Depois de t 1

Os dados refletem a gravação 0

secundário 2

Antes de t 2

Os dados refletem a gravação anterior

secundário 2

Depois de t 2

Os dados refletem a gravação 0