Una consulta con preocupación de lectura "available" devuelve datos de la instancia sin garantía de que los datos se hayan escrito en la mayoría de los miembros del conjunto de réplicas (es decir, que se puedan revertir).
Para un clúster fragmentado, la lectura proporciona una mayor tolerancia a las
"available"particiones.Las consultas con la preocupación de lectura no requieren una verificación para garantizar que el fragmento correcto recibió la
"available"consulta.En caso de particiones de red, estas consultas se dirigen al fragmento considerado apropiado antes de que se produjera la partición. No esperan garantías de consistencia de servidores que podrían no estar disponibles. Si el fragmento estaba en proceso de migración de fragmentos, las consultas con pueden
"available"devolver documentos huérfanos.Advertencia
mongosno garantiza que las consultas con la preocupación de lectura"available"se dirijan a los fragmentos correctos. El fragmento que recibe la consulta devuelve datos, pero es posible que no sea el propietario autorizado de los datos solicitados.Esto puede provocar que las consultas devuelvan resultados incorrectos o inesperados.
Para las colecciones no fragmentadas (incluidas las colecciones en una implementación independiente o una implementación de conjunto de réplicas),
"local"las"available"preocupaciones de lectura y se comportan de manera idéntica.
Independientemente del nivel de consistencia de lectura, es posible que los datos más recientes de un nodo no reflejen la versión más reciente de los datos en el sistema.
Disponibilidad
La preocupación leída "available" es no disponible para su uso con sesiones y transacciones causalmente consistentes.
Ejemplo
Considere la siguiente línea de tiempo de una operación de 0 escritura: Escribir en un conjunto de réplicas de tres miembros:
Nota
Para simplificar, el ejemplo supone:
Todas las escrituras anteriores a Escritura se han replicado exitosamente en todos los 0 miembros.
Escribir anterior es la escritura anterior a 0 Escribir.
No se han producido otras escrituras después de 0 Escritura.
Tiempo | Evento | Escritura más reciente | Más reciente w: "mayoría" escribe |
|---|---|---|---|
t 0 | Primario aplica Escribir 0 | Primary: Write 0 Secondary 1: Write prev Secondary 2: Write prev | Primary: Write prev Secondary 1: Write prev Secondary 2: Write prev |
el 1 | El secundario aplica 1 escritura 0 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write prev | Primary: Write prev Secondary 1: Write prev Secondary 2: Write prev |
el 2 | El secundario aplica 2 escritura 0 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write prev Secondary 1: Write prev Secondary 2: Write prev |
el 3 | El servidor principal es consciente de la replicación exitosa al 1 servidor secundario y envía un acuse de recibo al cliente. | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write 0 Secondary 1: Write prev Secondary 2: Write prev |
el 4 | El primario está al tanto de la replicación exitosa al secundario 2 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write 0 Secondary 1: Write prev Secondary 2: Write prev |
el 5 | El secundario recibe un aviso (a través del mecanismo de replicación regular) para actualizar su instantánea de su escritura w: "mayoría" más 1 reciente | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write prev |
el 6 | El secundario recibe un aviso (a través del mecanismo de replicación regular) para actualizar su instantánea de su escritura w: "mayoría" más 2 reciente | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 | Primary: Write 0 Secondary 1: Write 0 Secondary 2: Write 0 |
Luego, las siguientes tablas resumen el estado de los datos que una operación de lectura con interés de lectura "available" vería en el T momento.
Leer objetivo | Tiempo T | Estado de los datos |
|---|---|---|
Primario | Después de t 0 | Los datos reflejan la 0 escritura. |
Secundario 1 | Antes de t 1 | Los datos reflejan la escritura anterior |
Secundario 1 | Después de t 1 | Los datos reflejan la escritura 0 |
Secundario 2 | Antes de t 2 | Los datos reflejan la escritura anterior |
Secundario 2 | Después de t 2 | Los datos reflejan la escritura 0 |