Modificado en la versión 5.0.
Una consulta con la preocupación de lectura "snapshot" devuelve los datos mayoritariamente confirmados tal como aparecen en los fragmentos de un punto específico en el pasado reciente. La preocupación de lectura "snapshot" ofrece sus garantías solo si la transacción se confirma con la preocupación de escritura. "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 "snapshot" lectura solo se puede realizar dentro del período especificado por. Una operación de minSnapshotHistoryWindowInSeconds minSnapshotHistoryWindowInSeconds lectura que dure más de puede finalizar.
Fuera de las transacciones con múltiples documentos, lea la preocupación
"snapshot" está disponible en primarios y secundarios para las siguientes operaciones de lectura:
Todos los demás comandos de lectura prohíben "snapshot".
Operaciones
Para obtener una lista de todas las operaciones que aceptan nivel de consistencia de lectura, consulte Operaciones que admiten nivel de consistencia de lectura.
Nivel de consistencia de lectura y transacciones
Las transacciones multi-documento admiten el nivel de consistencia de lectura "snapshot", así como "local", y "majority".
Nota
La preocupación de lectura se configura a nivel de transacción, no a nivel de operación individual. Para configurar la preocupación de lectura para transacciones, consulte Transacciones y preocupación de lectura.
Leer Preocupación y atClusterTime
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, "snapshot" se garantiza que las lecturas leerán desde datos mayoritariamente comprometidos.
atClusterTime Consideraciones y comportamiento
Los valores permitidos para
atClusterTimedependen del parámetrominSnapshotHistoryWindowInSeconds.minSnapshotHistoryWindowInSecondses 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únminSnapshotHistoryWindowInSeconds,mongoddevuelve un error.Si realiza una operación de lectura con contra un miembro del conjunto de réplicas retrasadas, los datos mayoritariamente comprometidos que se devuelvan podrían estar
"snapshot"obsoletos.No es posible especificar
atClusterTimepara"snapshot"dentro de sesiones causalmente coherentes.
Nivel de consistencia de lectura en colecciones con tamaño fijo
A partir de MongoDB,8.0 puedes usar la preocupación "snapshot" de lectura en colecciones limitadas.