我正在考虑将数据库记录的更改/更改历史存储为 git/hg 存储库,而当前数据仍驻留在数据库中。如果有人需要更改历史记录,我将不得不在 repo 中查找它。
每个集合可能有一个文件夹,文件名将反映“_id”(主键)。因此,我将查找特定文件以获取相关信息。假设有 1 个主键字段(即没有复合)。我使用的数据库是 mongodb,所以无论如何记录都是文档格式。我只需要将 JSON 存储在一个文件中。
对我来说优点是:版本控制系统非常适合存储/差异/更改超时。我也可以从 base -> current 查询特定版本和更改列表。
缺点:除了新奇,我想不出来。如果历史受到高度追捧(但在我的情况下不是),那么 IO 访问可能是一个问题。我可以接受较慢的历史数据检索。无论如何,这将是一个罕见的事件。
所以我的问题是:我忽略了一些明显的缺点吗?
谢谢。
澄清:我想这样做的原因是因为,我希望历史能够增长,并且可能不得不无限期地保存(理想情况下)。我可以通过保持变化来改进这一点,但这是额外的努力而不是微不足道的。
另一个需要考虑的事情是 mongodb 的速度来自内存中的索引。如果它必须同时维护实际+历史的索引,我将需要 2 到 3 倍的 RAM,而不是我原本需要的。到目前为止,它是一种溢价(可能并不总是如此),但仍然如此。