【问题标题】:When we should use liquibase?我们什么时候应该使用 liquibase?
【发布时间】:2022-01-26 06:55:31
【问题描述】:

我在很多网站上都搜索过这个答案,而且到处都得到了几乎相同的答案。

  • Liquibase 有助于确保软件版本始终与 数据库的匹配状态,以便部署您的功能 快速而自信。
  • 我们可以指定一次更改并在不同的数据库上进行测试。
  • 如果我们有这样的要求,我们可以挑选要在不同环境(开发、登台、QA)中应用的更改。

这也可以通过使用 Jpa 来完成(使用不同的属性文件进行登台、开发、生产)。那么什么时候应该使用 liquibase,什么时候需要呢?

【问题讨论】:

标签: database liquibase


【解决方案1】:

Liquibase 和 JPA 非常不同,具有完全独立的用例。

Liquibase 是一个用于自动跟踪、管理和应用数据库架构更改的库。 Liquibase 帮助跟踪您自己的文件(sql、xml、yml、json)中的所有数据库架构更改。您可以将 liquibase 视为数据库脚本的版本控制工具。

假设有人将新数据插入到表中,但只在应该为所有环境完成时才为一个环境执行此操作。现在更糟糕的情况是那个人离开了他们的公司,现在没有人知道他们丢失了数据。这是一个完美的例子,说明在管理多个数据库或多个模式时,由于粗心的错误而导致超时失去一致性。使用 liquibase,他们不必担心,因为数据库更改现在已正确保存,并将针对部署该代码的每个环境执行。从本质上讲,您的 liquibase 脚本现在在某种程度上是您项目代码的一部分(当然取决于它们所在的位置)。

另一方面,JPA 可以根据您的数据库验证您现有的代码库,但它不会为您进行必要的数据库更改(除非您指定类似 create-drop 之类的东西,我不建议在大多数用例中使用它) .每当您使用它们的任何注释时,例如@Entity、@Table、@Id、@Blob 等,这些更改都不会自动应用于您的数据库。 JPA 非常适合建模表、关系和约束在数据库中的外观。但是,通常由您为此类更改执行必要的 SQL(或其他查询语言)。这就是 liquibase 可以方便地为您处理它的地方。

【讨论】:

  • 所以如果我使用的是 liquibase,如果我想将记录插入数据库,那么使用 liquibase 变更集而不是 api 将数据插入数据库是否合适?我问这个是因为通常每当我们制作一个 Spring Boot 应用程序时,我们通常会集成 api 来执行操作。
  • @KhushaliJiyani 不,在我看来,您不应该使用 liquibase 来跟踪来自 API 的插入。我上面的例子是手动插入的不是来自任何进程或应用程序的数据。所以一般来说,liquibase 可以支持您所做的任何架构更改。如果您想跟踪表的创建、更改现有表、更改约束、授予权限等。此外,有时在产品设置中,您进行数据库更改的选项可能会受到限制,但是,因为 liquibase 与项目代码同步,它现在将在运行时(或在您指定时)开始使用您的应用
猜你喜欢
  • 2021-09-07
  • 1970-01-01
  • 2011-07-04
  • 2017-09-13
  • 2021-12-29
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多