sql >> Database >  >> NoSQL >> MongoDB

Hoe gaat MongoDB om met gelijktijdige updates?

MongoDB gebruikte een procesbrede schrijfvergrendeling om te garanderen dat slechts één schrijfbewerking (bijwerken/invoegen/verwijderen) tegelijk kan worden uitgevoerd. Als zodanig lost het automatisch gelijktijdigheidsproblemen op, aangezien gelijktijdig schrijven gewoon niet is toegestaan.

Als 4 threads een update-bewerking proberen, zal een van hen de schrijfvergrendeling overnemen, de update uitvoeren en de vergrendeling vrijgeven. Daarna zal een van de overige 3 het slot pakken, de update uitvoeren, enz.

Gelijktijdigheid speelt alleen een rol als uw bewerking niet kan worden verpakt in een enkele schrijfbewerking. Merk op dat voor de meest voorkomende usecase (zoek een document, update het en pak de nieuwe versie atomair) MongoDB de opdracht "findAndModify" biedt die precies dat doet:http://www.mongodb.org/display/DOCS/findAndModify+Command

UPDATE:vergrendelen is tegenwoordig gedetailleerder.



  1. MongoDb-queryvoorwaarde bij het vergelijken van 2 velden

  2. Memcache v/s redis voor het onderhouden van aanhoudende sessies?

  3. mongoengine - Zoekopdracht op ListField of EmbeddedDocumentField

  4. Waarom voegt mijn schema geen standaardwaarden toe aan mangoestarrays?