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

Giver udførelse af en delvis opdatering på et MongoDb-dokument i WiredTiger nogen fordel i forhold til en fuld dokumentopdatering?

WiredTiger bruger Multiversion Concurrency Control (MVCC) at bevare flere visninger af data i hele læserens levetid. WiredTigers in-memory-format er forskelligt fra on-disk-formatet:i hukommelsen gemmer det diffs til et dokument, men en fuld version af dokumentet er konstrueret, når det skylles til datafilerne som en del af periodiske kontrolpunkter.

Uanset hvordan forskellige MongoDB-lagringsmotorer håndterer vedvarende opdateringer til disken, er der stadig ydeevnefordele ved at bruge delvise opdateringer frem for fulde opdateringer, hvor det er muligt (især hvis du indstiller feltværdier, der er små i forhold til den samlede dokumentstørrelse).

Overvej f.eks.:

  • Netværkstrafik til dokumentopdateringer (enhver lagringsmotor)
  • Størrelse på poster i journalen (enhver lagermotor)
  • Størrelse på poster i replikeringsoplog (enhver lagermotor)
  • Størrelse af opdateringsversioner i hukommelsen (WiredTiger)

Hvis du sender komplette dokumentopdateringer hver gang, opretter du også scenarier, hvor rækkefølgen af ​​opdateringer når serveren er betydelig, selv når ændringer kan være for forskellige feltsæt. Du kan tilføje yderligere applikationslogik såsom optimistisk versionering for at sikre, at du ikke ved et uheld overskriver feltværdier, men dette kan tilføje unødvendig kompleksitet afhængigt af din brugssituation.




  1. Redis indsættelse ude af drift, eller sorterer mærkeligt?

  2. Unikt indeks ignoreret ved opdatering med Mongoose + Mockgoose i NodeJS

  3. Sådan forespørges en dynamisk nøgle - mongodb skemadesign

  4. MongoDB $arrayToObject