Flyway自学之路-01(Flyway简介)

2024-06-22 10:58
文章标签 自学 01 之路 简介 flyway

本文主要是介绍Flyway自学之路-01(Flyway简介),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.1、Flyway是什么

Flyway是一款数据库迁移(migration)工具。简单点说,就是在你部署应用的时候,帮你执行数据库脚本的工具。Flyway支持SQL和Java两种类型的脚本,你可以将脚本打包到应用程序中,在应用程序启动时,由Flyway来管理这些脚本的执行,这些脚本被Flyway称之为migration。

就目前而言,我们部署应用的流程大概是这样的:

  1. 开发人员将应用程序打包、按顺序汇总并整理数据库升级脚本
  2. DBA拿到数据库升级脚本检查、备份、执行,以完成数据库升级
  3. 应部署人员拿到应用部署包,备份、替换,以完成应用程序升级

引入Flyway之后的应用部署流程大概是这样的:

  1. 开发人员将应用程序打包
  2. 应部署人员拿到应用部署包,备份、替换,以完成应用程序升(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:

  1. Versioned migrations:最常用的migration,可以简单的理解为数据库升级脚本
  2. Undo migrations:数据库版本回退脚本,需要Pro版本,忽略,而且使用过程存在较大风险,undo操作目前只能通过plugin或者command-line来执行
  3. 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简介)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084093

相关文章

rust 中的 EBNF简介举例

《rust中的EBNF简介举例》:本文主要介绍rust中的EBNF简介举例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 什么是 EBNF?2. 核心概念3. EBNF 语法符号详解4. 如何阅读 EBNF 规则5. 示例示例 1:简单的电子邮件地址

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看