我正在为一个相当复杂的关系数据库实施审计跟踪,它的模式很容易改变。我正在考虑的一种途径是使用 DVCS 来跟踪更改。
(我能想象的好处是:无模式历史,整个系统状态的快照,用于分析、回放和迁移的标准工具,高效存储,独立系统,保持数据库清洁。数据库不是大量写入,历史不是核心功能,更多的是为了进行审计跟踪。哦,我喜欢尝试疯狂的新方法来解决问题。)
我不是这些系统的专家(我只有基本的 git 熟悉度),所以我不确定实施起来会有多困难。我正在考虑采用 mercurial 的方法,但可能将文件内容/清单/变更集存储在键值数据存储中,而不是使用实际文件。
数据行将被序列化为 json,每个“文件”可以是一行。或者,可以将整个表存储在“文件”中,每一行位于与其主键相等的行号上(假设表不是太大,我希望所有表的行数都少于 4000 左右。这可能意味着可以自动生成变更集,而无需查阅表“文件”的其余部分。
(但我对此表示怀疑,因为我认为我们需要整个文件的 SHA-1 哈希。文件可能会被可预测的行数分割,例如0 < primary key < 1000
在文件 1、1000 < primary key < 2000
文件 2 等中,使它们保持较小)
是否有熟悉 DVCS 内部或一般数据结构的人可以评论这样的方法?怎样才能让它发挥作用,甚至应该完成它吗?
我想这样的系统有两个方面:1)将 SQL 数据映射到 DVCS 系统和 2)将 DVCS 数据存储在键/值数据存储(而不是文件)中以提高效率。
(注意我的 ORM 涵盖了 json 序列化位)