是否可以将Flyway,Liquibase等数据库迁移工具与应用程序代码库集成?

ash*_*ram 5 java database-migration liquibase gradle flyway

我的意思是允许应用程序修改数据库是一个好习惯吗?或者应该在应用程序代码库外部进行数据库迁移?

新的,所以任何输入将不胜感激.

我们使用java和gradle来构建应用程序.

Axe*_*ine 12

Flyway作者在这里.

是! 在一天结束时,有两个重要的力量在起作用:

  1. 您的模式与应用程序代码紧密耦合:您的应用程序需要存在某些表和列,以便它可以读取和写入它们.从应用程序的一个版本到下一个版本,哪些版本确实不同.
  2. 您不希望在应用程序/服务之间进行基于数据库的集成,因为这会破坏所有封装.数据库是服务的私有实现细节.与其他服务的集成应通过具有适当验证和业务规则实施的API层实现.

因此,鉴于这一切,只需所有属于一起的东西放在一起.

通过让应用程序在启动时迁移数据库,可以确保数据库架构始终与应用程序对应该在那里找到的内容保持同步.