我完成了一项功能请求,需要更改我们网站的数据库。
将数据库更改传播到软件开发生命周期的测试和生产阶段的标准方法是什么?我的工作人员建议我们没有为此制定适当的程序,但我们应该这样做。
在版本控制的上下文中执行此操作的常见方法是什么?
我正在考虑在自述文件中添加一条指令,让测试人员/部署人员在尝试启动站点之前通过 psql 执行项目中包含的 SQL 脚本。但我不希望该脚本保留在后代分支中,对吗?或者我也这样?答案是对数据库的所有更改都应该以某种方式集中化吗?
这里的部分问题可能是我不知道更准确的方式来提出这个问题,所以很难谷歌。非常欢迎任何建议,谢谢!
最佳答案
SQL DDLs 的源/版本控制和传播是一个很难解决的问题。有第三方工具,例如 Red Gate's SQL Source Control这有帮助,但可能会变得昂贵。根据我的经验,不同的开发商店倾向于使用内部开发的手动流程。这可能意味着 DDL 导出和保存脚本,将 SQL DDL 硬塞到所使用的任何修订控制系统中。 (Git、SVN、CVS 等)我还看到一些商店只是简单地压缩并存储整个(但空的)数据库。这是一种相当笨拙的方法,但确实有效。
最好的办法是使用一种工具来帮助您,就像上面提到的那样,但导出和版本控制 DDL 脚本也可以。是的,您确实希望 DDL 集中在某些 revision control system 中。 。如果您使用自动构建系统,您还可以包括针对数据库执行版本控制的 DDL 脚本。无论您选择哪种方法,最重要的是保持一致。
一些可帮助您入门的资源:( This is my Google search 生成以下链接。)
- Here is a blog post这可能被证明非常有用且信息丰富,因为它讨论了 SQL 对象修订控制的几种不同方法以及每种方法的优缺点。
- 查看this SO Post and answers 。它实际上可能是这个OP的骗局。
- Here is another SO post这可能会有所帮助,并且 here is yet another .
- Here is a related post, answers and conversation关于同一主题。
- Here is an M$DN view事物和another .
关于sql - 通过 SDLC 传播数据库更改的常见做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615897/