sql >> Databasteknik >  >> NoSQL >> MongoDB

Ger en deluppdatering av ett MongoDb-dokument i WiredTiger någon fördel jämfört med en fullständig dokumentuppdatering?

WiredTiger använder Multiversion Concurrency Control (MVCC) att upprätthålla flera vyer av data under läsarnas livstid. WiredTigers minnesformat skiljer sig från formatet på disken:i minnet lagras diffs i ett dokument, men en fullständig version av dokumentet konstrueras när det spolas till datafilerna som en del av periodiska kontrollpunkter.

Oavsett hur olika MongoDB-lagringsmotorer hanterar kvarstående uppdateringar till disk, finns det fortfarande prestandafördelar med att använda partiella uppdateringar snarare än fullständiga uppdateringar där det är möjligt (särskilt om du ställer in fältvärden som är små i förhållande till den totala dokumentstorleken).

Tänk till exempel på:

  • Nätverkstrafik för dokumentuppdateringar (valfri lagringsmotor)
  • Storlek på poster i journalen (valfri lagringsmotor)
  • Storleken på poster i replikeringsoploggen (valfri lagringsmotor)
  • Storleken på minnesversioner av uppdateringar (WiredTiger)

Om du skickar fullständiga dokumentuppdateringar varje gång skapar du också scenarier där ordningen som uppdateringar når servern är betydande även när ändringar kan vara för distinkta fältuppsättningar. Du kan lägga till ytterligare programlogik som optimistisk versionshantering för att säkerställa att du inte skriver över fältvärden av misstag, men detta kan lägga till onödig komplexitet beroende på ditt användningsfall.




  1. Hur beräknar jag ett vägt medelvärde i mongoDB med aggregeringsramverk?

  2. Behåll ID-egenskapens namn i inbäddat dokument med mongo C#-drivrutinen

  3. Mongodb x.509 "Inget verifierat ämnesnamn tillgängligt från klienten"

  4. TypeError:Kan inte använda operatorn 'in' för att söka efter '_id' i hane