hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

在SpringBoot中运用flyway举行数据库版本治理

2019-11-18杂谈搜奇网36°c
A+ A-

本文纲要

  • flyway是什么
  • 能协助我们处置惩罚什么题目
  • springboot环境下运用flyway
  • flyway的事情道理

一、flyway是什么

Flyway是一个开源的数据库版本治理东西,而且尽力主意“商定大于设置”,简朴、专注、壮大。可以运用SQL完成数据同步,或许基于特定数据库的语法(比方PL / SQL,T-SQL等)或Java代码(适用于高等数据转换或处置惩罚LOB)的体式格局编写。而且数据库支撑异常普遍:

二、能协助我们处置惩罚什么题目

那末,我们起首解释一下什么是数据库版本治理?

  • 人人都晓得git是协助软件项目举行代码版本的治理,轻易顺序员协同开辟
  • 那末FlyWay就是数据库版本治理的东西,目标是保证多环境下数据库的状况一致性,轻易顺序员协同开辟

举个简朴的例子:

  • 开辟职员一般运用同一个数据库或许自建库举行开辟事情,这个数据库一般叫做开辟库。
  • 测试职员为了保证测试数据的有用性,一般自建一个库举行测试,这个数据库叫做测试库。
  • 贩卖职员为了保证演示数据的结果,一般也须要一个零丁的数据库,这个数据库叫做演示库。
  • 正式生产上线的库,供应用户运用,这个数据库叫做生产库。

那末题目就来了:我们怎样保证数据库schema的状况一致?某一个开辟职员修正了开辟库,新增了一个字段,怎样可以有用的同步到测试库,测试经由过程以后怎样有用的同步到演示库和生产库?在没有Flyway之前,这个行动一般是由上线顺序员本身去实行SQL来完成的,或许比较正规的公司特地有版本治理职员去操纵。这类体式格局一般存在几个题目:

  • 开辟团队内部的沟通本钱增添,比方某一个成员修正了一个数据库字段,其他人能够都不晓得。
  • 开辟团队和测试团队和其他团队之间的沟通本钱增添
  • 没法完成自动化的延续集成,延续集成的历程代码可以经由过程git、maven、docker、k8s等东西来完成自动化的代码打包、布置。然则数据库的状况变化没有获得有用的自动变动,延续集成的历程的自动化就没法完成。

这也就是我们进修Flyway的目标:Flyway可以自动的协助我们有用的同步各个宣布数据库之间的状况,不论你是加了或许删了一个字段,照样新加了一张表,他都能自动化的追随项目标宣布同时宣布。

三、 springboot环境下运用flyway

起首,我们为SpringBoot项目增加Flyway依靠


<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>6.0.7</version>
</dependency>

然后我们要保证数据库内里有spring.datasource的数据源设置。而且在application.properties中增加以下的设置


spring:
  flyway:
    enabled: true    #启用flyway
    encoding: utf-8   #字符编码
    locations: ["classpath:db/migration"]  #版本掌握文件寄存目次

然后在resources/db/migration目次下面,到场以下花样的剧本:


V1.1__create_table.sql
V1.2__update_person_table.sql
V1.3__create_new_table.sql
V1.4__add_person_comment.sql
V2.1__modify_person_data.sql

大写V背面紧跟数据库剧本的版本号(递增情势、不能反复),然后两个下划线,以后是对剧本内容举行形貌。如:V1.1__create_table.sql是用于建立表构造的数据库剧本,内容是create table之类的DDL。 第二个剧本是对数据库中person表举行了更新。总之剧本内里的内容,就是你愿望对spring.datasource代表的数据库举行的操纵,可所以表的建立、删除、修正,也可所以对数据的建立删除修正。

固然,我个人不发起将DML-SQL写入剧本,也就是不要在这个剧本内里写insert、update、delete。以避免不注意的情况下,形成生产数据的误操纵。假如你们公司在生产上线治理方面没有严厉的考核顺序,在生产环境下,就痛快不要运用flyway,轻易开辟是一方面,生产平安更为重要!

末了,启动SpringBoot项目,在该目标库范围内没有实行过的SQL剧本被实行。并将剧本实行信息保留在数据库的schema_version_history数据表内里。

四、FlyWay的事情道理

  • 起首项目启动flyway会去db/migration下面扫描文件,猎取文件名,并剖析版本号
  • 然后去schema_version_history表内里找对应的版本实行信息,假如你的文件版本号大于数据库纪录版本,就实行剧本。不然就疏忽。

    期待您的关注

  • 博主近来新写了一本书:《手摸手教您进修SpringBoot系列-16章97节》
  • 本文转载说明出处(必需带衔接,不能只转笔墨):字母哥博客。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
在SpringBoot中运用flyway举行数据库版本治理

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282296.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>