使用LiquiBASE进行数据库版本控制

2020-09-24 19:04:31

让我给您一个场景,您有一个在不同环境(开发、质量保证、生产)中有多个数据库实例的项目,您需要管理针对这些环境所做的数据库架构更改。假设您正在通过在驱动器上创建一个GIT项目或共享文件,并为您正在进行的每个数据库更改添加一个新的SQL文件来管理这些更改。要在该数据库中实施更改,对于每个SQL文件,您需要在每个环境中手动运行更改,并添加一个标志或注释以指示在哪个环境上运行哪些更改。它能够完成您的任务吗?是的,但是,它是管理模式更改的好方法吗?当然不是。

Liquibase是一个用于跟踪和管理数据库模式更改的开源库,可用于任何具有JDBC驱动程序的数据库。它是一个独立于平台的数据库迁移工具,允许以各种格式(包括XML、JSON、YAML和SQL)编写称为“变更集”的数据库变更。

具有从现有数据库生成变更集的功能,还可以将架构差异生成为变更集。

将Liqubase嵌入您的应用程序:将Liqubase嵌入您的应用程序代码将在应用程序启动时自动部署Liqubase。

使用构建工具运行Liqubase:将Liqubase集成到您的构建过程中(使用Jenkins、Ant、Maven和Gradle等构建工具),并在不与应用程序绑定的情况下更新它们。

生成SQL并手动运行:使用UPDATE SQL,Liquibase提供从变更集生成的SQL以及保持跟踪表最新所需的数据库更改。然后,DBA将检查SQL并针对数据库运行它们。

如果您使用Liqubase安装程序设置Liqubase,那么依赖项、目录、配置和属性文件都已经就绪,本文还提供了一些示例,这些示例将为您提供理解变更集所需的核心概念。

在手动安装的情况下,您需要下载压缩的Liqubase文件并将其解压缩到您的工作区中。对于Windows用户,您需要在环境变量中添加一个新的PATH变量。对于MacOS用户,应该将该路径添加到bash.profile文件。

Liiqubase.properties:文件liubase.properties是一个基于文本的文件,它存储常见属性,如数据库连接参数、驱动程序详细信息、类路径参数、全局更改日志参数等。如果您使用liubase安装程序安装liiqubase,它将提供预先编写的iquibase.properties文件,而在手动安装的情况下,您需要使用提供的示例文件创建liiqubase.properties文件。

DatabaseChangeLog:Databasechangelog是所有变更集所在的文件。每个数据库更改日志可以包括一个或多个更改集。

更改集:在LiqueBase中,更改集表示为对数据库的原子更改。每个变更集都应该使用作者和id字段进行唯一标识。数据库将每个变更集作为单个事务处理。变更集可以用JSON、XML、SQL和YAML格式编写。

DATABASECHANGELOG&;DATABASECHANGELOGLOCK:这两个表是由Liqubase创建的,用于跟踪对数据库运行的更改,并确保不会发生其他迁移。

如果你告诉我你不喜欢液基,正在寻找替代品,我会问为什么不先用液基。Liquibase是一个复杂的数据库迁移工具,它具有专业数据库重构和版本控制所需的所有功能。

但是,如果您不想使用Liqubase,这里有一些替代方案。

Flyway:Flyway是用于数据库迁移的开源Apache许可工具,您可以在其中使用特定于数据库的SQL或使用Java代码编写迁移。有关Flyway的更多详细信息,请访问该网站。Https://flywaydb.org/。

YUNIQL:YUNIQL也是一个开源模式版本控制和数据库迁移引擎,它使用可以与CI/CD管道集成的纯SQL脚本。如果你想查看YUNIQL,你可以参考这个网站。Https://yuniql.io/