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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MongoDB 3.6之前阅读您自己的写入一致性相关的知识,希望对你有一定的参考价值。

我正在阅读mongodb的文档,我正在尝试理解在引入Mongo 3.6的因果一致性会话之前“阅读自己的写入”一致性的必要性。

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

在MongoDB 3.6之前,您必须使用{w:“most”}写入问题发出写入操作,然后对读取操作使用“多数”或“线性化”读取关注点,以确保单个线程可以读取其自己的写入。

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

Mongo DB Read Concern Example Diagram

在该图中,在时间t3,写入被确认。在收到写入确认后,majority读取t4中的任何一个第二个值将返回旧值,这与第一个声明“单个线程可以读取其自己的写入”相矛盾,只要您使用majority写入+读取关注。

如果该声明被修改为“从主要读取多数或线性化的关注”,我认为这将成为现实......但是,我想知道我是否误解了某些事情。

有人可以提供有关的见解:

a)本文档的含义,以及

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

谢谢!

答案

当我准备提出与你完全相同的问题时,我找到了你的机票。我认为MongoDB文档中的这个声明是不正确的。没有因果一致性会话的双重“多数”不能保证“读取您自己的写入”语义。据我所知,在3.6之前,读取关注线性化可以提供这种语义与写入关注多数。

以上是关于在MongoDB 3.6之前阅读您自己的写入一致性的主要内容,如果未能解决你的问题,请参考以下文章

将 Mongodb 从 3.2 升级到 3.6 时出错

MongoDB 3.6搭建副本集

MongoDB 写入策略与读一致性

MongoDB面试指南之并发

复习MongoDB选举机制

Mongodb复制集