数据库的版本控制

时间:2010-07-01 08:25:33

标签: version-control database

我很好奇是否有任何解决方案,最好是免费的,可以有一个中央数据库以版本化的方式发布数据。

例如,

客户端1决定编辑个人资料,以便在其计算机上获取本地副本以进行更改。当他们对编辑感到满意时,他们会将结果发布到中央数据库。就像你在perforce中提交一样。

客户端2尝试编辑同一本地副本,但当他们去提交时,他们必须解决冲突。

中央数据库必须存储数据版本之间的压缩差异。

任何时候都有人可以查看所提交数据的所有版本。

5 个答案:

答案 0 :(得分:3)

“数据库的版本控制”对于标题来说有点模棱两可,因为您实际上是在使用数据库作为存储库“数据存储”来请求VCS。

Subversion有这样一个模型(Berkeley DB or filesystem-based) 它还有一个Copy-Modify-Merge model,类似于你描述的锁定机制。

alt text http://svnbook.red-bean.com/nightly/en/images/ch02dia4.png alt text http://svnbook.red-bean.com/nightly/en/images/ch02dia5.png

答案 1 :(得分:3)

查看OffScale DataGrove

此产品跟踪对整个数据库 - 架构和数据的更改。您可以在任何时间点标记版本,并使用简单的命令返回到DB的旧状态。它还允许您创建同一数据库的虚拟,单独副本,以便每个团队成员可以拥有自己独立的数据库。所有虚拟副本都被跟踪到同一个存储库中,因此将数据库恢复到其他人的版本非常容易(只需检查其版本,就像使用源代码控制一样)。这意味着您的所有数据库始终可以同步。

免责声明 - 我在OffScale工作: - )

答案 2 :(得分:2)

来自redgate的sql工具提供了一些这样的功能,但没有以你描述的方式实现。例如,sql data compare可以比较2个数据库中数据之间的差异,也可以使用sql source control

但是,在本地计算机上获取数据库的副本,进行更改和重新提交将更像是一个手动过程。

答案 3 :(得分:1)

您使用的数据库服务器是什么?如果您使用的是MySQL和PHP,Doctrine具有“可版本化”行为,可以应用于模型。

此行为的文档如下:
http://www.doctrine-project.org/projects/orm/1.2/docs/manual/behaviors/en#core-behaviors:versionable

答案 4 :(得分:0)

这正是我的产品(是的,我有偏见:))DBmaestro团队合作。

  • 强制执行并跟踪结构和内容的变化
  • 它可以防止对象结构或内容上的两个并行更改(只要它们在同一个对象上工作 - 意思是,相同的数据库,相同的模式......)
  • 它使用基线感知分析,该分析了解变更的性质,并知道变更是应该被提升还是应该被忽略(因为它来自另一个环境)或是否存在冲突 还有更多......

我建议您阅读由资深数据库专家Ben Taylor撰写的关于数据库强制管理解决方案的全面,公正的评论,他在LinkedIn上发布https://www.linkedin.com/pulse/article/20140907002729-287832-solve-database-change-mangement-with-dbmaestro