我正在爲每個客戶創建一個數據庫模式。所以,無論何時註冊新客戶,我都需要在運行時快速創建模式。數據庫遷移:單個創建腳本與更改集
選項1
在運行時,使用Liquibase(或同等)運行所有的變更生成最新的模式。
缺點:
- 這是緩慢的,也可以是多個歷史變遷setsa現在是不相關的話(create table和一年後放棄它)。
- Liquibase在運行時用於此處,而不僅僅是「遷移時間」。不知道這是不是一個好主意。
- 將Liquibase作爲構建模式的一種手段,將迫使所有開發人員在開發過程中使用它。我們儘量避免向開發人員加載更多工具。
選項2
每個版本後,我們使用生成變更Liquibase臨時DB。然後從數據庫中創建一個基於當前快照的乾淨模式創建腳本。然後,當新客戶來到時,我們只運行乾淨的腳本,而不是完整的變更集歷史記錄。
缺點:
- 下一次,我跑liquibase它會嘗試從變更1.運行一種解決方法可能是在生成腳本以包括變更表的創建,並插入到它的最新變更。
- 使用一個腳本創建新模式,而舊模式經歷變更集過程。理論上這可能會導致不同的模式。但是,單個腳本也經歷了變更集過程,所以我不能想到會導致錯誤的確切情況,這是目前的一個理論問題。
您怎麼看?