A classe MongoDB\Driver\ReadConcern
(mongodb >=1.1.0)
Introdução
A classe MongoDB\Driver\ReadConcern controla o nível de isolamento para operações de leitura em conjuntos de réplicas e fragmentos de conjuntos de réplicas. Esta opção requer o MongoDB 3.2 ou posterior.
Resumo da classe
Constantes pré-definidas
MongoDB\Driver\ReadConcern::AVAILABLE
-
Padrão para leitura de secundários quando
afterClusterTime
elevel
não são especificados.A consulta retorna os dados mais recentes da instância. Não fornece nenhuma garantia de que os dados foram gravados na maioria dos membros do conjunto de réplicas (ou seja, podem ser revertidos).
Para coleções não fragmentadas (incluindo coleções em uma implantação autônoma ou uma implantação de conjunto de réplicas), as preocupações de leitura
"local"
e"available"
se comportam de forma idêntica.Para um cluster fragmentado, a preocupação de leitura
"available"
fornece maior tolerância para partições, uma vez que não espera por garantias de consistência. No entanto, uma consulta com preocupação de leitura"available"
pode retornar documentos órfãos se o fragmento estiver passando por migrações de blocos desde a preocupação de leitura"available"
, ao contrário da preocupação de leitura"local"
, que não entra em contato com o servidor primário do fragmento nem com os servidores de configuração para obter metadados atualizados. MongoDB\Driver\ReadConcern::LINEARIZABLE
-
A consulta retorna dados que refletem todas as gravações bem-sucedidas emitidas com uma preocupação de gravação de
"majority"
e reconhecida antes do início da operação de leitura. Para conjuntos de réplicas executados comwriteConcernMajorityJournalDefault
igual atrue
, a preocupação de leitura linearizável retorna dados que nunca serão revertidos.Com
writeConcernMajorityJournalDefault
igual afalse
, o MongoDB não esperará que as gravaçõesw: "majority"
sejam duráveis antes de reconhecê-las. Como tal, as operações de gravação"majority"
poderiam possivelmente ser revertidas no caso de perda de um membro do conjunto de réplicas.Pode-se especificar a preocupação de leitura linearizável apenas para operações de leitura no primário.
As garantias de preocupação de leitura linearizáveis só se aplicam se as operações de leitura especificarem um filtro de consulta que identifique exclusivamente um único documento.
TipSempre use
maxTimeMS
com preocupação de leitura linearizável caso a maioria dos membros que contêm dados estejam indisponíveis.maxTimeMS
garante que a operação não seja bloqueada indefinidamente e, em vez disso, garante que a operação retorne um erro se a preocupação de leitura não puder ser atendida.A preocupação de leitura linearizável requer MongoDB 3.4.
MongoDB\Driver\ReadConcern::LOCAL
-
Padrão para leituras em relação ao primário se
level
não for especificado e para leituras em relação a secundários selevel
não for especificado, masafterClusterTime
for especificado.A consulta retorna os dados mais recentes da instância. Não fornece nenhuma garantia de que os dados foram gravados na maioria dos membros do conjunto de réplicas (ou seja, podem ser revertidos).
MongoDB\Driver\ReadConcern::MAJORITY
-
A consulta retorna os dados mais recentes da instância reconhecidos como tendo sido gravados para a maioria dos membros do conjunto de réplicas.
Para usar o nível de preocupação de leitura de
"majority"
, os conjuntos de réplicas devem usar o mecanismo de armazenamento WiredTiger e o protocolo de escolha versão 1. MongoDB\Driver\ReadConcern::SNAPSHOT
-
A preocupação de leitura
"snapshot"
está disponível para transações multi-documentos e, a partir do MongoDB 5.0, certas operações de leitura fora das transações multi-documentos.Se a transação não fizer parte de uma sessão causalmente consistente, após a confirmação da transação com preocupação de gravação
"majority"
, é garantido que as operações de transação tenham lido um instantâneo de dados confirmados pela maioria.Se a transação fizer parte de uma sessão causalmente consistente, após a confirmação da transação com preocupação de gravação
"majority"
, é garantido que as operações de transação tenham lido um instantâneo de dados confirmados pela maioria que fornece consistência causal com a operação imediatamente anterior ao início da transação.Fora das transações multi-documentos, a preocupação de leitura
"snapshot"
está disponíveis nos primários e secundários para as seguintes operações de leitura:find
,aggregate
edistinct
(em coleções não fragmentadas). Todos os outros comandos de leitura proíbem"snapshot"
.
Registro de Alterações
Versão | Descrição |
---|---|
PECL mongodb 1.11.0 |
Adicionada a constante
|
PECL mongodb 1.7.0 | Implementa Serializable. |
PECL mongodb 1.4.0 |
Adicionada a constante
|
PECL mongodb 1.2.0 |
Adicionada a constante
Implementa MongoDB\BSON\Serializable. |
Veja Também
Table of Contents
- MongoDB\Driver\ReadConcern::bsonSerialize — Retorna um objeto para serialização BSON
- MongoDB\Driver\ReadConcern::__construct — Cria uma nova preocupação de leitura
- MongoDB\Driver\ReadConcern::getLevel — Retorna o nível da preocupação de leitura
- MongoDB\Driver\ReadConcern::isDefault — Verifica se esta é a preocupação de leitura padrão
- MongoDB\Driver\ReadConcern::serialize — Serializa uma preocupação de leitura
- MongoDB\Driver\ReadConcern::unserialize — Desserializa uma preocupação de leitura