MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

L'esecuzione di un aggiornamento parziale su un documento MongoDb in WiredTiger offre vantaggi rispetto a un aggiornamento completo del documento?

WiredTiger utilizza Multiversion Concurrency Control (MVCC) per mantenere più visualizzazioni dei dati per tutta la vita dei lettori. Il formato in memoria di WiredTiger è diverso dal formato su disco:in memoria memorizza le differenze in un documento, ma una versione completa del documento viene costruita quando scaricata nei file di dati come parte di checkpoint periodici.

Indipendentemente dal modo in cui i diversi motori di archiviazione MongoDB gestiscono gli aggiornamenti persistenti su disco, ci sono comunque vantaggi in termini di prestazioni nell'utilizzo di aggiornamenti parziali anziché aggiornamenti completi ove possibile (in particolare se si impostano valori di campo piccoli rispetto alle dimensioni complessive del documento).

Ad esempio, considera:

  • Traffico di rete per gli aggiornamenti dei documenti (qualsiasi motore di archiviazione)
  • Dimensione delle voci nel diario (qualsiasi motore di archiviazione)
  • Dimensione delle voci nel oplog di replica (qualsiasi motore di archiviazione)
  • Dimensione delle versioni in memoria degli aggiornamenti (WiredTiger)

Se invii ogni volta aggiornamenti di documenti completi, crei anche scenari in cui l'ordine in cui gli aggiornamenti raggiungono il server è significativo anche quando le modifiche potrebbero riguardare insiemi di campi distinti. Puoi aggiungere ulteriore logica dell'applicazione come il controllo delle versioni ottimistico per assicurarti di non sovrascrivere accidentalmente i valori dei campi, ma ciò potrebbe aggiungere complessità non necessaria a seconda del tuo caso d'uso.