2008-12-02 48 views
9

對於那些敏捷開發人員...敏捷開發和數據庫更改

如何在項目中管理對數據庫模式的更改?我的假設是,在敏捷項目中,涉及的任何數據庫的模式都會隨着代碼庫的變化而重構。

這個假設是否正確?如果是這樣,您是否有任何特定的工具或流程用於幫助保持流暢運行?

+0

幾年後,有關於這個問題備受推崇的書(雖然我還沒有得到解決,以購買或閱讀它尚未)調用,我已經使用了巨大的成功[ Code First Entity Framework Migrations](http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework在一個asp-net-mvc-應用程序)來實現這一點! – 2016-03-08 15:41:13

回答

7

AgileData.org對於敏捷數據庫開發來說,這是一個很好的資源 - 遠遠超過我對單個響應的壓縮。特別是,您可能對Agile Data Best Practices感興趣。如果您使用SQL Server,您可能也會對Red Gate軟件中的SQL Compare產生興趣。我們的數據庫管理員使用它來幫助我將現有應用程序的變更從QA遷移到生產。

+0

@redGate對於dba非常方便。 – dove 2008-12-02 14:45:06

+0

我們已經在使用Red Gate的ANTS,並且對它非常滿意,所以我一定會檢查一下SQL Compare。感謝tvanfosson! – 2008-12-02 14:46:52

1

理想情況下,您可以進行不中斷的更改,然後在發佈完成後,可以完全棄用架構的舊部分。這並不容易,需要紀律。這甚至不可能。

2

在我們的敏捷設置中,有一個用於更改數據庫的文件夾,以.SQL文件形式完成。到目前爲止,我們在每個版本中都進行了數據庫更改,並且該文件以應用程序版本命名。安裝腳本在更新站點時自動應用所有更改文件。

我們還有一個參考數據庫的完整模式轉儲,用於由我們的數據庫管理工具創建的新安裝。

我知道有些工具可以幫助自動執行此過程,例如Red Gate,但手動創建SQL更改文件非常簡單。

5

每次更新時,我會:

  • 部署前滾和回滾腳本,
  • 部署「建立DB從頭開始」的劇本,
  • 部署數據遷移腳本,
  • 強制執行一種機制,將代碼鎖定到數據庫版本,即測試返回數據庫當前版本的值,如果存在不匹配,系統將大聲放棄關於不匹配的聲音。

HTH

歡呼聲,

羅布

0

數據庫結構是最有可能是你的代碼的很多地方的依賴性和模式的變化將有連鎖效應。有點像對許多類擴展的類中的接口進行更改。因此,謹慎對待模式更改。

敏捷方法與其他方法沒有區別,因爲儘可能多地設計數據庫對您有益,您應該儘量不要頻繁更改代碼。並不是說你永遠不能改變它,但這樣做成本很高。正如其他人已經注意到的,遷移是跟蹤模式變化的簡單而有效的工具。這個概念是CREATE和ALTER語句的腳本,從架構的一個版本升級到下一個版本,伴隨着ALTER和DROP語句的腳本以降級相同的更改。 Ruby on Rails在此基礎上使用數據庫抽象層,以便更換數據庫品牌,但如果只需要支持一個品牌,則可以簡單地使用SQL文件。

由Scott Ambler的「Refactoring Databases: Evolutionary Database Design