La clase MongoDB\Driver\ReadConcern

(mongodb >=1.1.0)

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

final class MongoDB\Driver\ReadConcern implements MongoDB\BSON\Serializable, Serializable {
/* Constantes */
const string AVAILABLE = "available";
const string LINEARIZABLE = "linearizable";
const string LOCAL = "local";
const string MAJORITY = "majority";
const string SNAPSHOT = "snapshot";
/* Métodos */
final public bsonSerialize(): stdClass
final public __construct(?string $level = null)
final public getLevel(): ?string
final public isDefault(): bool
}

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.

Sugerencia

Siempre utilizar maxTimeMS con una lectura linealizable en caso de no disponibilidad de la mayoría de los miembros portadores de datos. maxTimeMS garantiza 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 1.11.0

Adición de la constante MongoDB\Driver\ReadConcern::SNAPSHOT.

PECL mongodb 1.7.0 Implementa Serializable.
PECL mongodb 1.4.0

Adición de la constante MongoDB\Driver\ReadConcern::MAJORITY.

PECL mongodb 1.2.0

Adición de la constante MongoDB\Driver\ReadConcern::LINEARIZABLE

Implementa MongoDB\BSON\Serializable.

Tabla de contenidos

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top