MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

La différence entre majoritaire et linéarisable

"Linéarisable " read concern a été introduit dans MongoDb 3.4 pour résoudre un problème possible avec "majorité " Lire préoccupation.

Essayons de comprendre le problème avec "majorité " lisez le souci de sentir ce que " linéarisable " nous apporte.

Supposons que nous ayons un jeu de répliques de 3 nœuds, qui ressemble à ceci :

Où,A est Primaire,B est Secondaire,C est secondaire

Ayons également deux utilisateurs Alice et Bob , qui effectuera certaines opérations sur le document suivant qui réside dans "users " collecte.

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

A l'instant T0 :

ce qui suit arrive,

  1. Alice se connecte à A (primaire) et problèmes suivant la commande.

Sortie :

  1. B et C se rend compte que A a cessé de répondre et commence la procédure d'élection.(Peut être dû au partitionnement du réseau ).

A l'instant T1 :

ce qui suit arrive,

  1. En raison du processus électoral, B se présente comme une nouvelle primaire .

Cependant, jusqu'au moment A n'est pas communiqué ou A lui-même se rend compte qu'il doit se rétrograder à un secondaire, il continue à servir de primaire (ceci est généralement pour une très courte période de temps cependant).

A l'instant T2 :

  1. Bob se connecte à B (nouveau principal) et problèmes suivant la commande.
  1. Bob est reconnu en écriture.

A l'instant T3 :

  1. Alice se connecte à A (ancien primaire) et problèmes suivant la commande.

Sortie :

Alice ici obtient les données obsolètes même après avoir émis le problème de lecture majoritaire, c'est-à-dire que l'écriture faite par Bob n'est pas visible pour Alice. Ainsi, la propriété de "Linéarisabilité " est indemnisé dans ce cas.

D'où vient la solution, c'est-à-dire "linéarisable " read concern. Avec cette propriété, mongod vérifie son principal et peut voir la majorité des nœuds avant d'émettre les résultats de l'opération de lecture. préoccupation de lecture "majoritaire".

Concernant writeConcernMajorityJournalDefault propriété, il s'agit simplement d'une option de configuration de jeu de répliques. Il accepte la valeur booléenne .

Vrai signifie que MongoDB reconnaît l'opération d'écriture après qu'une majorité des membres votants ont écrit dans le journal sur disque.

Faux signifie que MongoDB reconnaît l'opération d'écriture après qu'une majorité des membres votants ont appliqué l'opération en mémoire.

La propriété ci-dessus s'applique uniquement lorsque l'écriture concernant la "majorité" est utilisée et que l'indicateur de journalisation n'est pas spécifié.