我是数据库设计师,在我当前的项目中,我正在实现在 RDBMS 中同时编辑数据行所需的版本控制功能。项目要求说,数据编辑会话可以持续几个小时或几天,直到执行提交。此外,在不同用户同时修改相同数据时产生的冲突应该以手动和半自动解决的可能性进行处理。换句话说,所需的编辑工作流类似于面向文档的版本控制系统(例如 SVN 或 Git)中使用的工作流。因此,传统的 OLTP 方法和冲突解决策略(MVCC、乐观/悲观锁)不能满足我的约束。我对现有工具进行了一些观察,这些工具为分支版本历史记录和多版本工作流提供了可能性:
SQL:2011 没有解决我的问题,因为它提供了对“线性”编辑历史的支持,而不是我正在寻找的分支。ESRI 和 Oracle 的解决方案是不错的候选者,但我很失望它们都具有用于操作版本的供应商特定接口。目前似乎没有人可以为关系数据的分支版本控制提供行业标准的解决方案(就像 SQL:2011 为时态表和线性版本历史所做的那样)。作为一名新来的数据库研究员,我想了解:
我想我可以尝试深入挖掘并提出一些标准模型或子语言来处理类似 Git 的版本控制,但我不知道从哪里开始。