sql >> Databáze >  >> NoSQL >> MongoDB

Jaká je výchozí obava o zápis mongod ve které verzi?

Výchozí starost o zápis v MongoDB byla w:1 již od MongoDB 2.2 v roce 2012.

Existují tři různá nastavení, která můžete použít k nastavení obav o zápis v aktuálních verzích MongoDB (verze 3.2.6 a novější):

  • w nastavení :kolik uzlů by mělo zápis potvrdit, než jej prohlásí za úspěšné. Výchozí hodnota je 1, což znamená, že potvrzení primárního uzlu je dostatečné.
  • j nastavení :musí být zápisy před potvrzením zapsány do deníku? Výchozí závisí na writeConcernMajorityJournalDefault .
  • writeConcernMajorityJournalDefault :pokud zadáte w:majority nastavení obav o zápis pro vaše zápisy bez nastavení j , co je implikované j hodnota? Výchozí hodnota je true (zápisy by měly být žurnálovány ve většině hlasovacích uzlů, než budou potvrzeny).

K dispozici je také wtimeout nastavení konfigurovat, jak dlouho má MongoDB čekat na uspokojení obav o zápis, než bude klienta informovat, že zápis nebyl potvrzen. V opačném případě mohou zápisy čekající na uspokojení starostí o zápis čekat věčně, místo aby selhaly.

Speciální nastavení je zde w:majority . To znamená, že zápisy se musí rozšířit na většinu hlasovacích uzlů (a také do jejich deníků) v sadě replik, které mají být potvrzeny. Toto je pravděpodobně nejbezpečnější nastavení a zároveň poskytuje dobrý výkon, protože:

  • Zabraňuje tomu, aby byly potvrzené zápisy vráceny zpět v případě selhání.
  • Reguluje propustnost aplikace tak, aby neodesílala zápisy rychleji, než kolik zvládne sada replik (kvůli hardwarovým omezením, situaci v síti atd.).

Jak jste si představili, hlasovací uzly zahrnují arbitra . V sadě replik s nastavením primárního a sekundárního arbitra tedy w:majority může selhat ve scénáři, kde:

  • Jeden z uzlů nesoucích data je z nějakého důvodu offline.
  • Sada replik je stále online s primárním zápisem, protože topologie je nyní primární-arbiter-offline.
  • Píše pomocí w:1 uspěje jako obvykle, ale tyto zápisy lze vrátit zpět (protože nebyly zapsány do většiny hlasovacích uzlů nesoucích data).
  • Protože rozhodčí nepřenáší žádná data, w:majority zápis selže (nebo čeká neomezeně dlouho), protože rozhodce se počítá jako hlasovací uzel.

Z tohoto důvodu se použití arbitra nedoporučuje, pokud plánujete použít w:majority ve vaší aplikaci.

Vezměte prosím na vědomí, že použití arbitra v sadě replik se 3 uzly, které tvoří útržek ve štěpeném clusteru, se také nedoporučuje, protože přesuny po částech vyžadují w:majority . Selhání datového uzlu v jednom fragmentu bude pro operace migrace bloků škodlivé.



  1. 3 způsoby, jak vrátit náhodný vzorek dokumentů ze sbírky MongoDB

  2. seřadit podle délky řetězce v Mongodb/pymongo

  3. Co dělat a co nedělat Apache HBase

  4. MongoDB odebírá prvky v závislosti na všech ostatních prvcích (opakování)