在MongoDB 3.6之前先阅读自己的写一致性

时间:2018-09-18 08:40:55

标签: mongodb mongodb-query consistency data-consistency

我正在阅读mongdb的文档,并且在尝试引入Mongo 3.6的因果一致性会话之前,我想了解什么是“读自己的写”一致性所必需的。

根据此页面:https://docs.mongodb.com/manual/reference/read-concern-majority/#read-your-own-writes

  

在MongoDB 3.6之前,您必须使用{w:“ majority”}发出您的写操作,然后对读取操作使用“ majority”或“ linearizable”读取关注,以确保单个线程可以读取自己写。

但是,在他们在上述同一页面(https://docs.mongodb.com/manual/reference/read-concern-majority/#example)上提供的示例中,似乎有一些与此不同的信息。具体来说,它们有一个图表(我在下面复制了该图表):

Mongo DB Read Concern Example Diagram

在该图中,在时间t3处,写入被确认。在收到写入确认后,在第4时刻majority读取对任何一个辅助节点的关注将返回旧值,这与第一个主张“只要一个线程可以读取其自身的写入”相矛盾。 majority写+阅读问题。

如果将声明修改为“从主要或线性化问题的主要问题中读到的”,我认为这将成为事实……但是,我想知道我是否误解了。

有人可以提供以下方面的见识吗?

a)本文档的含义,以及

b)如何在3.6的因果会话之前获取自己的写语义?

谢谢!

1 个答案:

答案 0 :(得分:-1)

当我要提出与您完全相同的问题时,我找到了您的票。 我认为MongoDB文档中的这一说法不正确。没有因果一致性会话的双重“多数”不能保证“读自己写”的语义。 据我了解,在3.6版之前,线性读关注可以为大多数写关注提供这种语义。