MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

A diferença entre maioria e linearizável


"Linearizável A preocupação de leitura foi introduzida no MongoDb 3.4 para resolver um possível problema com "maioria "Leia preocupação.

Vamos tentar entender o problema com "maioria " leia a preocupação para sentir o que "Linearizável " traz para nós.

Suponha que tenhamos um conjunto de réplicas de 3 nós, que se parece com isso:



Onde,A é Primário,B é Secundário,C é secundário

Vamos também ter dois usuários Alice e Bob , que realizará algumas operações no seguinte documento que reside em "usuários " coleção.
{
 "_id": 100234,
 "name": "Katelyn"
}

No instante de tempo T0:


acontece o seguinte,
  1. Alice se conecta a A (primário) e problemas após o comando.

Resultado:
  1. B e C percebe que A parou de responder e inicia o procedimento de eleição.(Pode ser devido ao particionamento da rede ).

No instante de tempo T1:


acontece o seguinte,
  1. Devido ao processo eleitoral, B permanece como nova primária .

No entanto, até o momento A não é comunicado ou A se percebe que precisa se rebaixar para um secundário, continua servindo como primário (em geral, isso ocorre por um período muito pequeno de tempo).


No instante de tempo T2:

  1. Bob se conecta a B (novo primário) e problemas após o comando.
  1. Bob é reconhecido por escrever.

No instante de tempo T3:

  1. Alice se conecta a A (antigo primário) e problemas após o comando.

Resultado:

Alice aqui obtém os dados obsoletos mesmo depois de emitir a preocupação de leitura majoritária, ou seja, a gravação feita por Bob não é visível para Alice. Assim, a propriedade de "Linearizabilidade " é compensado neste caso.

Daí vem a solução, ou seja, "linearizável " read concern. Com esta propriedade, o mongod verifica seu primário e pode ver a maioria dos nós antes de emitir os resultados da operação de leitura. "maioria" leia preocupação.

Em relação a writeConcernMajorityJournalDefault propriedade, é apenas uma opção de configuração do conjunto de réplicas. Ele aceita valor booleano .

Verdadeiro Ou seja, o MongoDB reconhece a operação de gravação após a maioria dos membros votantes ter gravado no diário em disco.

Falso Isso significa que o MongoDB reconhece a operação de gravação depois que a maioria dos membros votantes aplicou a operação na memória.

A propriedade acima é aplicável somente quando a preocupação de escrita "majority" é usada e o sinalizador de registro no diário não é especificado.