資料庫結構描述變更
現代軟體通常會有一個資料庫層。一般來說會使用關聯式資料庫,其可同時存放資料與資料結構。在持續交付的程序中,經常需要修改資料庫。處理關聯式資料庫中的變更,需要特殊的考量,且會帶來與部署應用程式二進位檔案時不同的其他挑戰。通常,當您升級應用程式二進位檔時,會先停止該應用程式再進行升級,然後再次啟動。您通常不會在意應用程式的狀態,因為這些狀態並非由應用程式處理。
但升級資料庫時,確實需要考慮狀態,因為資料庫包含很多狀態,但相較之下僅包含較少的邏輯和結構。
套用變更之前和之後的資料庫結構描述,應視為不同版本的資料庫。您可以使用 Liquibase 和 Flyway 等工具來管理版本。
一般而言,這些工具採用下列方法的一些變化方式:
-
將資料表新增至存放資料庫版本的資料庫。
-
追蹤資料庫變更命令,並將其整合在版本控制變更集中。Liquibase 會將這些變更存放在 XML 檔案中。Flyway 則採用稍微不同的方法,將變更集做為不同的 SQL 檔案處理,或是有時候針對較為複雜的轉換,將變更集做為不同的 Java 類別處理。
-
當 Liquibase 收到升級資料庫的請求時,其會查看中繼資料資料表,並判斷要執行哪些變更集,以將資料庫升級到最新版本。