获取收集操作序列MongoDB

问题描述 投票:0回答:1

我需要在运行时通过守护程序获取收集操作的顺序,以将其写入类似于消息代理的系统。从指定位置读取历史记录的必要功能

可能我可以通过阅读opLog来解决此问题。

  1. 使用opLog是否正确的解决方案?
  2. oplog是否包含所有数据库的记录,未按集合划分?

使用MongoDB v4.2

mongodb mongodb-oplog
1个回答
0
投票

使用opLog是否正确的解决方案?

oplog格式是内部的,旨在支持复制。作为一种内部格式,它可能会在主要服务器版本之间进行更改,并且不易使用。

您应该改为使用基于操作日志的Change Streams API,并允许在集合,数据库或部署级别订阅数据更改。与直接oplog访问不同,更改流具有文档化的API,可以受访问控制限制,可以对流输出进行一些过滤和修改,并且可以扩展以支持副本集和分片群集。如果中断,更改流也可以be resumed

从指定位置读取历史记录的必要能力

在MongoDB 4.0+中更改流,您可以指定startAtOperationTime在特定时间打开光标。如果指定的起点是过去的时间,则必须在操作日志的时间范围内。

oplog是否包含所有数据库的记录,未按集合划分?

oplog是一个capped collection,其中包含副本集或分片的所有数据更改的滚动历史记录。收集上限设置意味着操作日志的历史记录窗口有限:一旦达到最大操作日志大小,则将删除最旧的条目以为新文档腾出空间。 local.oplog.rs数据未按集合或名称空间过滤。

© www.soinside.com 2019 - 2024. All rights reserved.