zoukankan      html  css  js  c++  java
  • [FlyWay] FlyWay工作原理

      本文译自Flyway官方文档,原文地址https://flywaydb.org/getstarted/how

    当你最开始将FlyWay指向一个空数据库时。

     

    它会试着去查找schema历史表,如果此时数据库是空的,则FlyWAY会自己创建一张历史表 。
    你现在就有了个仅包含空表flyway_schema_history(默认)的数据库

     这张表将会追踪数据库的状态,

    随后flyway会立即扫描应用的文件系统或类路径(classpath)以用于迁移,Sql或Java文件都可以支持迁移。

    迁移会按照版本号进行排序并依次执行:

    随着每次迁移被执行,schema_history历史表会依此更新记录

    flyway_schema_history

    installed_rank

    version

    description

    type

    Script

    checksum

    installed_by

    installed_on

    execution_time

    success

    1

    1

    Initial Setup

    SQL

    V1__Initial_Setup.sql

    1996767037

    axel

    2016-02-04 22:23:00.0

    546

    true

    2

    2

    First Changes

    SQL

    V2__First_Changes.sql

    1279644856

    axel

    2016-02-06 09:18:00.0

    127

    true

     

     

    现在,元数据与初始状态都已就位,可以讨论下迁移到新版本

    Flyway会再次扫描应用的文件系统和类路径,迁移依据历史表检查,如果版本号低于或等于当前版本号,则忽略迁移操作。

    剩下的迁移是增量迁移(pending migrations),准备就绪,但未执行

    它们会按照版本号排序并依次执行:

     schema_history历史表会依此更新记录:

    flyway_schema_history

    installed_rank

    version

    Description

    type

    Script

    checksum

    installed_by

    installed_on

    execution_time

    success

    1

    1

    Initial Setup

    SQL

    V1__Initial_Setup.sql

    1996767037

    axel

    2016-02-04 22:23:00.0

    546

    true

    2

    2

    First Changes

    SQL

    V2__First_Changes.sql

    1279644856

    axel

    2016-02-06 09:18:00.0

    127

    true

    3

    2.1

    Refactoring

    JDBC

    V2_1__Refactoring

     

    axel

    2016-02-10 17:45:05.4

    251

    true

     

    That’s it! 每次数据库需要改进时,无论是DDL或DML,只要创建一个版本号高于目前版本的迁移就行,下次Flyway启动时,它会依次进行数据库的升级操作。

    DDL: Data Definition Language 数据库定义语言

    DML: Data Manipulation Language 数据库操作语言

  • 相关阅读:
    spring学习(十七)--annotion注解
    spring学习(十六)--spring方式实现工程初始化配置
    spring学习(十五)--自己实现BeanFactory
    JDBC使用SPI机制解析
    SPI机制
    spring学习(十三)--自己实现SpringServletContainerInitializer
    cetnos基本操作
    CentOS基本命令
    面向对象的双下方法
    Flask数据连接池 DBUtils
  • 原文地址:https://www.cnblogs.com/easy-tech/p/12047393.html
Copyright © 2011-2022 走看看