数据库版本管理工具Flyway(4.0.3)---工作机制(译文)
How Flyway works
The easiest scenario is when you point Flyway to an empty database.
最容易的方案是Flyway指向一个空的数据库。

It will try to locate its metadata table. As the database is empty. Flyway won't find it and will create it instead.
FlyWay将试图查找它的元数据表。因为数据库是空的。Flyway找不到它的元数据表,然后就会去创建它的元数据表。
You now have a database with a single empty table called SCHEME_VERSION by default:
现在呢,我们就有一个数据库,这个数据库包含一个缺省的空表SCHEME_VERSION :

This table will be used to track the state of the databse.
这张表将被用于监测数据库的状态。
Immediately afterwards Flyway will begin scanning the filesystem or the classpath of the application for migrations.They can be written in either Sql or Java.
紧接着Flyway将开始扫描文件系统或者应用的类路径进行迁移。这些迁移文件可以是SQL脚本或者是java程序。
The migrations are then sorted besed on their version number and applied in order.
这些迁移文件按照版本号进行排序并且按照这个排序去执行。

As each migration gets applied,the metadata table is updated accordingly:
当每一个迁移文件被执行后,元数据的表就会按照格式进行更新。
schema_version

With the metabata and the initial state in palce,we can now talk about migrating to newer versions.
这样我们就可以根据元数据和数据库初始化的状态,进行数据库升级了。
Flyway will once agein scan the filesystem or the classpath of the application of the migrations. The migrations are checked against the metadata table. If their version number is lower or equal to the one of the version maked as current, they are ignored.
当Flyway 再次扫描迁移的时候,它就会检查元数据表中迁移版本,如果要执行的迁移脚本的版本小于或者等于当前版本,Flyway将会忽略,不再重复执行。
The remaining migrations are the pending migrations : available , but not applied.
剩下的迁移脚本将会被执行迁移:可获取的并且没有被执行过的脚本。

They are then sorted by version number and executed in order:
这些迁移文件根据版本号进行排序并且有序执行。

The metadata table is updated accordingly:
元数据的表也会做相应的更新:

And that's it! Every time the need to evolve the database arises, whether structure (DDL) or reference data (DML), simply create a new migration with a version number higher than the current one. The next time Flyway starts, it will find it and upgrade the database accordingly.
这样的话,每次要做数据库升级,无论是执行DDL语句还是执行DML语句,所有的解决的问题的就是创建一个高于现在版本的迁移文件。当下一次Flyway开始运行的时候,它将会自动发现升级脚本,执行并且更新元数据表。
数据库版本管理工具Flyway(4.0.3)---工作机制(译文)的更多相关文章
- 数据库版本管理工具Flyway(4.0.3)---介绍(译文)
Flyway Evolve your Database Schema easily and reliably across all your instances 简单的.可靠的升级(发展)你的数据库模 ...
- [jOOQ中文]3. 数据库版本管理工具Flyway
https://segmentfault.com/a/1190000010526452 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松. 在本章中,我们将简单的来使用这两个 ...
- 数据库版本管理工具--Flyway的使用
软件开发正常流程是:开发环境 ---> 测试环境 ----> 产环境 在开发过程中经常需要变更数据库: 表结构变更. 基础数据变更. 最直接的做法是:用客户端连上数据库直接修改. 依次修 ...
- 数据库版本管理工具Flyway——基础篇
Flyway 默认规约 SQL 脚本文件默认位置是项目的源文件夹下的db/migration 目录. Java 代码默认位于db.migration 包. SQL 脚本文件及Java 代码类名必须遵循 ...
- 数据库版本管理工具flyway
引入flyway_core jar包 java 代码实现 public class FlywayMigration { @Resource private DataSource dataSource ...
- 【flyway】开源的数据库版本管理工具【migration】
开源的数据库版本管理工具[migration] 记录
- 在SpringBoot中使用flyway进行数据库版本管理
本文大纲 flyway是什么 能帮助我们解决什么问题 springboot环境下使用flyway flyway的工作原理 一.flyway是什么 Flyway是一个开源的数据库版本管理工具,并且极力主 ...
- Java敏捷数据库迁移框架——Flyway
1.引言 想到要管理数据库的版本,是在实际产品中遇到问题后想到的一种解决方案,当时各个环境的数据库乱作一团,没有任何一个人(开发.测试.维护人员)能够讲清楚当前环境下的数据库是哪个版本,与哪个版本的应 ...
- 使用alembic进行数据库版本管理
前言 随着项目业务需求的不断变更,数据库的表结构修改难以避免,此时就需要对数据库的修改加以记录和控制,便于项目的版本管理和随意的升级和降级. Alembic就可以很好的解决这个问题.Alembic是S ...
随机推荐
- ajax与Servlet
1.后台返回text类型的数据 <%@ page language="java" import="java.util.*" pageEncoding=&q ...
- IIS与ASP.NET 通信机制深度剖析
IIS5.X缺点: ISAPI 动态连接库被加载到InetInfo.exe 进程中,它和工作进程之间是一种典型的跨进程通信方式,尽管采用命名管道,但是仍然会带来性能的瓶颈. 所有的 ASP.NET 应 ...
- URI、URL、URN
URI.URL.URN URI(Uniform Resource Identifie):统一资源标识符 URL(Uniform Resource Locator):统一资源定位符 URN(Unifor ...
- (转)jQuery Validate 表单验证
在做网页表单时时常需要在客户端对表单填写的数据进行验证一番才能提交,我们可以通过自己编写JavasScript代码来验证,但是有时数据量过多时就会有些难度了.基于jQuery的jquery.valid ...
- Linux命令行文本处理工具
关键字搜索: grep 关键字 指定文件 -i 搜索时忽略大小写 -n 显示结果所在行 -v 显示不包含关键字的行 基于列的文本处理: cut -d: -f1 /etc/passwd -d ...
- 【转】三十分钟学会STL算法
转载自: http://net.pku.edu.cn/~yhf/UsingSTL.htm 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把 ...
- JUnit报initializationError的解决方法
在新搭建的环境上测试时,一个模块发现错误: java.lang.NoClassDefFoundError:org/hamcrest/SelfDescribing 一看就是缺少Class.多方查找,发现 ...
- printf格式输出总结
#include<stdio.h> #include<string.h> int main() { ]; ; floa ...
- 开VPN后能上网
@echo ************************************************************************:start@echo off set /p ...
- Bug :”解压压缩文件失败: cpio; 在头中不存在归档“
问题描述: 在rpm包目录下执行rpm -ivh *rpm -force时,出现标题错误 解决办法: *src.rpm包也就源码包不能被直接进行安装,需要先将src.rpm包进行编译生成二进制的rpm ...