关于flyway:器篇Flyway-Flyway-概述

一.引言来在软件我的项目开发工程中,一般来说我的项目都是几个开发人员齐头并进的,经常遇到的事件是,大家都同时提交数据库表批改语句后,并不告知其它人,或者几个开发人员同时批改一个表构造,导致其他人运行我的项目出错。 还有在我的项目上线运行过程中,经常会因为治理数据库表构造或者表数据版本而发愁,甚至有的时候还不得不为生产数据做迁徙操作。 以上的问题,咱们个别的操作都是约定+脚本,但效率不高,并且经常会因为版本抵触,不得不手动merge。这个时候一个麻利工具,用于数据库的移植的Flyway利用而生,它的次要用于在你的利用版本一直降级的同时,降级你的数据库构造和外面的数据。 二、介绍来1. Flyway 的特色Flyway 大受欢迎是因为它具备如下劣势: 简略 很是容易装置和学习,同时迁徙的形式也很容易被开发者承受。专一 专一于用作数据库迁徙、版本控制而并无其它副作用。弱小 专为间断交付而设计,让Flyway在应用程序启动时迁徙数据库。2. Flyway 的工作机制Flyway 须要在 DB 中先建设一个 metadata 表 (缺省表名为 flyway_schema_history), 在该表中保留着每次 migration (迁徙)的记录, 记录蕴含 migration 脚本的版本号和 SQL 脚本的 checksum 值。下图示意了多个数据库版本。 对应的 metadata 表记录:spring installed_rankversiondescriptiontypescriptchecksuminstalled_byinstalled_onexecution_timesuccess11Initial SetupSQLV1__Initial_Setup.sql1996767037axel2016-02-04 22:23:00.0546true22First ChangesSQLV2__First_Changes.sql1279644856axel2016-02-06 09:18:00.0127trueFlyway 扫描文件系统或应用程序的类门路读取 DDL 和 DML 以进行迁徙。依据metadata 表进行查看迁徙。**若是脚本申明的版本号小于或等于标记为以后版本的版本号之一,将疏忽它们。其余迁徙是待处理迁徙:可用,但未利用。最初按版本号对它们进行排序并按程序执行 并将执行后果写入 metadata 表。 对应的 metadata 表记录:数据库 installed_rankversiondescriptiontypescriptchecksuminstalled_byinstalled_onexecution_timesuccess11Initial SetupSQLV1__Initial_Setup.sql1996767037axel2016-02-04 22:23:00.0546true22First ChangesSQLV2__First_Changes.sql1279644856axel2016-02-06 09:18:00.0127true32.1RefactoringJDBCV2_1__Refactoringaxel2016-02-1017:45:05.4251trueFlyway 反对命令行(须要下载命令行工具)和 Java Api ,也反对构建工具 Maven 和 Gradle 。这里咱们将眼光放在 Java Api 上。 ...

November 19, 2020 · 2 min · jiezi