1

我正在考虑将数据库记录的更改/更改历史存储为 git/hg 存储库,而当前数据仍驻留在数据库中。如果有人需要更改历史记录,我将不得不在 repo 中查找它。

每个集合可能有一个文件夹,文件名将反映“_id”(主键)。因此,我将查找特定文件以获取相关信息。假设有 1 个主键字段(即没有复合)。我使用的数据库是 mongodb,所以无论如何记录都是文档格式。我只需要将 JSON 存储在一个文件中。

对我来说优点是:版本控制系统非常适合存储/差异/更改超时。我也可以从 base -> current 查询特定版本和更改列表。

缺点:除了新奇,我想不出来。如果历史受到高度追捧(但在我的情况下不是),那么 IO 访问可能是一个问题。我可以接受较慢的历史数据检索。无论如何,这将是一个罕见的事件。

所以我的问题是:我忽略了一些明显的缺点吗?

谢谢。

澄清:我想这样做的原因是因为,我希望历史能够增长,并且可能不得不无限期地保存(理想情况下)。我可以通过保持变化来改进这一点,但这是额外的努力而不是微不足道的。

另一个需要考虑的事情是 mongodb 的速度来自内存中的索引。如果它必须同时维护实际+历史的索引,我将需要 2 到 3 倍的 RAM,而不是我原本需要的。到目前为止,它是一种溢价(可能并不总是如此),但仍然如此。

4

1 回答 1

0

我建议您为 MongoDB 中的每个集合创建“归档”集合,而不是将数据导出到 JSON(通过 BSON,因为这是 mongodump 提供的)。然后,您可以将文档的过时版本移动到此存档集合中,格式与您在正常集合中的格式相同。只要您在文档中存储日期,就可以非常轻松地检索早期版本,而无需使用诸如 GIT/HG 存储库之类的繁琐解决方案。比较版本是您可能无论如何都需要可视化的事情,因此使用 JSON 表示的文档而不是真实的文档无论如何都不是真正的好处。

于 2013-06-23T15:50:58.857 回答