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

Jaki jest domyślny problem zapisu Mongod w której wersji?

Domyślny problem zapisu w MongoDB to w:1 od MongoDB 2.2 w 2012 roku.

Istnieją trzy różne ustawienia, których możesz użyć do ustawienia problemu zapisu w obecnych wersjach MongoDB (wersja 3.2.6 i nowsze):

  • w ustawienie :ile węzłów powinno potwierdzić zapis przed ogłoszeniem sukcesu. Wartość domyślna to 1, co oznacza, że ​​wystarczy potwierdzenie głównego węzła.
  • j ustawienie :czy zapisy muszą być księgowane, zanim zostaną potwierdzone? Wartość domyślna zależy od writeConcernMajorityJournalDefault .
  • writeConcernMajorityJournalDefault :jeśli określisz w:majority ustawienie problemu zapisu dla twoich zapisów bez ustawienia j , jaki jest domniemany j wartość? Wartość domyślna to true (zapisy powinny być zapisywane w dzienniku w większości węzłów głosujących, zanim zostaną potwierdzone).

Istnieje również wtimeout ustawienie aby skonfigurować, jak długo MongoDB powinien czekać na zaspokojenie problemu związanego z zapisem, zanim poinformuje klienta, że ​​zapis nie został potwierdzony. W przeciwnym razie zapisy oczekujące na zaspokojenie problemu związanego z zapisem mogą czekać w nieskończoność zamiast kończyć się niepowodzeniem.

Specjalne ustawienie to w:majority . Oznacza to, że zapisy muszą rozprzestrzeniać się do większości węzłów głosujących (a także do ich dzienników) w zestawie replik do potwierdzenia. Jest to prawdopodobnie najbezpieczniejsze ustawienie, które zapewnia dobrą wydajność, ponieważ:

  • Zapobiega wycofywaniu potwierdzonych zapisów w przypadku awarii.
  • Reguluje przepustowość aplikacji, aby nie wysyłała zapisów szybciej niż może obsłużyć zestaw replik (ze względu na ograniczenia sprzętowe, sytuację sieciową itp.).

Jak sobie wyobrażałeś, węzły głosujące zawierają arbitra . Tak więc w zestawie replik z konfiguracją główny-drugorzędny-arbiter w:majority może się nie powieść w scenariuszu, w którym:

  • Jeden z węzłów przenoszących dane jest z jakiegoś powodu offline.
  • Zestaw replik jest nadal w trybie online z zapisywalnym podstawowym, ponieważ topologia jest teraz głównym-arbiterem-offline.
  • Zapisuje za pomocą w:1 powiedzie się jak zwykle, ale te zapisy mogą zostać wycofane (ponieważ nie zostały zapisane do większości węzłów głosujących).
  • Ponieważ arbiter nie ma danych, w:majority zapisy zakończą się niepowodzeniem (lub będą czekać w nieskończoność), ponieważ arbiter jest liczony jako węzeł głosujący.

Z tego powodu korzystanie z arbitra nie jest zalecane, jeśli planujesz używać w:majority w Twojej aplikacji.

Należy pamiętać, że używanie arbitra w zestawie replik składających się z 3 węzłów, który tworzy fragment w klastrze podzielonym na fragmenty, również nie jest zalecane, ponieważ ruchy porcji wymagają użycia w:majority . Awaria węzła przenoszącego dane w jednym fragmencie będzie szkodliwa dla operacji migracji porcji.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Schema Design (tablica zagnieżdżona a oddzielna kolekcja)

  2. MongoSocketReadException:Przedwcześnie osiągnięto koniec strumienia (po okresie bezczynności)

  3. Wyszukiwanie kluczy w MongoDB bez uwzględniania wielkości liter

  4. Zestawy replik MongoDB z arbitrami

  5. MongoDB zmienia nazwę pola bazy danych w tablicy