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".
La lectura de preocupación está disponible "snapshot" para transacciones de múltiples documentos y, a partir de MongoDB, para 5.0 ciertas operaciones de lectura fuera de transacciones de múltiples documentos.
Si la transacción no es parte de una sesión causalmente consistente, al confirmar la transacción con preocupación de escritura, se garantiza que las operaciones
"majority"de transacción habrán leído desde una instantánea de los datos mayoritariamente confirmados.Si la transacción es parte de una sesión causalmente consistente, al confirmar la transacción con preocupación
"majority"de escritura, se garantiza que las operaciones de transacción hayan leído desde una instantánea de datos mayoritariamente confirmados que proporciona consistencia causal con la operación inmediatamente anterior al inicio de la transacción.
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 "snapshot" prohíben.
Operaciones
Para obtener una lista de todas las operaciones que aceptan inquietudes de lectura,consulte Operaciones que admiten inquietudes de lectura.
Leer Preocupación y Transacciones
Las transacciones de múltiples documentos admiten la lectura de la preocupación"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 multidocumento, las lecturas con la preocupación de lectura "snapshot" admiten el parámetro atClusterTime opcional. El parámetro atClusterTime permite especificar la marca de tiempo de la lectura. Para satisfacer una solicitud de lectura con un especificado atClusterTime de T, el ejecuta la solicitud basándose en los datos disponibles en el momento mongod T.
Puede obtener el operationTime o clusterTime de una operación de la respuesta de db.runCommand() o del Session() objeto.
El siguiente comando realiza una operación de búsqueda con preocupación de lectura y especifica que la operación debe leer datos de la instantánea en el momento "snapshot" del Timestamp(1613577600, 1) clúster.
db.runCommand( { find: "restaurants", filter: { _id: 5 }, readConcern: { level: "snapshot", atClusterTime: Timestamp(1613577600, 1) }, } )
Si atClusterTime no se suministra mongos el parámetro, el, o en conjuntos mongod de réplicas de un solo miembro, el, selecciona la marca de tiempo de la última instantánea confirmada atClusterTime por la mayoría como 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 delminSnapshotHistoryWindowInSecondsparámetro.minSnapshotHistoryWindowInSecondses el intervalo de tiempo mínimo (en segundos) durante el cual el motor de almacenamiento conserva el historial de instantáneas. Si especifica un valor atClusterTime anterior a la instantánea más antigua conservadaminSnapshotHistoryWindowInSecondssegún, devuelve unmongoderror.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 dentro"snapshot"de sesiones causalmente consistentes.
Nivel de consistencia de lectura en colecciones con tamaño fijo
A partir de la 5.0 versión, no es posible utilizar la lectura de interés al "snapshot" leer desde una colección limitada.