【发布时间】:2021-01-31 16:49:50
【问题描述】:
我们在事件源项目中使用 Mongo 作为事件存储。我们的数据库只有一个副本仅用于支持事务,我们不会使用多副本、分片或 Mongo 的任何其他高级功能。
为了将事件投影到报告表的想法中,我们需要能够从历史中的任何点永久恢复“更改流”。我们只需要插入的历史,不再需要
为此,我们将恢复令牌和每次插入的操作时间连同它的 id 一起存储在一个单独的集合中,当我们想从历史中的某个插入恢复时,我们查询并找到确切的恢复令牌和我们从那里恢复它
这会导致一系列问题: 1-通过更改流存储恢复令牌和每次插入的操作时间是脆弱的,也需要存储,但有效!!!
2-我们最近达到了 oplog 的大小,发现 oplog 可以恢复,所以为了能够从历史中的任何点恢复,我们必须在应用程序的整个生命周期中存储并保留整个 oplog,但是 oplog 的大小每 2 小时就会达到最大容量! 所以无法保存oplog!
我们应该怎么做? 似乎除了在 Mongo 上实现历史变化流之外别无他法。
【问题讨论】:
标签: mongodb