您现在的位置是:网站首页> 编程资料编程资料
Flyway的简单介绍及使用详解_其它综合_
2023-05-27 212人已围观
简介 Flyway的简单介绍及使用详解_其它综合_
一、开发时管理数据库遇到的问题:
现在开发一般都是团队开发,这样就会出现项目同步的问题,代码同步可以通过SVN工具管理起来,那数据库同步怎么办呢?理想的情况下,在开发新项目的时候会首先把业务理清楚,把数据库表设计好,然后将数据库交给专门的人员维护,也就不存在数据库同步的问题了。但实际情况呢?需求从项目开始到项目结束一直在变,很多公司就没有专门的数据库维护人员,数据库大家都在操作,都在修改,如果团队之间沟通及时还好,大家每次更新代码后顺便也更新一下数据库,如果沟通不及时,呵呵(大家自行脑补)。。。这样数据库不同步的问题就凸显出来了。
二、Flyway 的简单介绍:
1、概念:
Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像SVN管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。
2、支持的数据库类型:
Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL (including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL (including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix。
3、sql脚本的命名规范:
V+版本号(版本号的数字间以"."或"_"分隔开)+双下划线(用来分隔版本号和描述)+文件描述+后缀名,例如:V2017.9.30__Update.sql。
注:版本号不能相同!
4、Flyway读取sql脚本的默认位置:
项目的源文件夹下的db/migration目录。
5、指令:
一共就6个基本指令:migrate、clean、info、validate、baseline、repair。
三、Flyway 的优势:
1、不仅支持sql 脚本,还支持Java 代码直接操作数据库(flyway-core-x.x.x.jar);
2、有Maven 插件;
3、支持命令行;
4、与Spring 框结合,很方便地实现应用启动时自动检查并升级数据库的功能。
四、Flyway命令行工具的使用:
1、解压下载flyway-commandlin 版本并解压到本地,结构图如下:
2、将sql脚本放在Flyway默认的db/migration目录下,如果放在其他位置需要修改conf/flyway.conf文件中的flyway.locations。
3、根据自己的情况修改conf/flyway.conf文件中的flyway.url、flyway.user、flyway.password。
4、在命令行执行migrate命令。
五、与Maven项目结合使用:
1、引入依赖坐标:
org.flywaydb flyway-core 4.2.0
2、在src/main/resources目录下建立存放sql版本文件的路径dataBase/sqlite(也可以写默认路径db/migration),并将sql文件放在下面。
3、增加flyway的java类:
package com.xxxxxx.flyway; import javax.sql.DataSource; import org.flywaydb.core.Flyway; public class MigrationSqlite { private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void migrate() { //初始化flyway类 Flyway flyway = new Flyway(); //设置加载数据库的相关配置信息 flyway.setDataSource(dataSource); //设置存放flyway metadata数据的表名,默认"schema_version",可不写 flyway.setTable("SCHMA_VERSION"); //设置flyway扫描sql升级脚本、java升级脚本的目录路径或包路径,默认"db/migration",可不写 flyway.setLocations("dataBase/sqlite"); //设置sql脚本文件的编码,默认"UTF-8",可不写 flyway.setEncoding("UTF-8"); flyway.migrate(); } }
4、在spring中实例化第3步的java类:
从上面的bean 定义中我们可以看到,我们为flywayMigration 这个bean 实例注入了一个数据源,Flyway 的所有操作将针对这个数据源进行;同时我们通过init-method 属性指定了Spring 在实例化该bean 以后,主动执行该bean 的migrate 方法,而该方法内会执行Flyway 更新数据库的操作。至此,我们达到了在应用启动时,Spring 实例化上下文的时候,在Spring 实例化flywayMigration 这个bean 的时候,自动执行Flyway 更新数据库的操作。
5、处理Flyway 更新数据库和代码逻辑操作数据库时的冲突(自己目前没遇到,网上找到的,先留着备不时之需):
如果Flyway 还在更新数据库,没有完成更新操作之前,应用程序的其他逻辑已经开始使用数据库进行其他操作了,会导致应用程序产生很多bug ,甚至根本运行不起来。要解决这个问题,我们可以利用Spring 的bean 依赖原理,让关键的数据库操作bean 依赖于flywayMigration 这个bean ,达到在flywayMigration 没有实例化完成(数据库更新操作完成)之前,不能进行任何其他数据库相关操作。
这样,每次启动项目时就会自动更新数据库,不必在为数据库不同步烦恼了。
参考文章:
1、https://flywaydb.org/documentation/ (官网)
2、http://casheen.iteye.com/blog/1749916
3、http://shuzheng5201314.iteye.com/blog/2044517
4、https://www.jb51.net/article/191708.htm
到此这篇关于Flyway的简单介绍及使用的文章就介绍到这了,更多相关Flyway的简单介绍及使用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关内容
- git pull时冲突的几种解决方式(小结)_其它综合_
- 一文读懂吞吐量(TPS)、QPS、并发数、响应时间(RT)概念_其它综合_
- C、C++、Java到Python,编程入门学习什么语言比较好_其它综合_
- Web前端和JAVA应该学哪个?哪个就业形势更胜一筹?_其它综合_
- svn 常用命令集合_其它综合_
- ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境的详细教程_其它综合_
- ol7.7安装部署4节点spark3.0.0分布式集群的详细教程_其它综合_
- fastjson到底做错了什么?为什么会被频繁爆出漏洞?(推荐)_其它综合_
- 盘点网络编程必须要知道的基础知识_其它综合_
- 程序员鼓励师插件Rainbow Fart(彩虹屁)_其它综合_
点击排行
- TYSB手游公测版下载-TYSB官方唯一正版手游下载 _安卓网
- 青云传之琉璃梦手游下载-青云传之琉璃梦官方版下载 v5.7.0安卓版_安卓网
- 爆枪突击专用修改器下载-爆枪突击无限兑换码 v1.0.0.3辅助修改_安卓网
- 丛林动物宝宝发型沙龙游戏-丛林动物宝宝发型沙龙(休闲装扮)Baby Jungle Animal Hair Salon v1.0.10_安卓网
- 洗牌猫下载-洗牌猫(卡牌对战)Shuffle Cats v0.14.8_安卓网
- 终极奥特超人50周年版下载-终极奥特超人50周年版(奥特曼正版授权) v2.3_安卓网
- project h手机|project h安卓-project h手机版(虚拟空间女友)预约 v1.0_安卓网
- project h试玩版-project h手游试玩版预约 v1.0_安卓网