当与其他几个人一起处理一个项目时,通常会有几个人负责不同的领域,例如数据库。
我的挑战是如何让几个人在持续集成环境中编辑数据库模型。
一位开发人员建议编写一个“版本控制脚本”,其中每个编辑都被输入到一个 .sql 脚本中,并带有数据库能够检测到的版本号。模型的新添加将在此文件中标记为版本,一旦提交脚本并运行构建,数据库将更新。
我也听说过 Publisher/Subscriber... 并阅读了一些相关内容。
您在日常工作中是如何处理这种情况的?您可以给我什么建议来使数据库更改尽可能无缝地运行?
** 编辑 **
已提及迁移框架和迁移脚本。如果您有一些实践经验并会建议一个框架,我们也将不胜感激。
最佳答案
在优秀的 Get Your Database Under Version Control 中引用 Jeff Atwood帖子:
...
I was thinking about this again because my friend and co-author K. Scott Allen just wrote a brilliant five part series on the philosophy and practice of database version control:
- Three rules for database work
- The Baseline
- Change Scripts
- Views, Stored Procedures and the Like
- Branching and Merging
...
真的,整个系列都值得一读,即使你们中的许多人似乎对第 3 部分特别感兴趣。顺便说一句,看看 Bulletproof Sql Change Scripts Using INFORMATION_SCHEMA Views第三部分也提到了文章。您可能已经意识到这一点,但它解释了为什么编写 idempotent 的其他良好做法。更改脚本很重要。
关于工具,您可能需要查看 UpToDater (以代码为中心),LiquiBase (基于 xml)或... dbdeploy ,基于 ThoughtWorks 软件开发的真实经验的小珍宝。这并不是说第一个 2 个不好,而是这个是我的首选(并且可用于 Java、PHP 或 .NET)。
关于database - 持续集成和数据库管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622157/