阅读关注“本地”

读取关注为"local"的查询从实例返回数据,但不能保证数据已被写入大多数副本集成员(即可以回滚)。

阅读关注"local"是以下情况的默认值:

  • 针对主要对象的读取操作

  • 如果读取与因果一致的会话关联,则针对次要对象的读取操作。

无论read concern级别如何,节点上的最新数据都可能无法反映系统中数据的最新版本。

因果一致的会话

阅读关注local可用于因果一致的会话。

Example

考虑以下写入三个成员副本集的操作 Write0 的时间轴:

Note

为了简化,该示例假定:

  • Write0 之前的所有写操作已成功复制到所有成员。

  • Writeprev 是 Write0 之前的上一次写入。

  • Write0 之后未发生其他写操作。

对三个成员副本集的写操作的时间轴。

TimeEvent最近写最新 w:“多数”写道
t0主要适用 Write0小学 :写 0

中学 1:写上一页
中学 2:写上一页
小学 :写上一页
中学 1:写上一页
中学 2:写上一页
t1中学 1 应用 write0小学 :写 0
中学 1:写 0
中学 2:写上一页
小学 :写上一页
中学 1:写上一页
中学 2:写上一页
t2辅助 2 应用 write0主要 :写 0
中学 1:写 0
中学 2:写 0
小学 :写上一个
中学 1:写上一页
中学 2:写上一页
t3Primary 知道成功复制到 Secondary1 并将确认发送给 Client 端Primary :写 0
中学 1:写 0
中学 2:写 0
小学 :写 0
中学 1:写上一页
中学 2:写上一页
t4Primary 知道成功复制到 Secondary2Primary :写 0
中学 1:写 0
中学 2:写 0
小学 :写 0
中学 1:写上一页
中学 2:写上一页
t5Secondary1 收到通知(通过常规复制机制)以更新其最新 w 的快照:“多数”写主要 :写 0
中学 1:写 0
中学 2:写 0
小学 :写 0
中学 1:写 0
中学 2:写上一页
t6Secondary2 收到通知(通过常规复制机制)以更新其最近 w 的快照:“多数”写主要 :写 0
中学 1:写 0
中学 2:写 0
小学 :写 0
中学 1:写 0
中学 2:写 0

然后,下表总结了在时间T时具有"local"读关注的读操作将看到的数据状态。

对三个成员副本集的写操作的时间轴。

Read Target时间T数据状态
PrimaryAfter t0数据反映 Write0.
Secondary1Before t1数据反映 Writeprev
Secondary1After t1数据反映 Write0
Secondary2Before t2数据反映 Writeprev
Secondary2After t2数据反映 Write0