2011-08-25 178 views
1

通常,數據庫的模式將隨時間而改變。在構建之間,可能會發生零到多個模式更改。捕捉這些變化的「最佳實踐」是什麼?數據庫升級方法

例如,假設2個開發人員正在開發一個項目並使用git進行源代碼管理。他們同意在星期五有一個建設。每個工作都在進行,檢查更新到當前模式的數據庫遷移腳本的更改。當A人獲得B人的變化時,他們如何才能輕鬆知道要運行哪些升級腳本?當一個人在服務器上查看數據庫時,他們怎麼知道他們在哪個版本上?如果數據庫捕捉到版本號,那意味着在星期五,團隊中的一個人不得不對其他人說:「好吧,每個人都檢入,然後我將編寫一個腳本,將版本號更新爲下一個版本號版本並檢查它。「

有沒有一種標準的方法來解決這個問題?謝謝。

回答

1

考慮爲每個數據庫[結構]更改編寫一個遷移,而不是每個系統的穩定版本。就像修改代碼一樣:每次更新都會更新系統並增加它的修訂版本(不是版本)。

通常我們將數據庫修訂(以及「公共」版本)存儲在一個特殊的表格中。有時我們會存儲應用於此數據庫的遷移腳本的名稱,但這是更復雜的解決方案。在文件名中應用遷移之後,可以方便地修改數據庫。遷移腳本的最後一行更新遷移版本的特殊表格。

要確定要將哪些遷移應用於混凝土開發人員的數據庫,只需採用修訂版本號高於存儲在特殊表中的數據庫修訂版的所有遷移。

+0

感謝您的回覆。假設你有兩個開發人員同時工作,他們都對數據庫進行了更改,因此都必須創建一個遷移腳本。他們應該如何知道哪個版本的數據庫?他們不能只是做一個「之前的版本號加1」,因爲他們可能會得到相同的數字。 – skaz

+0

我們在版本控制下存儲數據庫模型並在進行更改時保留鎖定,使用建模工具自動生成遷移腳本,因此您描述的情況是不可能的。您還可以使用源代碼管理鎖定來進行併發更改сщтыусгешмую – artplastika