mysql - 数据库构建过程管理

标签 mysql sql-server database oracle database-design

管理数据库脚本和对数据库进行新开发的选项有哪些:

例如,许多应用程序使用的数据库,并且有许多开发人员使用数据库,保持数据库与最新更改保持同步的最佳选择是什么,部署更改的过程应该是什么投入生产

我看到两个选项:

  1. Microsoft visual studio 有一个数据库项目,所以所有的数据库 脚本应该添加到项目中,数据库可以重建 来自 Visual Studio
  2. 从备份中恢复数据库并只将新脚本应用到数据库

还有哪些选择?我如何管理数据库开发,最佳实践是什么?我上面写的选项的优点和缺点是什么?如何维护新的sql脚本?

我明白应该使用源代码控制系统,但是使用数据库脚本并不像使用应用程序那么容易。

我相信这不会是通用的解决方案,但至少我对数据库开发人员如何在贵公司实现它的看法很感兴趣。

最佳答案

Liquibase是恕我直言最好的工具。它的方法极其简单,这也是它运作良好的原因之一。

您可以在网站上阅读它的工作原理,但基本上它会创建和管理一个简单的表,该表存储每个脚本的哈希值以确定它是否已运行脚本。也有 pre- 和 post- sql,你可以绕过条件……它几乎可以做你想要或需要的一切。它还具有 Maven 集成,因此它可以无缝地成为您构建的一部分。

我在一个大型(8 名开发人员)项目中非常成功地使用了它,现在我不会使用任何其他东西。

而且是免费的!

关于mysql - 数据库构建过程管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096311/

相关文章:

java - 将 MySql 输入流转换为 byte[]

mysql - 按特定顺序更新具有条件的表

sql - 正确设计SQL Server数据库

mysql - SQL : How Use max function in 1 record

java - 如何使用数据库导航器插件 intelliJ 连接到 mysql 服务器

mysql - rails : Why is 'rake secret' giving me an error?

mysql - 使用java的远程MySQL忽略一列

c# - SQL 查询在 SSMS 中有效,但在 C# : SELECT denied 中无效

sql - 编写一个查询来交换 SQL Server 中表中的值?

python - Django ManyToMany 查询交集