我完成了一个功能请求,需要更改我们网站的数据库。
将数据库更改传播到软件开发生命周期的测试和生产阶段的标准方法是什么?我的同事建议我们没有适当的程序来处理这个问题,但是我们应该这样做。
在版本控制的上下文中这样做的常见方法是什么?
我正在考虑在README中包括一个测试人员/部署人员的指令,以便在尝试启动网站之前通过psql执行项目中包含的SQL脚本。但我不想让这个脚本保存在后代分支中,对吧?还是我?答案是对数据库的所有更改都应该以某种方式集中吗?
这里的部分问题可能是我不知道一个更精确的方法来问这个问题,所以很难谷歌。任何建议将是非常欢迎的,谢谢!
SQL ddl的源代码/版本控制和传播是一个难以解决的问题。有一些第三方工具,如Red Gate的SQL源代码控制,可以提供帮助,但价格昂贵。根据我的经验,不同的开发团队倾向于使用内部开发的手工流程。这可能意味着DDL导出和保存脚本,以便将SQL DDL硬塞到所使用的任何版本控制系统中。(Git, SVN, CVS等)我也见过一些商店简单地压缩并存储整个(但空的)数据库。这是一个相当笨拙的方法,但它确实有效。
最好的办法是使用工具来帮助您,就像上面提到的那样,但是导出和控制DDL脚本也可以工作。是的,您确实希望将ddl集中在某个修订控制系统中。如果使用自动构建系统,还可以对数据库执行版本控制的DDL脚本。无论你选择哪种方法,最重要的是保持一致。
一些资源来帮助你开始:(这是我的谷歌搜索,产生了下面的链接。)
- 这里有一篇博客文章,它可能会被证明是非常有用的,因为它讨论了几种不同的SQL对象的版本控制方法,以及每种方法的优缺点。
- 查看这个SO帖子和答案。它实际上可能是这个op的复制品。
- 这里是另一个可能有帮助的SO帖子,这里是另一个。
- 这里是关于同一主题的相关帖子,答案和对话。
- 这是一个M$DN的视图和另一个。