MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Read-Your-Own-Writes-Konsistenz in Mongodb

Es gibt ein paar Punkte zu dieser Frage.

  1. Sie haben keine garantierte Read-after-Write-Konsistenz, es sei denn, Sie verwenden entweder "safe=true" , "w=1" (oder höher) oder "j=true" mit deinem schreiben. Sie können diese entweder als Teil von insert() oder update() einfügen Befehle, oder verwenden Sie andernfalls set_lasterror_options() um diese Optionen für die Verbindung, Datenbank oder Sammlung festzulegen, die Sie verwenden.

  2. Wenn Sie Lesevorgänge von sekundären Knoten zulassen (z. B. eine andere ReadPreference als PRIMARY), erhalten Sie keine Read-after-Write-Semantik, sondern nur Eventual Consistency.

  3. Wenn Sie eine ReadPreference von PRIMARY verwenden und die entsprechenden lasterror-Optionen setzen, erhalten Sie garantiert Read-after-Write-Semantik für alle Operationen, die denselben Socket verwenden, dh denselben Thread.

  4. Wenn Sie mehrere Threads verwenden und NICHT von sekundären Knoten lesen, erhalten Sie garantiert Read-after-Write-Konsistenz, solange Sie den Lesevorgang im zweiten Thread ausgeben, nachdem der Schreibvorgang im ersten Thread abgeschlossen ist. Sie können Standard-Thread-Synchronisationsprimitive verwenden, um dies sicherzustellen.