基于Flyway的版本管理实践 2020-08-24

基于Flyway的版本管理实践一、 为什么使用FlywayFlyway是一款开源的数据库版本管理工具,可以和SpringBoot/Cloud框架+Mysql/Oracle类的项目结合使用。对于数据库端使用Oracle系统中复杂数据库对象时,更加能提高数据库端代码或脚本版本管理的工作效率。 通常Java类项目的版本管理都是用SVN或Git进行代码管理的,在使用Flyway之前,数据库端的代码,例如DDL/DML的SQL脚本,Oracle Function或Procedure的P
摘要由CSDN通过智能技术生成

一、 为什么使用Flyway

Flyway是一款开源的数据库版本管理工具,可以和SpringBoot/Cloud框架+Mysql/Oracle类的项目结合使用。对于数据库端使用Oracle系统中复杂数据库对象时,更加能提高数据库端代码或脚本版本管理的工作效率。

二、Flyway的工作机理说明

开始先介绍一下Flyway 的工作机理。

数据库端代码,通常指的SQL脚本,在数据库上进行部署时,无法像java代码一样直接替换,而只能按增量叠加的方式进行部署。这样在SVN上进行版本管理,从SVN上拉取的版本源代码无法在各个环境中直接执行。如何能做到在不同环境的数据库上增量部署解决呢?Flyway采用的方式是在每个环境中记录下当前数据库代码版本,然后对照当前版本比较后,执行后面增量版本的部分脚本。

实际上Flyway对每一个SQL脚本都必须进行版本编号,约定代码执行的先后顺序,然后用数据库表记录下每个SQL脚本执行的记录。这样当项目版本迁移到下一个版本时,则会在Flyway启动时增量执行剩下未被执行的数据库端的SQL脚本。

具体执行的步骤有下面几点:

1)当创建一个新项目时,Flyway会在数据库中新建一个Schma历史表,例如:schema_version,表名可以在Flyway项目的yml配置中进行定义;创建的这个表被用于跟踪数据库脚本执行记录;

Schema历史表结构如下:
在这里插入图片描述

各个字段如下:

version_rank 版本顺序

installed_rank 执行顺序

version 脚本的版本编号,从文件名中获取

description 脚本的描述,从文件名中获取

type 脚本类型(SQL、java)

script 脚本路径和名称

checksum 校验数

installed_by 脚本执行数据库用户

installed_on脚本执行时间

execution_time 执行耗时(毫秒ms)

Success字段表示了脚本是否执行成功(1:成功 0:失败),执行失败Flyway将自动停止卡在执行失败的脚本位置

2)当Flyway下次再启动时,Flyway会去扫描这个Schma历史表;

3)接着Flyway会扫描应用下面的文件系统或类路径,找到用于数据库执行的SQL脚本清单;

4

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值