Menu Docs
Página inicial do Docs
/
Manual 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 preocupação de leitura padrão é a seguinte:

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

"local"

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

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

As informações a seguir se aplicam a operações executadas fora de transações. Para obter informações de preocupação de leitura relacionadas a operações executadas dentro de transações, clique na aba Operations in Transactions.

Usando osdrivers do MongoDB , você pode substituir a preocupação de leitura padrão e definir a preocupação de leitura para as operações nos seguintes níveis:

Nível
Descrição
Nível do cliente
Aplica-se a operações, a menos que uma read concern mais refinada para uma operation seja definida no nível de banco de dados/collection/operação.
Nível do banco de dados

Aplica-se a operações nas collections do banco de dados (ou seja, substitui a read concern do cliente), a menos que uma read concern tenha sido definida no nível de collection ou operação.

Não se aplica a operações dentro de transações.

Nível de collection

Aplica-se a operações de leitura na collection (ou seja, substitui a read concern do banco de dados/cliente), a menos que uma read concern tenha sido definida no nível de operação.

Não se aplica a operações dentro de transações.

Nível de operação

Aplica-se à operação de leitura específica (ou seja, substitui a read concern da collection/cliente/banco de dados).

A capacidade de definir a preocupação de leitura na operação depende do driver. Consulte a documentação do driver.

Não se aplica a operações dentro de transações.

As seguintes informações se aplicam a operações executadas dentro de transações. Para obter informações de preocupação de leitura relacionadas a operações executadas fora de transações, clique na Operations outside Transactions aba.

Usando os drivers do MongoDB, você pode substituir a preocupação de leitura padrão e definir a preocupação de leitura para transações nos seguintes níveis:

Nível
Descrição
Nível do cliente

Aplica-se a transações, a menos que uma preocupação de leitura mais refinada seja definida no nível de sessão/transação.

Todas as operações em uma transação usam a preocupação de leitura da transação: qualquer preocupação de leitura definido no nível de operação, collection ou banco de dados de dados é ignorado na transação.

Nível da sessão

Aplica-se a transações iniciadas na sessão (ou seja, substitui a preocupação de leitura do cliente), a menos que um nível de preocupação de leitura mais refinado seja definido em um nível de transação específico.

Todas as operações em uma transação usam a preocupação de leitura da transação: qualquer preocupação de leitura definido no nível de operação, collection ou banco de dados de dados é ignorado na transação.

Consulte Transações e preocupação de leitura para obter mais informações.

Nível de transação

Aplica-se à transação específica (ou seja, substitui a preocupação de leitura do cliente/sessão).

Todas as operações em uma transação usam a preocupação de leitura da transação: qualquer preocupação de leitura definido no nível de operação, collection ou banco de dados de dados é ignorado na transação.

Consulte Transações e preocupação de leitura para obter mais informações.

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

Herança de preocupação de leitura/gravação
clique para ampliar

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" }.

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:

Non-Arbiters
Á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" }.

As informações a seguir se aplicam a operações executadas fora de transações. Para obter informações de preocupação de leitura relacionadas a operações executadas dentro de transações, clique na aba Operations in Transactions.

Usando os drivers do MongoDB, você pode substituir a preocupação de gravação padrão e definir a preocupação de gravação para as operações nos seguintes níveis:

Nível
Descrição
Nível do cliente
Aplica-se às operações, a menos que uma write concern mais refinada para uma operação seja definida na operação/banco de dados/collection.
Nível do banco de dados

Aplica-se a operações de escrita nas collections do banco de dados (ou seja, substitui a write concern do cliente), a menos que uma write concern tenha sido definida no nível de collection ou operação.

Não se aplica a operações dentro de transações.

Nível de collection

Aplica-se a operações de escrita na collection (ou seja, substitui o banco de dados e a write concern do cliente), a menos que uma write concern tenha sido definida no nível de operação.

Não se aplica a operações dentro de transações.

Nível de operação

Aplica-se à operação de escrita específica.

A capacidade de definir a preocupação de gravação na operação depende do driver. Consulte a documentação do driver.

Não se aplica a operações dentro de transações.

As seguintes informações se aplicam a operações executadas dentro de transações. Para obter informações de preocupação de leitura relacionadas a operações executadas fora de transações, clique na Operations outside Transactions aba.

Usando os drivers do MongoDB, você pode substituir a preocupação de gravação padrão e definir a preocupação de gravação para transações nos seguintes níveis:

Nível
Descrição
Nível do cliente

Aplica-se a transações, a menos que uma preocupação de gravação mais refinada para transações seja definida no nível de sessão/transação.

A preocupação com a gravação da transação se aplica à operação de confirmação e às operações dentro da transação.

Todas as operações em uma transação usam a preocupação de gravação de gravação da transação : qualquer preocupação de gravação definido no nível de operação, coleção ou banco de dados de dados é ignorado dentro da transação.

Nível da sessão

Aplica-se a transações iniciadas na sessão, a menos que o nível de preocupação de gravação esteja definido em um nível de transação específico.

A preocupação com a gravação da transação se aplica à operação de confirmação e às operações dentro da transação.

Todas as operações em uma transação usam a preocupação de gravação de gravação da transação : qualquer preocupação de gravação definido no nível de operação, coleção ou banco de dados de dados é ignorado dentro da transação.

Nível de transação

Aplica-se à transação específica.

A preocupação com a gravação da transação se aplica à operação de confirmação e às operações dentro da transação.

Todas as operações em uma transação usam a preocupação de gravação de gravação da transação : qualquer preocupação de gravação definido no nível de operação, coleção ou banco de dados de dados é ignorado dentro da transação.

Consulte Transações e preocupação de gravação para obter mais informações.

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.

Voltar

Porta padrão