-
執行的程式碼讀寫舊 Schema,即從表、檢視中選擇需要的欄位。這是初始狀態。
-
擴充套件:Schema 被修改,即增加新欄位,但不刪除任何舊欄位。沒有程式碼需要變更。由於此時新欄位沒有被使用,所以如果需要回滾也不會很痛苦。
-
程式碼被修改以使用 Schema 中的新欄位,併發布至生產環境。如果此時發生回滾,只需回滾至第2階段。這個時候,執行資料轉換操作。
-
簽約:訪問不再使用的舊欄位的程式碼會被清除,且被髮布至生產環境。如果此時發生回滾,只需回滾至第 3 階段。
-
從 Schema 中移除舊的不再使用的欄位。這個階段如果發生罕見的回滾事件,則資料庫可簡單回滾至第 4 階段。
-
https://queue.acm.org/detail.cfm?id=2945077
-
https://github.com/bretcope/Mayflower.NET
-
https://bitbucket.org/liamstask/goose