Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

readConcern "snapshot"

Modificado en la 5.0 versión.:

Un query con el nivel de consistencia de lectura "snapshot" devuelve datos comprometidos por mayoría tal como aparecen en las particiones desde un único punto específico en el tiempo en el pasado reciente. El nivel de consistencia de lectura "snapshot" proporciona sus garantías solo si la transacción obtiene su confirmación con el nivel de confirmació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 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 multi-documento, el 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.

Fuera de las transacciones multidocumento, las lecturas con nivel de consistencia de lectura "snapshot" admiten el parámetro opcional atClusterTime. El parámetro atClusterTime le 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 momento T. Si el mongod aún no ha alcanzado el tiempo T en su oplog, espera para atender la solicitud.

Tip

Si tiene lecturas dirigidas a nodos de set de réplicas retrasados, puede utilizar maxTimeMS para limitar el tiempo de espera de las lecturas con un atClusterTime especificado. maxTimeMS garantiza que la operación no se bloquee indefinidamente y, en su lugar, devuelva un error si el mongod no alcanza el atClusterTime especificado a tiempo.

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" sin especificar atClusterTime en un miembro de set de réplicas retrasadas, los datos confirmados por mayoría devueltos podrían estar desactualizados. Si especifica atClusterTime, el mongod espera la marca de tiempo especificada en lugar de devolver datos desactualizados, aunque la lectura puede bloquearse o agotarse el tiempo de espera.

  • 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.