我正在考虑将更改/历史记录存储为数据库记录作为git / hg存储库,而当前数据仍驻留在数据库中。如果有人需要更改历史记录,我将不得不在回购中查找。
每个集合可能有一个文件夹,文件名将镜像“_id”(主键)。因此,我将查找特定文件以获取相关信息。假设有1个主键字段(即没有复合字段)。我使用的数据库是mongodb,因此记录仍然是文档格式。我只需要将JSON存储在一个文件中。
我的优点是:版本控制系统非常适合存储/差异/更改加班。我可以从base查询特定版本和更改列表 - >电流。
缺点:除了新颖之外,我想不到任何其他。 如果历史受到高度追捧(但不是我的情况),IO访问可能是一个问题。我对较慢的历史数据检索感到满意。无论如何,它预计会是罕见的事件。
所以我的问题是:我忽略了一些明显的缺点吗?
感谢。
澄清: 我想这样做的原因是因为,我希望历史能够成长并且可能必须保持无限的时间(理想情况下)。我可以通过坚持改变的方式来改善这一点,但这是额外的努力,而不是微不足道。
另外需要考虑的是mongodb的速度来自内存中的索引。如果它必须维护实际+历史记录的索引,我将需要比我原本需要的内存多2倍-3倍的RAM。截至目前,这是一个溢价(可能并非总是如此),但仍然是。
答案 0 :(得分:0)
我建议您为MongoDB中的每个集合创建“归档”集合,而不是将数据导出为JSON(通过BSON,就像mongodump提供的那样)。然后,您可以将文档的过期版本移动到此归档集合中,格式与普通集合中的格式相同。只要您在文档中存储日期,就可以非常轻松地检索早期版本,而无需使用繁琐的解决方案,例如GIT / HG存储库。无论如何,比较版本是您可能需要可视化的东西,因此使用JSON表示文档而不是真实文档这样做无论如何都不是真正的好处。