【发布时间】:2015-04-07 00:27:03
【问题描述】:
我以前看过这个问题,但答案很模糊。我一直在对 oplog 进行一些研究,并试图准确了解它是如何工作的。特别是,我想对 oplog 文档中的字段以及它们存储的数据有一个很好的了解。
这些是我通过测试发现的字段以及我认为它们的含义以及我仍然不确定的含义:
- ts:写操作/oplog条目的时间戳
- h:oplog 条目的唯一标识符(但为什么有时为正有时为负?)
- op:执行的操作类型(通常 i/u/d 用于插入、更新或删除)
- ns:数据库和集合受到影响
- o:执行更改后文档的新状态
- o2:似乎在更新操作期间包含文档的 _id 字段。当同一字段作为 o 字段的一部分存在时,为什么需要这样做,该字段还包含文档的其余部分?
- b:似乎是为删除操作出现的布尔值。这个领域有什么意义?
我想确认我上面的观点是否准确,以及对不清楚的地方的澄清。我也有兴趣知道 oplog 文档中是否还有其他字段。
【问题讨论】:
-
大部分是 stackoverflow.com/questions/17878835/… 的副本,但那个 b 字段:似乎没有人真正知道它是什么,而且似乎没有记录。
-
SO 链接有正确的 AFAIK 描述。 oplog 的格式没有记录是有意的,因为它是一个实现细节,而 MongoDB 希望保留调整或完全更改 oplog 机制的能力。记录它会产生期望,无论是否有意。
-
v呢? v 似乎很重要 -> 文档的版本?每次更新都会增加?
标签: mongodb