SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?

前言

Liquibase是一个用于 用于跟踪、管理和应用数据库变化的开源工具 ,通过日志文件(changelog)的形式记录数据库的变更(changeset),然后执行日志文件中的修改,将数据库更新或回滚(rollback)到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。本文主要介绍SpringBoot与Liquibase的集成。

  • SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?
      • 什么是Liquibase?这类工具要解决什么问题?
      • Liquibase有哪些概念?是如何工作的?
      • 比较好的changelog的实践?
      • 除了addColumn,addTable还有哪些changeType呢?

知识准备

需要理解什么是Liquibase,它的出现是要解决什么问题。

什么是Liquibase?这类工具要解决什么问题?

Liquibase是一个用于 用于跟踪、管理和应用数据库变化的开源工具 ,通过日志文件(changelog)的形式记录数据库的变更(changeset),然后执行日志文件中的修改,将数据库更新或回滚(rollback)到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。

其优点主要有以下:

  • 支持几乎所有主流的数据库,目前支持包括 Oracle/Sql Server/DB2/MySql/Sybase/PostgreSQL等 各种数据库 ,这样在数据库的部署和升级环节可帮助应用系统支持多数据库;
  • 支持版本控制,这样就能支持多开发者的协作维护;
  • 日志文件支持多种格式,如XML, YAML, JSON, SQL等;
  • 提供变化应用的回滚功能,可按时间、数量或标签(tag)回滚已应用的变化。通过这种方式,开发人员可轻易的还原数据库在任何时间点的状态
  • 支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等。

为何会出现Liquibase这类工具呢?

在实际上线的应用中,随着版本的迭代,经常会遇到需要变更数据库表和字段,必然会遇到需要对这些变更进行记录和管理,以及回滚等等;同时只有脚本化且版本可管理,才能在让数据库实现真正的DevOps(自动化执行 + 回滚等)。在这样的场景下Liquibase等工具的出现也就成为了必然。

Liquibase有哪些概念?是如何工作的?

工作流程:将 SQL 变更记录到 changeset ,多个changeset变更组成了日志文件( changelog ),liquibase将changelog更新日志文件同步到指定的 RDBMS 中。

SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?_第1张图片

日志文件(databaseChangeLog)支持多种格式,如XML, YAML, JSON, SQL; 我们以xml为例,看下相关配置

 
 
 

你可能感兴趣的:(Java编程,Spring,Java,数据库,java,postgresql,jvm,mysql)