使用MongoDB管理交易文档

时间:2019-07-15 13:38:17

标签: mongodb transactions backup-strategies

想象一下,您有数百万用户在平台上执行事务。假设每笔交易都是您的MongoDB集合中的一个文档,那么每天将生成数百万个文档,从而立即使您的数据库爆炸。我已经收到来自亲朋好友的以下解决方案。

  1. 在文档上具有TTL索引-这是行不通的,因为我们需要将这些文档存储在某个地方,以便在用户需要时可以在以后的时间点对其进行检索。
  2. 使用时间戳作为键共享集合-这将无助于我们控制希望备份数据的时间范围。

我想了解和实施与银行遵循的策略有些类似的策略。他们将您的交易保持在某个特定点(eg: 6 months),之后您必须通过支持或任何其他渠道来请求它们。我假设他们遵循热/冷存储模式,但是我对此不太确定。

整个过程的重点是管理交易文档,并每天备份或将较旧的记录移至另一个可以读取的地方。知道使用MongoDB怎么可能吗?


更新:示例文档(请注意,该文档中还有一些其他键已被编辑)

{
    "_id" : ObjectId("5d2c92d547d273c1329b49f0"),
    "transactionType" : "type_3",
    "transactionTimestamp" : ISODate("2019-07-15T14:51:54.444Z"),
    "transactionValue" : 0.2,
    "userId" : ObjectId("5d2c92f947d273c1329b49f1")
}

1 个答案:

答案 0 :(得分:0)

首先在要保存所有记录的位置创建一个表。 (正如您提到的示例一样,让我们​​将此条目存储在名为A的集合中。)

此后,在每天午夜创建备份,然后在成功备份后使用命名时间戳记恢复该集合。

在表中成功存储条目之后,您可以截断原始表。

通过这种方法,您在集合上的条目表非常有限,并且还具有所有记录。