读你自己的写在MongoDB中的一致性

读你自己的写在MongoDB中的一致性

本文介绍了读你自己的写在MongoDB中的一致性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先,这里是什么是在<一说href=\"http://api.mongodb.org/python/current/examples/requests.html?highlight=read%20you%20own%20write\"> Pymongo文档

first, here is what is said in Pymongo Documentation

在默认情况下,PyMongo当线程第一次运行在MongoDB的操作开始为每个线程的请求。这保证了 **读你 - 写一致性。内的请求时,该线程将继续只使用相同的插座,并没有其他线程将使用该套接字,直到线程调用END_REQUEST()或它终止。在这一点上,插座被返回到对于其他线程使用连接池。

所以使用异步库MongoDB的时候(如Asyncmongo,汽车),将用户有这样一个在阻塞调用或最终一致性一致性?

so when using an async library to Mongodb (like Asyncmongo, Motor), will the user have a consistency like the one in blocking calls or an eventual consistency?

推荐答案

有几个点的这个问题。


  1. 您不能保证已经阅读-后写,除非你使用的一致性或者安全=真正的 W = 1(或更高版本)或J =真正的你写。您可以包含这些为() update()方法插入的部分或命令,或者使用 set_lasterror_options()设置这些选项进行连接,数据库或集合,您使用。

  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.

如果你允许从辅助节点读取,(如高于原以外的阅读preference),那么您将无法获得读写后的语义,但只有最终一致性。

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.

如果您使用的是小学读preference和你设置适当的lasterror选项,那么你保证得到在使用相同套接字的所有操作读写后语义,即,在同一线程

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.

如果您正在使用多个线程,你是不是从辅助节点读书,那么你保证得到读取后写只要一致性您发出的第二个线程读取写入后完成在第一线程。您可以使用标准的线程同步原语来保证这一点。

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.

这篇关于读你自己的写在MongoDB中的一致性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 11:19