„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,
- Alicja zostaje połączona z A (podstawowy) i problemy po poleceniu.
Wyjście:
- 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,
- 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:
- Bob zostaje połączony z B (nowa podstawowa) i problemy po poleceniu.
- Bob otrzymuje potwierdzenie pisania.
W chwili T3:
- 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.