2012-06-26 50 views
2

我目前正在開發一個項目,其中當前版本的產品部署在多個客戶端站點上。更常見的情況是,我們不在我們的開發/測試環境中測試並廢棄(a.k.a. refactor :)數據庫設計。無法跟蹤對數據庫的每次增量更改以創建相應的「遷移文件」。現在,當我們對DB設計感到滿意時(相對穩定),我們需要將生產數據庫更新爲當前狀態。在生產中重構數據庫的最佳實踐?

我們的生產系統不能只發布DROP/CREATE SCHEMA命令來更新模式(想想會丟失的作業,包括我的內容:)因此,我們着手編寫MySQL轉儲或應用程序包裝來備份數據並重新輸入到數據庫中。非常麻煩,特別是當多個「客戶端」不在相同的數據庫版本時。爲每個客戶端版本編寫一個代碼非常麻煩。

那麼您在生產中重構數據庫的最佳實踐有哪些,尤其是當您不能只刪除那些數據,但需要重新輸入並在系統「停機」後無縫繼續系統時,您可以採用哪些最佳實踐?

如果它是任何使用的後端是java /的Restlet和MySQL

回答

2

您可以使用在書中描述Refactoring Databases數據庫重構模式,看到了網站數據庫重構http://databaserefactoring.com/。使用遷移方法,您不需要刪除並創建數據庫。諸如[dbdeploy],[dbmaintain],[ibatis migrator],[liquibase]等工具可以幫助您。

+0

我已經意識到重構*技術*。我擔心的是「如何處理由於重構造成的數據遷移」,而不是如何處理重構本身。本書和它的網站參考都在我的書架上......但它們並不關注發生在「重構後」的數據遷移問題 – PhD

+2

爲什麼你接受了答案? – Cengiz