我完成了一项功能请求,要求更改我们网站的数据库。
将数据库更改传播到软件开发生命周期的测试和生产阶段的标准方法是什么。我的工作人员建议我们没有这方面的程序,但我们应该这样做。
在版本控制的上下文中执行此操作的常用方法是什么?
我在考虑向README中的测试人员/部署人员添加一条指令,以便在尝试启动站点之前通过psql执行项目中包含的SQL脚本。但我不希望该脚本在后代分支中持续存在,对吧?或者我呢?答案是,数据库的所有更改都应该以某种方式集中化吗?
这里的部分问题可能是我不知道更准确的方式来提问这个问题,所以谷歌很难。任何建议都会非常受欢迎,谢谢!
答案 0 :(得分:3)
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产生了以下链接。)