sql - 使用 DVCS [Mercurial] 将我的数据库置于版本控制之下

标签 sql database mercurial dvcs

对我的整个数据库进行版本控制的最佳方法是什么?

为每个数据库对象(表、 View 、过程..)创建一个文件,或者更确切地说,为所有 DDL 脚本创建一个文件,并且任何新的更改都将放在一个单独的文件中?

如何处理在数据库管理器工具中所做的更改?

我想要一个适用于任何类型的 RDBMS 的通用解决方案。

还有其他选择吗?

最佳答案

总的来说,我是 VCS 的忠实粉丝,也是 Mercurial 的忠实拥护者,但我真的认为你走错了路。

VCS 不仅仅是关于迭代更改、“什么”,它们还关于回答“谁”、“何时”和“为什么”。对于数据库,这些答案没有那么有趣或难以提供给 VCS。如果您每晚执行导出并提交,“谁”将始终是“cron”,而“为什么”将始终是“午夜”。

现代 VCS 做得很好的另一件事是帮助您 merge 来自多个分支的更改。这在数据库世界中不太适用。你很少会说“我想要这个表结构,但是这个数据”,如果你这样做,文本/差异 merge 不会对你有太大帮助。

真正做到“做什么”和“何时”做得很好的是增量备份系统,这可能更合适。

在工作中我们使用 Tivoli,在家里我使用 rdiff-backup 和 duplicity,但有很多不错的选择。

我想我的一般经验法则是“如果它是由人手输入的,那么它会进入源代码控制,如果它是生成/导出的,那么它会进入增量备份”

当然你可以做到这一点,但我认为它不会比更传统的备份解决方案给你带来太多好处。

关于sql - 使用 DVCS [Mercurial] 将我的数据库置于版本控制之下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361939/

相关文章:

mysql - 导致 mySQL 服务器实例关闭的 DELETE 语句?

sql - 在服务器之间复制文件时出现 SSIS 文件系统任务错误

javascript - 如何将行转换为按行数创建标题的列

Php - Laravel 与 MAMP

MySQL查询从多行获取数据

php - UPDATE 中的 CASE 用于选择列

php - 使用 Mercurial 进行开发和生产 php/MySQL 查询管理

mercurial - 我可以克隆 Mercurial 存储库的一部分吗?

Mercurial:关于在分支之间 merge 时如何跳过某些变更集的任何想法?

php - 如何将数据库的内容与输入内容进行比较?