sql >> Base de Datos >  >> NoSQL >> MongoDB

La diferencia entre mayoritario y linealizable.

"Linealizable La preocupación de lectura se introdujo en MongoDb 3.4 para resolver un posible problema con la "mayoría " Leer preocupación.

Tratemos de entender el problema con "mayoría " leer preocupación por sentir lo que "Linealizable " nos trae.

Supongamos que tenemos un conjunto de réplicas de 3 nodos, que se parece a esto:

Donde,A es principal, B es Secundario,C es secundario

Tengamos también dos usuarios Alice y Bob , que realizará algunas operaciones en el siguiente documento que reside en "usuarios " colección.

{
 "_id": 100234,
 "name": "Katelyn"
}

En el instante de tiempo T0:

sucede lo siguiente,

  1. Alicia se conecta a A (primario) y problemas después del comando.

Salida:

  1. B y C se da cuenta de que A ha dejado de responder y comienza el procedimiento de elección. (Puede deberse a la partición de la red ).

En el instante de tiempo T1:

sucede lo siguiente,

  1. Debido al proceso electoral, B se presenta como una nueva primaria .

Sin embargo, hasta el momento A no se comunica o A se da cuenta de que necesita degradarse a sí mismo a un secundario, continúa sirviendo como primario (aunque esto es generalmente por un período de tiempo muy corto).

En el instante de tiempo T2:

  1. Bob se conecta con B (nueva primaria) y problemas después del comando.
  1. Bob es reconocido por escribir.

En el instante de tiempo T3:

  1. Alicia se conecta a A (antiguo primario) y problemas siguiendo el comando.

Salida:

Alice aquí obtiene los datos obsoletos incluso después de emitir la preocupación de lectura mayoritaria, es decir, la escritura realizada por Bob no es visible para Alice. Por lo tanto, la propiedad de "Linealizabilidad " se compensa en este caso.

Por lo tanto, viene la solución, es decir, "linealizable " preocupación de lectura. Con esta propiedad, mongod verifica su principal y puede ver la mayoría de los nodos antes de emitir los resultados de la operación de lectura. Sin embargo, existe una penalización de costo de rendimiento al usar esta preocupación de lectura sobre la "mayoría", por lo que no es un reemplazo para "mayoría" dice preocupación.

Con respecto a writeConcernMajorityJournalDefault propiedad, es simplemente una opción de configuración del conjunto de réplicas. Acepta valor booleano .

Verdadero significa que MongoDB reconoce la operación de escritura después de que la mayoría de los miembros con derecho a voto hayan escrito en el diario en disco.

Falso significa que MongoDB reconoce la operación de escritura después de que la mayoría de los miembros votantes hayan aplicado la operación en la memoria.

La propiedad anterior es aplicable solo cuando se usa la preocupación de escritura "mayoría" y no se especifica el indicador de registro en diario.