本文主要是介绍Flyway自学之路-01(Flyway简介),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.1、Flyway是什么
Flyway是一款数据库迁移(migration)工具。简单点说,就是在你部署应用的时候,帮你执行数据库脚本的工具。Flyway支持SQL和Java两种类型的脚本,你可以将脚本打包到应用程序中,在应用程序启动时,由Flyway来管理这些脚本的执行,这些脚本被Flyway称之为migration。
就目前而言,我们部署应用的流程大概是这样的:
- 开发人员将应用程序打包、按顺序汇总并整理数据库升级脚本
- DBA拿到数据库升级脚本检查、备份、执行,以完成数据库升级
- 应部署人员拿到应用部署包,备份、替换,以完成应用程序升级
引入Flyway之后的应用部署流程大概是这样的:
- 开发人员将应用程序打包
- 应部署人员拿到应用部署包,备份、替换,以完成应用程序升(Flyway将自动执行升级/备份脚本)
1.2、Flyway如何工作
最简单的理解方式是:简单我们在一个空数据库上部署集成了Flyway的应用:
Flyway将在这个空数据中创建一张表,用于记录migration的执行情况,表名称默认为:flyway_schema_histor,老版本的表名称:schema_version
紧接着,Flyway根据表中的记录决定是否执行应用程序包中提供的migration
最后将执行结果写入flyway_schema_histor并校验执行结果
flyway_schema_histor打印有关所有迁移的详细信息和状态信息。
信息可让您知道自己的立场。一览无余,您将看到哪些迁移已被应用,哪些迁移仍在等待执行,何时执行以及它们是否成功。
下次版本迭代时,提供新的migration,会根据flyway_schema_histor的记录执行新migration
验证
对照可用迁移验证已应用的迁移。
验证可帮助您验证应用于数据库的迁移是否与本地可用的迁移匹配。
这对于检测可能阻止您可靠地重新创建架构的意外更改非常有用。
基准线
对现有数据库进行基准测试,不包括直到及包括baselineVersion的所有迁移。
基准是通过将特定数据库作为基准对Flyway引入现有数据库。这将导致Migrate忽略直到基线版本(包括基线版本)的所有迁移。然后,将照常应用较新的迁移。
修理
1.3、Migration
Flyway将每一个数据库脚本称之为:migrations,flyway支持三种类型的migration:
- Versioned migrations:最常用的migration,可以简单的理解为数据库升级脚本
- Undo migrations:数据库版本回退脚本,需要Pro版本,忽略,而且使用过程存在较大风险,undo操作目前只能通过plugin或者command-line来执行
- Repeatable migrations:可重复执行的migration,例如create or replace脚本,当脚本checksums改变时会重新执行
SQL:简单的SQL脚本文件,例如:
/* Single line comment */
CREATE TABLE test_user (name VARCHAR(25) NOT NULL,PRIMARY KEY(name)
);/*
Multi-line
comment
*/
-- Placeholder
INSERT INTO ${tableName} (name) VALUES ('Mr. T');
1.4、所有的migration都需要遵守命名规范
文件名由以下部分组成:
- 前缀:
V
用于版本控制(可配置),U
用于撤消(可配置)和R
可重复迁移(可配置) - 版本:带点或下划线的版本可根据需要分隔尽可能多的部分(不适用于可重复的迁移)
- 分隔符:(
__
两个下划线)(可配置) - 说明:下划线或空格分隔单词
- 后缀:
.sql
(配置)
可选的版本化SQL迁移也可以省略分隔符和描述。
确保版本号唯一,flyway按照版本号顺序执行。repeatable没有版本号,因为repeatable migrations会在内容改变时重复执行。
1.5、官网文档链接
- https://flywaydb.org/documentation/
这篇关于Flyway自学之路-01(Flyway简介)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!