【问题标题】:Liquibase: Rollback for data modification/deletionLiquibase:数据修改/删除的回滚
【发布时间】:2021-02-02 19:13:29
【问题描述】:

到目前为止,我对 Liquibase 的使用经验很少,但我了解到您应该始终有一个回滚策略。

https://www.liquibase.org/get-started/best-practices

始终有一个回滚计划
以他们可以的方式编写变更集 被回滚。例如,使用相关的 change 子句代替 使用自定义标签。包括一个子句,只要 change 不支持开箱即用的回滚。 (例如,sql,插入, ETC)。详细了解回滚。

如果需要数据修改或删除(过时)数据时,我不知道如何妥善处理。
我找到了删除数据库条目并且回滚定义包含两个带有修复数据的插入语句的示例。但这不是现实世界的场景。在这里,我们可能有包含数百万条记录的表。

是否有关于数据操作/转换/删除以及回滚策略的最佳实践?
是否应该不惜一切代价避免数据操纵/破坏性操作?

提示:我说的不是小型应用程序,而是由不同团队中的许多人开发并交付给数百名客户的企业解决方案。只是为了给你一个背景。

【问题讨论】:

    标签: liquibase rollback


    【解决方案1】:

    对此有不同的看法,但在现实生活中,我认为回滚策略并不是很实用。您通常需要前滚。话虽如此,liquibase 是为结构 (ddl) 更改而设计的。

    对于数据,尤其是数百万行数据,我会在 liquibase 之外进行编排,作为您发布计划的一部分。我见过大型专有银行软件通过将表重命名/复制到另一个表然后进行更改来处理此问题。

    所以,如果你有 tableX,你需要添加一列。可以将表复制到tableX_old,修改tableX。

    如果迁移成功,删除tableX_old。如果没有,请使用 tableX_old 回滚以恢复您的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多