liqiubase 一个自动化数据库迁移工具

在过去几年中,我使用过的大多数应用程序都是需要管理大量数据的企业应用程序。从事这类项目的开发团队常常将数据库视为与应用程序完全脱离的单独实体。造成这种现象的原因是组织结构经常将数据库团队从应用程序开发团队分离出来。有时候,这是团队的习惯引起的。不管怎样,我发现这种分离会导致(或忽略)一些实践:

  • 手工变更数据库
  • 不能与团队的其他成员分享数据库变更
  • 使用不一致的方法变更数据库或数据
  • 使用低效的手工方法管理数据库版本之间的变更

这些实践效率低下,使开发人员无法与数据变更保持同步。而且,还使应用程序的 用户遇到与数据不一致和数据损坏等问题。

图 1 演示了软件开发项目中经常用到的手工方法。手工方法在使用时通常不能保证一致性并且容易产生错误,撤销已完成的工作很困难,而且难以分析数据库变更的历史。例如,某个 DBA 可能想变更查找数据,但是开发人员却忘记将这个数据插入到同一个表中。

图 1. 手工变更数据库

liqiubase 一个自动化数据库迁移工具_第1张图片

通过实现最小化人为干预的数据库变更策略,可以避免手工方法带来的缺陷。通过结合各种实践和工具,可以使用一致且可重复的过程变更数据库和数据。在本文中,我将介绍以下内容:

  • 使用一种称为 LiquiBase 的工具在各个数据库版本之间进行迁移
  • 如何自动运行数据库迁移
  • 一致地变更数据库的实践
  • 使用 LiquiBase 进行数据库重构

在图 2 中,一个 Build/Continuous Integration 服务器轮询版本控制库(例如子版本)中的变更。当它发现一个变更后,将运行一个自动化构建脚本,该脚本使用 LiquiBase 更新数据库。

图 2. 自动化数据库迁移

liqiubase 一个自动化数据库迁移工具_第2张图片

通过使用类似图 2 所示的过程,团队中的任何人都可以将相同的变更应用到数据库中 —可以是本地或共享数据库服务器。此外,由于这个过程使用了自动化脚本,因此这些变更不需要任何人为干预就可以应用到不同环境中。

使用 LiquiBase 管理数据库变更

LiquiBase(从 2006 年开始投入使用)是一种免费开源的工具,可以实现不同数据库版本之间的迁移(参见 参考资料)。目前也存在少量其他开源数据库迁移工具,包括 openDBcopy 和 dbdeploy。LiquiBase 支持 10 种数据库类型,包括 DB2、Apache Derby、MySQL、PostgreSQL、Oracle、Microsoft®SQL Server、Sybase 和 HSQL。

要安装 LiquiBase,下载经过压缩的 LiquiBase Core 文件,解压缩,然后将包含的 liquibase-version.jar 文件放到系统路径中。

要开始使用 LiquiBase,需要以下四个步骤:

  1. 创建一个数据库 变更日志(change log)文件。
  2. 在变更日志文件内部创建一个 变更集(change set)
  3. 通过命令行或构建脚本对数据库运行变更集。
  4. 检验数据库中的变更。

创建一个变更日志和变更集

要运行 LiquiBase,如清单 1 所示,首先要创建一个 XML 文件,也称为数据库变更日志,这里有多种方式,我们可以使用sql文件,可以使用xml配置,只需要将配置添加到相应的位置即可,下面介绍下liqiubase和springboot的结合使用

首先pom中必须添加相应的依赖

liqiubase 一个自动化数据库迁移工具_第3张图片

在src/main/resources 下 创建 /db/changelog 的文件夹,如图:

liqiubase 一个自动化数据库迁移工具_第4张图片

application.properties中添加相应的配置

liqiubase 一个自动化数据库迁移工具_第5张图片

最后就是编写xml了

liqiubase 一个自动化数据库迁移工具_第6张图片

你可能感兴趣的:(数据库)