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

Czy wykonanie częściowej aktualizacji dokumentu MongoDb w WiredTiger zapewnia jakąkolwiek przewagę nad pełną aktualizacją dokumentu?

WiredTiger używa Multiversion Concurrency Control (MVCC) aby zachować wiele widoków danych przez cały okres życia czytelników. Format w pamięci WiredTiger różni się od formatu na dysku:w pamięci przechowuje różnice w stosunku do dokumentu, ale pełna wersja dokumentu jest tworzona po opróżnieniu do plików danych w ramach okresowych punktów kontrolnych.

Niezależnie od tego, w jaki sposób różne silniki pamięci masowej MongoDB obsługują aktualizacje trwałe na dysku, nadal istnieją korzyści w zakresie wydajności wynikające z korzystania z częściowych aktualizacji zamiast pełnych aktualizacji tam, gdzie to możliwe (szczególnie, jeśli ustawiasz wartości pól, które są małe w stosunku do całkowitego rozmiaru dokumentu).

Na przykład rozważ:

  • Ruch sieciowy związany z aktualizacjami dokumentów (dowolny silnik pamięci masowej)
  • Rozmiar wpisów w dzienniku (dowolny silnik pamięci)
  • Rozmiar wpisów w oplogu replikacji (dowolny silnik pamięci masowej)
  • Rozmiar aktualizacji w pamięci (WiredTiger)

Jeśli za każdym razem wysyłasz pełne aktualizacje dokumentów, tworzysz również scenariusze, w których kolejność, z jaką aktualizacje docierają do serwera, jest istotna, nawet jeśli zmiany mogą dotyczyć różnych zestawów pól. Możesz dodać dodatkową logikę aplikacji, taką jak optymistyczne wersjonowanie, aby upewnić się, że przypadkowo nie nadpiszesz wartości pól, ale może to niepotrzebnie zwiększyć złożoność w zależności od przypadku użycia.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak przekonwertować zestaw replik MongoDB na samodzielny serwer?

  2. MongoDB $anyElementTrue

  3. Wiele wyrażeń $elemMatch do dopasowywania wartości tablicy przy użyciu $all w MongoDB?

  4. MongoDB $dayOfYear

  5. Usuwanie najnowszego dokumentu z Mongo DB w jednym zapytaniu