加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Spring Boot 2拭魅战:行使Flyway打点你数据库的版本改观

发布时间:2019-10-31 13:10:16 所属栏目:编程 来源:码农小胖哥
导读:1. 媒介 跟着项目标不绝迭代,数据库表布局、数据都在产生着变革。乃至有的营业在多情形版本并行运行。数据为王的期间,打点好数据库的版本也成为了急切的必要。怎样能做到像 Git 之类的版本节制器材来打点数据库?Java 项目中常用 Flyway 和 Liquibase 来
副问题[/!--empirenews.page--]

 Spring Boot 2拭魅战:行使Flyway打点你数据库的版本改观

1. 媒介

跟着项目标不绝迭代,数据库表布局、数据都在产生着变革。乃至有的营业在多情形版本并行运行。数据为王的期间,打点好数据库的版本也成为了急切的必要。怎样能做到像 Git 之类的版本节制器材来打点数据库?Java 项目中常用 Flyway 和 Liquibase 来打点数据库版本。个中 Flyway 相对来说较量受接待。

2. Flyway 的特点

Flyway 大受接待是由于它具有以下利益:

  •  简朴 很是轻易安装和进修,同时迁徙的方法也很轻易被开拓者接管。
  •  专一 Flyway 专注于搞数据库迁徙、版本节制而并没有其余副浸染。
  •  强盛 专为持续交付而计划。让Flyway在应用措施启动时迁徙数据库。

3. Flyway 的事变机制

Flyway 必要在 DB 中先建设一个 metadata 表 (缺省表名为 flyway_schema_history), 在该表中生涯着每次 migration (迁徙)的记录, 记录包括 migration 剧本的版本号和 SQL 剧本的 checksum 值。下图暗示了多个数据库版本。

Spring Boot 2拭魅战:行使Flyway打点你数据库的版本改观

对应的 metadata 表记录:

Flyway 扫描文件体系或应用措施的类路径读取 DDL 和 DML 以举办迁徙。按照metadata 表举办搜查迁徙。假如剧本声明的版本号小于或便是标志为当前版本的版本号之一,将忽略它们。别的迁徙是待处理赏罚迁徙:可用,但未应用。最后按版本号对它们举办排序并按次序执行 并将执行功效写入 metadata 表。

Spring Boot 2拭魅战:行使Flyway打点你数据库的版本改观

对应的 metadata 表记录:

Flyway 支持呼吁行(必要下载呼吁行器材)和 Java Api ,也支持构建器材 Maven 和 Gradle 。这里我们将眼光放在 Java Api 上。

3. Flyway 的法则

Flyway 是怎样较量两个 SQL 文件的先后次序呢?它回收 回收左对齐原则, 缺位用 0 取代 。举几个例子:

1.0.1.1 比 1.0.1 版本高。

1.0.10 比 1.0.9.4 版本高。

1.0.10 和 1.0.010 版本号一样高, 每个版本号部门的前导 0 会被忽略。

Flyway 将 SQL 文件分为 Versioned 、Repeatable 和 Undo 三种:

  •  Versioned 用于版本进级, 每个版本有独一的版本号并只能执行一次.
  •  Repeatable 可一再执行, 当 Flyway检测到 Repeatable 范例的 SQL 剧本的 checksum 有变换, Flyway 就会从头应用该剧本. 它并不消于版本更新, 这类的 migration 老是在 Versioned 执行之后才被执行。
  •  Undo 用于取消具有沟通版本的版本化迁徙带来的影响。可是该回滚过于粗暴,过于机器化,一样平常不保举行使。一样平常提议行使 Versioned 模式来办理。

这三种的定名法则如下图:

Spring Boot 2拭魅战:行使Flyway打点你数据库的版本改观

  •  Prefix 可设置,前缀标识,默认值 V 暗示 Versioned, R 暗示 Repeatable, U 暗示 Undo
  •  Version 标识版本号, 由一个或多个数字组成, 数字之间的脱离符可用点 . 或下划线 _
  •  Separator 可设置, 用于脱离版本标识与描写信息, 默以为两个下划线 __
  •  Description 描写信息, 笔墨之间可以用下划线 _ 或空格 脱离
  •  Suffix 可设置, 后续标识, 默以为 .sql

4. Spring Boot 集成 Flyway

Spring Boot 提供了对 Flyway 的自动设置 。使我们可以开箱即用 Flyway 举办数据库版本节制。

4.1 Flyway 依靠

你只必要引入依靠:   

  1. <!-- 无需版本号 -->  
  2.  <dependency>  
  3.       <groupId>org.flywaydb</groupId>  
  4.       <artifactId>flyway-core</artifactId>  
  5.  </dependency>       

虽然你要集成你的相干数据库情形。这里我们回收 H2 数据库来演示,其余数据库同理只不外方言差异。不认识 H2 数据库的可参阅我的专题文章 Spring Boot 2 拭魅战:H2数据库集成以及行使 。

4.2 Flyway 设置

为了直观的讲授设置,起首在 Spring Boot 设置文件 application.yml 我们设置 H2 数据库为:

  1. spring:  
  2.    datasource:  
  3.      #  h2 驱动  
  4.      driver-class-name: org.h2.Driver  
  5.      # h2  数据库 耐久化到磁盘D:/h2 库名: flyway  mysql模式  
  6.      url: jdbc:h2:file:D:/h2/flyway;MODE=MySQL;DATABASE_TO_LOWER=TRUE  
  7.    h2:  
  8.      #    开启console 会见 默认false  
  9.      console:  
  10.        enabled: true  
  11.        settings:  
  12.          #      开启h2 console 跟踪 利便调试  默认 false  
  13.          trace: true  
  14.          #      应承console 长途会见 默认false  
  15.          web-allow-others: true  
  16.        #  h2 会见路径上下文  
  17.        path: /h2-console 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读