Liquibase 回滚——有用吗?

Liquibase rollback - is it useful?

我想知道 Liquibase 中的回滚在什么情况下会有用。在大多数情况下,处理 liquibase 回滚会促使开发人员编写一些额外的变更集。但它的真正价值是什么?总是在填充的数据库中编写回滚并不容易。我只看到该功能的一个价值——当我们想回到某个以前的版本时,我们可以调用回滚。但是,直接删除数据库并调用 Liquibase 再次构建数据库会更容易。操作时间短。谁能告诉我一些您使用此功能的真实案例??

简短的回答是,"it's infinitely useful",但为了向您简要说明它的用途或原因,我们需要解释一些其他概念。

可以将 Liquibase 比作像 Active Record 这样的系统,它除了是主要用于 Rails 的 ORM 解决方案外,还以允许其开发人员迁移和回滚更改而闻名。它甚至会跟踪它已经 运行 的更改集,这样一来就可以识别出什么是 运行 之前和什么还没有。

现在,迁移部分很简单。您希望能够迁移更改,以便您可以随着时间的推移以增量方式实际改进数据库,并记录更改内容。也就是说,以防万一 发生故障,而您必须回去修复它。这就是回滚功能的用武之地;如果模式更改结果表现不佳,导致数据丢失或该数据库被破坏,则回滚模式并将数据恢复到其原始状态(可能通过备份)对于帮助维护系统的稳定性至关重要。

对您的建议:

But it's easier to just drop database and call Liquibase to build a database once again.

不能在生产环境中这样做。许多开发人员、工程师和经理会将删除生产数据库比作可燃的罪行。尤其是当您的站点可能有成百上千个连接时,这些连接取决于处于某种状态的数据。

回滚将帮助您减轻一次架构更改造成的损害或配置错误,并且让您有机会降低对其他系统或其他用户产生影响的可能性。