Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Preocupações de leitura/preocupações de gravação padrão do MongoDB

Nesta página

  • Preocupação de leitura
  • Escreva preocupação
  • Garantias de consistência causal
Herança de preocupação de leitura/gravação
clique para ampliar

A read concern padrão é a seguinte:

operações
Preocupação de leitura padrão
Lê em relação ao primário

"local"

Observação

  • Essa read concern pode retornar dados que podem ser revertidos.

  • Esta read concern não garante consistência causal.

Lê contra secundários.

"local"

Observação

  • Essa read concern pode retornar dados que podem ser revertidos.

  • Esta read concern não garante consistência causal.

Para obter mais informações sobre o read concern disponível, consulte Read Concern.

Herança de preocupação de leitura/gravação

A partir do MongoDB 5.0, o write concern padrão implícito é w: majority. No entanto, considerações especiais são feitas para sistemas contendo arbiters:

  • A maioria dos votos de um conjunto de réplicas é de 1 mais metade do número de membros votantes, arredondado para baixo. Se o número de membros votantes portadores de dados não for maior que a maioria votante, o write concern padrão é { w: 1 }.

  • Em todos os outros cenários, a preocupação de gravação padrão é { w: "majority" }.

  • Para um cluster fragmentado, a referência de escrita padrão é sempre recuperada do servidor de configuração. Como o servidor de configuração deve ter zero árbitro, a referência de escrita padrão implícita para um cluster fragmentado é sempre "majority". Mesmo que um fragmento esteja em uma topologia Primário-Secundário-Árbitro, ele ainda terá uma referência de escrita padrão de "majority". A partir do MongoDB 5.1, essa configuração não é permitida se a referência de escrita em todo o cluster não estiver definida.

Especificamente, MongoDB usa a seguinte fórmula para determinar a preocupação de escrita padrão:

if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ]
defaultWriteConcern = { w: 1 }
else
defaultWriteConcern = { w: "majority" }

Por exemplo, considere as seguintes implantações e suas respectivas preocupações de escrita padrão:

Não Árbitros
Árbitros
Nós de votação
Maioria dos nós de votação
Write concern padrão implícito
2
1
3
2
{ w: 1 }
4
1
5
3
{ w: "majority" }
  • No primeiro exemplo:

    • Existem 2 não-arbitores e 1 árbitro para um total de 3 nós de votação.

    • A maioria dos nós de votação (1 mais metade de 3, arredondado para baixo) é 2.

    • O número de não-arbitros (2) é igual à maioria dos nós de votação (2), resultando em uma preocupação implícita de escrita de { w: 1 }.

  • No segundo exemplo:

    • Existem 4 não-árbitros e 1 árbitro para um total de 5 nós votantes.

    • A maioria dos nós de votação (1 mais metade de 5, arredondado para baixo) é 3.

    • O número de não-arbitros (4) é maior que a maioria dos nós de votação (3), resultando em uma preocupação implícita de escrita de { w: "majority" }.

Para obter mais informações sobre as write concerns disponíveis, consulte write concern.

Com sessões de cliente causalmente consistentes, as sessões de cliente só garantem consistência causal se:

  • as operações de leitura associadas usam "majority" read concern e

  • as operações de gravação associadas usam "majority" write concern.

← Porta MongoDB padrão