跟踪和/或自动化数据库架构更改的最佳方法是什么?我们的团队使用 Subversion 进行版本控制,并且我们已经能够通过这种方式自动执行一些任务(将构建推送到临时服务器,将测试代码部署到生产服务器),但我们仍然手动执行数据库更新。我想找到或创建一个解决方案,使我们能够跨不同环境的服务器高效工作,同时继续使用 Subversion 作为后端,通过该后端将代码和数据库更新推送到各种服务器。
许多流行的软件包都包含自动更新脚本,可以检测数据库版本并应用必要的更改。即使在更大范围内(跨多个项目,有时跨多个环境和语言),这是否是最好的方法?如果是这样,是否有任何现有代码可以简化流程,或者最好只是推出我们自己的解决方案?有没有人之前实现过类似的东西并将其集成到 Subversion 提交后挂钩中,或者这是一个坏主意?
虽然支持多个平台的解决方案会更好,但我们绝对需要支持 Linux/Apache/MySQL/PHP 堆栈,因为我们的大部分工作都在该平台上。
在 Rails 世界中,存在迁移的概念,即使用 Ruby 脚本对数据库进行更改,而不是使用特定于数据库的 SQL 风格。您的 Ruby 迁移代码最终会被转换为特定于当前数据库的 DDL;这使得切换数据库平台变得非常容易。
对于对数据库所做的每一项更改,您都需要编写新的迁移。迁移通常有两种方法:应用更改的“向上”方法和撤消更改的“向下”方法。单个命令即可使数据库保持最新状态,也可用于使数据库达到特定版本的架构。在 Rails 中,迁移保存在项目目录中自己的目录中,并像任何其他项目代码一样被签入版本控制。
Oracle Rails 迁移指南很好地涵盖了迁移。
使用其他语言的开发人员已经研究了迁移并实现了自己的特定于语言的版本。我知道拉克使用,一个以 Rails 迁移为模型的 PHP 迁移系统;这可能就是您正在寻找的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)