La clase MongoDB\Driver\ReadConcern
En esta página
Introducción#
MongoDB\Driver\ReadConcern controla el nivel de aislamiento para las operaciones de lectura para los conjuntos de réplicas y las réplicas de réplicas. Esta opción requiere MongoDB 3.2 o posterior.
Sinopsis de la clase#
MongoDB\Driver\ReadConcern
final
MongoDB\Driver\ReadConcern
MongoDB\BSON\Serializable
Serializable
Propiedades
public
readonly
string
null
level
Constantes
const
string
MongoDB\Driver\ReadConcern::AVAILABLE
"available"
const
string
MongoDB\Driver\ReadConcern::LINEARIZABLE
"linearizable"
const
string
MongoDB\Driver\ReadConcern::LOCAL
"local"
const
string
MongoDB\Driver\ReadConcern::MAJORITY
"majority"
const
string
MongoDB\Driver\ReadConcern::SNAPSHOT
"snapshot"
Métodos
Propiedades#
level
El nivel del read concern. null si no se especificó ningún nivel.
Constantes predefinidas#
MongoDB\Driver\ReadConcern::AVAILABLE
Por omisión para las lecturas en los secundarios cuando afterClusterTime y level no están especificados.
La consulta devuelve los datos más recientes de la instancia. No garantiza que los datos hayan sido escritos en la mayoría de los miembros del conjunto de réplicas (es decir, que puedan ser anulados).
Para las colecciones no fragmentadas (incluyendo las colecciones en un despliegue autónomo o un despliegue de réplicas), las lecturas "local" y "available" se comportan de manera idéntica.
Para un clúster compartido, la lectura "available" proporciona una mayor tolerancia a las particiones ya que no espera para garantizar garantías de coherencia. Sin embargo, una consulta con una lectura "available" puede devolver documentos huérfanos si el fragmento está en proceso de migración de piezas ya que la lectura "available", a diferencia de la lectura "local", no contacta al primario del fragmento ni a los servidores de configuración para obtener metadatos actualizados.
MongoDB\Driver\ReadConcern::LINEARIZABLE
La consulta devuelve los datos que reflejan todas las escrituras exitosas emitidas con un nivel de escritura de "majority" y reconocido antes del inicio de la operación de lectura. Para los conjuntos de réplicas que funcionan con writeConcernMajorityJournalDefault definido en true, la lectura linealizable devuelve datos que nunca serán anulados.
Con writeConcernMajorityJournalDefault definido en false, MongoDB no esperará que las escrituras w: "majority" sean durables antes de acusar recibo de las escrituras. En consecuencia, las operaciones de escritura "majority" podrían eventualmente ser anuladas en caso de pérdida de un miembro del conjunto de réplicas.
Se puede especificar un nivel de lectura linealizable para las operaciones de lectura en el primario únicamente.
La lectura linealizable garantiza que las operaciones de lectura especifiquen un filtro de consulta que identifique de manera única un solo documento.
[!TIP] Siempre utilizar
maxTimeMScon una lectura linealizable en caso de no disponibilidad de la mayoría de los miembros portadores de datos.maxTimeMSgarantiza que la operación no bloquee indefinidamente y garantiza que la operación devuelva un error si el nivel de lectura no puede ser satisfecho.
La lectura linealizable requiere MongoDB 3.4.
MongoDB\Driver\ReadConcern::LOCAL
Por omisión para las lecturas en el primario si level no está especificado y para las lecturas en los secundarios si level no está especificado pero afterClusterTime está especificado.
La consulta devuelve los datos más recientes de la instancia. No garantiza que los datos hayan sido escritos en la mayoría de los miembros del conjunto de réplicas (es decir, que puedan ser anulados).
MongoDB\Driver\ReadConcern::MAJORITY
La consulta devuelve los datos más recientes reconocidos como haber sido escritos en la mayoría de los miembros del conjunto de réplicas.
Para utilizar el nivel de lectura "majority", los conjuntos de réplicas deben utilizar el motor de almacenamiento WiredTiger y el protocolo de elección versión 1.
MongoDB\Driver\ReadConcern::SNAPSHOT
La lectura "snapshot" está disponible para las transacciones multi-documentos, y a partir de MongoDB 5.0, para ciertas operaciones de lectura fuera de las transacciones multi-documentos.
Si la transacción no forma parte de una sesión coherente, al validar la transacción con un nivel de escritura "majority", las operaciones de transacción están garantizadas de haber leído desde una instantánea de datos mayoritariamente comprometidos.
Si la transacción forma parte de una sesión coherente, al validar la transacción con un nivel de escritura "majority", las operaciones de transacción están garantizadas de haber leído desde una instantánea de datos mayoritariamente comprometidos que aseguran la coherencia causal con la operación inmediatamente anterior al inicio de la transacción.
Fuera de las transacciones multi-documentos, el nivel de lectura "snapshot" está disponible en los primarios y los secundarios para las siguientes operaciones de lectura: find, aggregate y distinct (en colecciones no fragmentadas). Todas las demás órdenes de lectura prohíben "snapshot".
Historial de cambios#
| Versión | Descripción |
|---|---|
| PECL mongodb 2.3.0 | Se añadieron las propiedades públicas readonly. |
| PECL mongodb 1.11.0 | Adición de la constante |
| PECL mongodb 1.7.0 | Implementa Serializable. |
| PECL mongodb 1.4.0 | Adición de la constante |
| PECL mongodb 1.2.0 | Adición de la constante Implementa MongoDB\BSON\Serializable. |
Véase también#
Referencia de lectura