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

Poskytuje provedení částečné aktualizace dokumentu MongoDb ve WiredTiger nějakou výhodu oproti úplné aktualizaci dokumentu?

WiredTiger používá Multiversion Concurrency Control (MVCC) zachovat vícenásobné zobrazení dat po celou dobu životnosti čtenářů. Formát v paměti WiredTiger se liší od formátu na disku:v paměti ukládá diffy k dokumentu, ale plná verze dokumentu se vytvoří, když se vyprázdní do datových souborů jako součást pravidelných kontrolních bodů.

Bez ohledu na to, jak různé moduly úložiště MongoDB zpracovávají přetrvávající aktualizace na disku, stále existují výhody při používání částečných aktualizací namísto úplných aktualizací, kde je to možné (zejména pokud nastavujete hodnoty polí, které jsou malé vzhledem k celkové velikosti dokumentu).

Zvažte například:

  • Síťový provoz pro aktualizace dokumentů (jakýkoli úložný modul)
  • Velikost záznamů v deníku (jakýkoli úložný modul)
  • Velikost položek v oplog replikace (jakýkoli úložný modul)
  • Velikost verzí aktualizací v paměti (WiredTiger)

Pokud pokaždé posíláte úplné aktualizace dokumentu, vytváříte také scénáře, kde je pořadí, které se aktualizace dostanou na server, významné, i když se změny mohou týkat různých sad polí. Můžete přidat další aplikační logiku, jako je optimistické verzování, abyste zajistili, že nedojde k náhodnému přepsání hodnot polí, ale to může přidat zbytečnou složitost v závislosti na vašem případu použití.




  1. Dotaz s formátem data řetězce v mongodb

  2. Jak používat mangoose findOne

  3. Hromadná operace MongoDb získat id

  4. Příkaz Redis pro získání všech dostupných klíčů?