【问题标题】:Is MongoDB ChangeStream ResumeToken unique globally?MongoDB ChangeStream ResumeToken 是全球唯一的吗?
【发布时间】:2018-08-24 02:54:31
【问题描述】:

正如文档(https://docs.mongodb.com/manual/changeStreams/)所说,我们可以使用 resumeToken 恢复从 MongoDB 获取事件。

我会将最近的 resumeToken 存储到公共存储中,但我不确定这个 resumeToken 是否在全球范围内是唯一的。 我想知道它对于整个收藏或每个收藏都是独一无二的。

好像使用了UUID (https://github.com/mongodb/mongo/blob/master/src/mongo/db/pipeline/resume_token.h#L61)..

谢谢

【问题讨论】:

  • 你能解释一下globally 是什么意思吗?您是指来自不同 MongoDB 集群的令牌,还是指来自多个集合但来自单个 MongoDB 集群的令牌?
  • @WanBachtiar 我的意思是来自单个集群中多个集合的案例。

标签: mongodb changestream


【解决方案1】:

resumeToken 在单个 MongoDB 部署集群中是唯一的。 MongoDB change streams 使用全局逻辑时钟。服务器将集群时间编码为resumeToken 的前缀值,从而可以安全地按照接收到的顺序解释更改流通知。

从 MongoDB v4.0 开始,您可以为部署打开更改流游标,以监视所有数据库中所有非系统集合的更改,adminlocalconfig 除外。

【讨论】:

  • 感谢您的回答。我们的系统是v4.0,但fcv是3.6,所以我不能使用你说的数据库订阅。谢谢!
  • @Wan Bachtiar 我不这么认为。以我的经验,如果我对 mongodb 进行批量插入,例如在第二个插入 100 个文档之内,那么在更改流侦听器中,每个文档的 resumeToken 不是唯一的。只有 3 或 4 个不同的令牌会在那里。我使用的是版本 - 3.6
猜你喜欢
  • 2023-04-09
  • 2023-03-19
  • 1970-01-01
  • 2020-02-16
  • 2018-04-08
  • 2017-05-02
  • 2015-07-28
  • 1970-01-01
  • 2021-01-04
相关资源
最近更新 更多