sql >> Database >  >> NoSQL >> MongoDB

Het verschil tussen meerderheid en lineariseerbaar

"Lineariseerbaar " read concern werd geïntroduceerd in MongoDb 3.4 om een ​​mogelijk probleem op te lossen met "meerderheid " Lees bezorgdheid.

Laten we proberen het probleem met "meerderheid . te begrijpen " lees bezorgdheid om te voelen wat "Lineariseerbaar " brengt ons.

Stel dat we een replicaset van 3 knooppunten hebben, die er ongeveer zo uitziet:

Waar,A is Primair,B is secundair,C is secundair

Laten we ook twee gebruikers hebben Alice en Bob , die enkele bewerkingen zal uitvoeren op het volgende document dat zich bevindt in "gebruikers " collectie.

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

Op moment moment T0:

volgende gebeurt,

  1. Alice wordt verbonden met A (primair) en geeft de volgende opdracht.

Uitgang:

  1. B en C realiseert zich dat A reageert niet meer en start verkiezingsprocedure.(Kan te wijten zijn aan netwerkpartitionering ).

Op tijdstip T1:

volgende gebeurt,

  1. Vanwege het verkiezingsproces staat B als nieuwe voorverkiezingen .

Echter, tot de tijd dat A wordt niet gecommuniceerd of A beseft zelf dat het zichzelf moet degraderen naar een secundaire, maar blijft als een primaire dienen (dit is echter over het algemeen voor een zeer korte periode).

Op moment moment T2:

  1. Bob wordt verbonden met B (nieuwe primaire) en problemen met het volgende commando.
  1. Bob is bekend met schrijven.

Op moment moment T3:

  1. Alice wordt verbonden met A (oude primaire) en problemen met het volgende commando.

Uitgang:

Alice krijgt hier de verouderde gegevens, zelfs na het uitbrengen van de meerderheid van de leesproblemen, d.w.z. het schrijven van Bob is niet zichtbaar voor Alice. Dus de eigenschap van "Lineariseerbaarheid " wordt in dit geval gecompenseerd.

Vandaar komt de oplossing, d.w.z. "lineariseerbaar " read concern. Met deze eigenschap controleert mongod zijn primaire en kan de meerderheid van de knooppunten zien voordat de resultaten van de leesbewerking worden uitgegeven. Er is echter een prestatiekostenstraf voor het gebruik van deze Read Concern over "meerderheid", dus dit is geen vervanging voor "meerderheid" lees bezorgdheid.

Over writeConcernMajorityJournalDefault eigenschap, is het slechts een configuratieoptie voor een replicaset. Het accepteert booleaanse waarde .

Waar betekent dat MongoDB de schrijfbewerking bevestigt nadat een meerderheid van de stemgerechtigde leden naar het journaal op de schijf heeft geschreven.

Onwaar betekent dat MongoDB de schrijfbewerking bevestigt nadat een meerderheid van de stemgerechtigde leden de bewerking in het geheugen heeft toegepast.

Bovenstaande eigenschap is alleen van toepassing wanneer schrijfprobleem "meerderheid" wordt gebruikt en de journaalvlag niet is opgegeven.



  1. Hoe alle overeenkomende elementen in de array in Mongo DB op te halen?

  2. Tekstzoekopdracht voor tekst anders levert altijd geen resultaten op?

  3. Fout bij het ophalen van Tweets met Tweepy

  4. 'mongorestore' wordt niet herkend als een interne of externe opdracht, bruikbaar programma of batchbestand