Read-your-own-writes consistency in Mongodb

前端 未结 2 975
轻奢々
轻奢々 2021-02-20 15:13

first, here is what is said in Pymongo Documentation

By default, PyMongo starts a request for each thread when the thread first runs an operation on Mong

2条回答
  •  旧时难觅i
    2021-02-20 15:47

    There are a couple of points about this question.

    1. You aren't guaranteed to have read-after-write consistency unless you're using either "safe=true", "w=1" (or greater) or "j=true" with your write. You can either include these as part of the insert() or update() commands, or else use set_lasterror_options() to set these options for the connection, database, or collection that you're using.

    2. If you're allowing reads from secondary nodes, (e.g. a ReadPreference other than PRIMARY), then you will not get read-after-write semantics, but only eventual consistency.

    3. If you are using a ReadPreference of PRIMARY and you're setting the appropriate lasterror options, then you're guaranteed to get read-after-write semantics on all operations that use the same socket, that is, the same thread.

    4. If you're using multiple threads, and you are NOT reading from secondary nodes, then you're guaranteed to get read-after-write consistency as long as you issue the read in the second thread after the write completes in the first thread. You can use standard thread synchronization primitives to assure this.

提交回复
热议问题