MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Różnica między większością a linearyzowalnym

Linearyzowalny w MongoDb 3.4 wprowadzono obawy dotyczące odczytu w celu rozwiązania możliwego problemu z „większością " Przeczytaj obawy.

Spróbujmy zrozumieć problem z „większością " przeczytaj troskę, aby wyczuć, co "Linearyzowalne " przynosi nam.

Załóżmy, że mamy zestaw 3 węzłów, który wygląda mniej więcej tak:

Gdzie,A jest podstawowym,B jest drugorzędny,C jest drugorzędny

Miejmy również dwóch użytkowników Alice i Bob , który będzie wykonywał pewne operacje na następującym dokumencie znajdującym się w grupie „użytkownicy " kolekcja.

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

W chwili T0:

dzieje się następujące,

  1. Alicja zostaje połączona z A (podstawowy) i problemy po poleceniu.

Wyjście:

  1. B i C zdaje sobie sprawę, że A przestał odpowiadać i rozpoczyna procedurę wyboru.(Może być z powodu partycjonowania sieci ).

W chwili T1:

dzieje się następujące,

  1. Ze względu na proces wyborczy B jest nową prawyborą .

Jednak do czasu A nie jest przekazywany lub A sam zdaje sobie sprawę, że musi zdegradować się do poziomu drugorzędnego, nadal służy jako główny (choć zazwyczaj jest to bardzo krótki czas).

W chwili T2:

  1. Bob zostaje połączony z B (nowa podstawowa) i problemy po poleceniu.
  1. Bob otrzymuje potwierdzenie pisania.

W chwili T3:

  1. Alicja zostaje połączona z A (stara podstawa) i problemy z wykonaniem polecenia.

Wyjście:

Alicja otrzymuje tutaj nieaktualne dane nawet po zgłoszeniu problemu odczytu większości, tzn. zapis dokonany przez Boba nie jest widoczny dla Alicji. Zatem właściwość „Linearyzacja ” jest w tym przypadku kompensowana.

Stąd pojawia się rozwiązanie, tj. „linearyzowalny problem odczytu. Dzięki tej właściwości mongod sprawdza jej podstawową wartość i widzi większość węzłów przed wydaniem wyników operacji odczytu. Istnieje jednak kara kosztu wydajności korzystania z tego problemu odczytu nad „większością”, dlatego nie jest to zamiennik dla „większość” dotyczy czytania.

Odnośnie writeConcernMajorityJournalDefault jest to tylko opcja konfiguracji zestawu replik. Przyjmuje wartość logiczną .

Prawda oznacza, że ​​MongoDB potwierdza operację zapisu po tym, jak większość głosujących członków napisze do dziennika na dysku.

Fałsz oznacza, że ​​MongoDB potwierdza operację zapisu po zastosowaniu tej operacji w pamięci przez większość członków głosujących.

Powyższa właściwość ma zastosowanie tylko wtedy, gdy użyto opcji „większość” zapisu i nie określono flagi dziennika.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Błąd Mongod (zainstalowany z homebrew)

  2. Dlaczego otrzymuję nierozpoznany argument do dateFromString:„format” pomimo posiadania wersji db> 3.6, która obsługuje agregację

  3. Sterownik Node.js mongodb asynchroniczny/await zapytania

  4. Mongoose zapełnia zwracając pustą tablicę

  5. Zwróć zakres dokumentów wokół ID w MongoDB