[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 數據庫操作語言


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM