这是我心中的一个大问号。
对于我的网络软件,我很快就会转向Mercurial或Git,有时我的分支机构需要对其他分支机构不应该看到的重大数据库更改。这个,我不能总是为我的分支共享相同的数据库。
是否有一些标准的方法来处理分支和克隆的数据库更改?你们都做了什么?我正在使用MySQL。
答案 0 :(得分:5)
使用数据库changset工具可能非常有用。我已经使用liquibase(http://www.liquibase.org)来管理数据库的版本控制。我会热烈地向任何人推荐这个工具。 Liquibase支持变更集,具有可配置的回滚方案。但是,它是用于管理模式的工具,而不是实际数据。我不会尝试使用它来保持表数据是最新的。
但是,我仍然认为最好的办法是使用liquibase,并为不同的源分支使用不同的模式。
答案 1 :(得分:4)
我没有给你答案,但我确实遇到了一篇可能相关的文章:Why your database version control strategy sucks and what to do about it, Part I
答案 2 :(得分:2)
为了处理克隆,您的数据库应该设计为多用户。
对于架构中的更改,请将对该分支的架构的更改提交为存储库的一部分。
然后你必须下定决心,对于每个模式,你是在一个数据库,多个数据库等中运行多个表空间吗?然后在该分支中提交指向正确的指针作为安装配置的一部分。
答案 3 :(得分:0)
数据库模式本身(记录在)数据库中,其结构或多或少由SQL标准的INFORMATION_SCHEMA定义。
现在,DBMS的设计非常刻意,在任何一个时间点只允许一个数据库值。由于目录本身“只是INFORMATION_SCHEMA数据库的数据库值”,因此SQL系统在任何一个时间点都只支持一个数据库结构。