Preocupações de leitura/preocupações de gravação padrão do MongoDB
Preocupação de leitura
Preocupação de leitura padrão
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. |
|
Especificar preocupação de leitura: drivers MongoDB
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. |
Informações adicionais
Para obter mais informações sobre o read concern disponível, consulte Read Concern.
Escreva preocupação
Write concern padrã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" }
.
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" }
.
Especificar write concern: drivers MongoDB
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.
Informações adicionais
Para obter mais informações sobre as write concerns disponíveis, consulte write concern.
Garantias de consistência causal
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 eas operações de gravação associadas usam
"majority"
write concern.