整天跟數據庫打交道的程序員都知道,當數據庫的Schema發生改變時是多么痛苦的事情。尤其是一個在不斷開發完善的項目,隨著需求變化,數據庫的schema也會跟著變化,而追蹤記錄這些變化一向都是費時費力。如果你擁有多個測試環境,那么保證這些環境下的數據庫的一致性的難度會成倍增加。
Flyway,一款小工具,應用它能夠大大簡化這方面的工作。
它的優點:
convention over configuration,配置簡單,使用方便;支持Sql及Java配置;
支持當前幾乎所有的主流數據庫;
擁有命令行工具、Maven、Gradle插件….應用場景廣泛。
使用它之前先要了解一些概念:
版本:對數據庫的每一次變更可稱為一個版本。
遷移:Flyway把數據庫結構從一個版本更新到另一個版本叫做遷移。
可用的遷移:Flyway的文件系統識別出來的遷移版本。
已經應用的遷移:Flyway已經對數據庫執行過的遷移。
如何使用:
以Sql配置舉例,建立一個文件夾用來存放所有數據庫修改記錄。
每次修改以’V版本號__描述.sql’的方式命名。比如V1__initial_version.sql, V2.1__create_table.sql,V2015.01.05__drop_view.sql
Flyway會根據文件名自動識別版本順序,并根據這些版本順序來應用數據庫修改。
配置
以使用Flyway的命令行工具為例。安裝命令行工具后,運行時Flyway會根據以下路徑來尋找配置文件。
安裝目錄/conf/flyway.properties
用戶目錄/flyway.properties
當前目錄/flyway.properties
或者直接在命令行使用 -configFile=myfile.properties
來指定文件。
配置文件的一個示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
命令行工具的幾個命令:
Clean: 刪除所有創建的數據庫對象,包括用戶、表、視圖等。
Migrate: 對數據庫依次應用版本更改。
Info:獲取目前數據庫的狀態。那些遷移已經完成,那些遷移待完成。所有遷移的執行時間以及結果。
Validate:驗證數據庫結構與遷移腳本的異同。
Baseline:根據現有的數據庫結構生成一個基準遷移腳本。
進階
flyway提供sql配置和Java配置兩種方式。sql配置可以方便實現對DDL的修改、一些引用數據的修改;而Java的方式則更強大些,可以應用更為復雜的場景,比如對某個數據表中的數據進行一些邏輯處理。具體使用請參見官方文檔:(http://flywaydb.org/documentation/migration/java.html)http://flywaydb.org/documentation/migration/java.html
熟悉Ruby On Rails的程序員都知道Ruby On Rails自帶一個數據庫遷移工具,這個和那個差不多,可以說下JVM平臺的數據庫遷移工具,彌補了JVM平臺下維護數據庫Schema的不足。
文章列表
留言列表