MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

La differenza tra maggioranza e linearizzabile

"Linearizzabile " read problema è stato introdotto in MongoDb 3.4 per risolvere un possibile problema con "maggioranza " Leggi preoccupazione.

Proviamo a capire il problema con la "maggioranza " leggi preoccupazione per percepire cosa "Linearizzabile " ci porta.

Supponiamo di avere un replicaset di 3 nodi, che assomiglia a questo:

Dove,A è Principale,B è Secondaria,C è secondario

Consente anche di avere due utenti Alice e Bob , che eseguirà alcune operazioni sul seguente documento che risiede in "utenti " raccolta.

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

Al tempo istante T0:

segue,

  1. Alice si collega a A (primario) e problemi dopo il comando.

Uscita:

  1. B e C si rende conto che A ha smesso di rispondere e ha avviato la procedura di elezione.(Potrebbe essere dovuto al partizionamento della rete ).

Al tempo istante T1:

segue,

  1. A causa del processo elettorale, B si presenta come una nuova primaria .

Tuttavia, fino al momento A non viene comunicato o A si rende conto che deve retrocedere a un secondario e continua a servire come primario (questo generalmente è per un periodo di tempo molto breve).

Al tempo istante T2:

  1. Bob si collega a B (nuova primaria) e problemi dopo il comando.
  1. A Bob viene riconosciuto di scrivere.

Al tempo istante T3:

  1. Alice si collega a A (vecchia primaria) e problemi dopo il comando.

Uscita:

Alice qui ottiene i dati non aggiornati anche dopo aver emesso il problema di lettura della maggioranza, ovvero la scrittura effettuata da Bob non è visibile ad Alice. Pertanto, la proprietà di "Linearizzabilità " è risarcito in questo caso.

Quindi, arriva la soluzione, ovvero "linearizzabile " read preoccupazione. Con questa proprietà, mongod controlla il suo primario e può vedere la maggior parte dei nodi prima di emettere i risultati dell'operazione di lettura. Tuttavia, c'è una penalità in termini di costo delle prestazioni dell'utilizzo di questa lettura preoccupazione rispetto alla "maggioranza", quindi questo non è un sostituto per "maggioranza" legge preoccupazione.

Riguardo a writeConcernMajorityJournalDefault proprietà, è semplicemente un'opzione di configurazione del set di repliche. Accetta valore booleano .

Vero significa che MongoDB riconosce l'operazione di scrittura dopo che la maggioranza dei membri votanti ha scritto sul diario su disco.

Falso significa che MongoDB riconosce l'operazione di scrittura dopo che la maggioranza dei membri votanti ha applicato l'operazione in memoria.

La proprietà di cui sopra è applicabile solo quando viene utilizzato il problema di scrittura "maggioranza" e il flag di journaling non è specificato.