Flyway 最佳实践:一个大型迁移脚本与许多增量脚本

Flyway best practice: one large migration script vs many incremental ones

我有一个任务是使用flyway给已有的应用添加一些新的迁移脚本,大致如下:

  1. 为一项逻辑任务(JIRA 工单 #1)table 一次更新 4 条记录
  2. 为另一个逻辑任务(JIRA 工单 #2)更新同一 table 中的另一条记录
  3. 更新另一个 table 中的记录(JIRA 票 #2)

有两种选择:

  1. 将更改 3 保留在单独的迁移脚本中。
  2. 将所有更改集中在一个包罗万象的大型脚本中。

为了逻辑描述,我喜欢将这些更改保留在 3 个单独的迁移脚本中,以防万一这些脚本中的任何一个执行失败,我不必创建另一个大型更正脚本来修复故障(s ) 因为它可能会变得非常混乱。

另一方面,这 3 个任务都属于同一个工作(更大的父 JIRA 任务)并一起投入生产。

有人可以就什么是最佳实践分享他们的经验和意见 - 保留 3 个迁移脚本或将它们放在一起,如果可能的话请介绍每种方法的优缺点?

我找到了这篇文章,但它没有说明我的具体查询: https://dbabulletin.com/index.php/2018/03/29/best-practices-using-flyway-for-database-migrations/

这更多的是意见而不是确凿的事实,但我通常遇到的“最佳做法”是将脚本保留为功能或相关命令。这样,如果命令中断了迁移,您不会损失太多进度,并且可以帮助查明问题出在哪里。

这部分是意见,所以我们只需要在 SO 和规则范围内处理它。

我绝对会把它分解成更小的脚本。这有两个原因。首先,当其中一组变更出现问题时(是的,可能不会,但万一发生呢),如果它在自己的脚本中,您可以更容易地将其与所有其他变更分开。当然,您仍然可以对更改进行分组,以便它们都是 7.1、7.2、7.3(或其他版本),但是如果已经拆开的话,拆开东西会更容易。

其次,如果您遇到通过樱桃采摘进行零碎部署的情况,您还需要将脚本分解为单独的更改集。原因同上。

这并不是说我总是、永远只进行个别更改。但是你列出的那种完全不同的变化,那些彼此没有直接关系并且实际上可以分开的变化,那些,我会分开。

部分是意见,部分是对事情如何崩溃或需要改变的理解。我希望这是 SO 规则内的答案。