Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

readConcern "snapshot"

Modificado en la versión 5.0.

Una query con nivel de consistencia de lectura "snapshot" devuelve datos confirmados por la mayoría tal como aparecen en particiones desde un punto único específico en el tiempo en el pasado reciente. El nivel de consistencia de lectura "snapshot" brinda sus garantías solo si la transacción se confirma con un nivel de confirmación de escritura (write concern). "majority".

El nivel de consistencia de lectura "snapshot" está disponible para transacciones multi-documento y, a partir de MongoDB 5.0, ciertas operaciones de lectura fuera de las transacciones multi-documento.

  • Si la transacción no es parte de una sesión causalmente consistente, al confirmar la transacción con el nivel de confirmación de escritura (write concern) "majority", se garantiza que las operaciones de la transacción se hayan leído de una instantánea de datos confirmada por la mayoría.

  • Si la transacción forma parte de una sesión causalmente consistente, al confirmar la transacción con el nivel de confirmación de escritura (write concern), se garantiza que las operaciones de la transacción han leído a partir de una instantánea de los datos confirmados por mayoría que aseguran consistencia causal con la operación que precede inmediatamente al inicio de la transacción."majority"

Importante

Una lectura de "snapshot" sólo puede realizarse dentro del período de tiempo especificado por minSnapshotHistoryWindowInSeconds. Una operación de lectura que dure más que minSnapshotHistoryWindowInSeconds puede terminar.

Fuera de las transacciones multidocumento, nivel de consistencia de lectura "snapshot" está disponible en primarios y secundarios para las siguientes operaciones de lectura:

Todos los demás comandos de lectura prohíben "snapshot".

Para obtener una lista de todas las operaciones que aceptan nivel de consistencia de lectura, consulte Operaciones que admiten nivel de consistencia de lectura.

Las transacciones multi-documento admiten el nivel de consistencia de lectura "snapshot", así como "local", y "majority".

Nota

Estableces el nivel de consistencia de lectura a nivel de transacción, no a nivel de operación individual. Para establecer el nivel de consistencia de lectura para las transacciones, consulte Transacciones y nivel de consistencia de lectura.

Nuevo en la versión 5.0.

Fuera de las transacciones multi-documento, las lecturas con nivel de consistencia de lectura "snapshot" admiten el parámetro opcional atClusterTime. El parámetro atClusterTime te permite especificar la marca de tiempo para la lectura. Para satisfacer una solicitud de lectura con un atClusterTime especificado de T, el mongod realiza la solicitud en función de los datos disponibles en el tiempo T.

Puedes obtener el operationTime o el clusterTime de una operación a partir de la respuesta de db.runCommand() o del objeto Session().

El siguiente comando realiza una operación de búsqueda con el nivel de consistencia de lectura "snapshot" y especifica que la operación debe leer datos de la instantánea en el tiempo Timestamp(1613577600, 1) del clúster.

db.runCommand( {
find: "restaurants",
filter: { _id: 5 },
readConcern: {
level: "snapshot",
atClusterTime: Timestamp(1613577600, 1)
},
} )

Si no se suministra el parámetro atClusterTime, el mongos, o en sets de réplicas de un solo nodo el mongod, selecciona la marca de tiempo de la última snapshot confirmada por mayoría como el atClusterTime y la devuelve al cliente.

Fuera de las transacciones, las "snapshot" se garantizan que lean datos confirmados por mayoría.

  • Los valores permitidos para atClusterTime dependen del parámetro minSnapshotHistoryWindowInSeconds. minSnapshotHistoryWindowInSeconds es la ventana mínima en segundos durante la cual el motor de almacenamiento mantiene el historial de snapshots. Si especificas un valor atClusterTime más antiguo que la snapshot más antigua retenida según minSnapshotHistoryWindowInSeconds, mongod devuelve un error.

  • Si realiza una operación de lectura con "snapshot" en un miembro de set de réplicas retrasadas, los datos confirmados por mayoría devueltos podrían estar desactualizados.

  • No es posible especificar atClusterTime para "snapshot" dentro de sesiones causalmente coherentes.

A partir de MongoDB 8.0, puedes usar el nivel de consistencia de lectura "snapshot" en colecciones con tamaño fijo.

Volver

"linealizable"

En esta página