2010-05-05 85 views
8

由於我正在處理一個新的數據庫項目(在VS2008中),而且我從未從頭開發過一個數據庫,因此我立即開始研究如何在源代碼管理中管理數據庫(在此案例,Subversion)。在源代碼管理中管理我的數據庫

我發現了一些關於SO的信息,包括這篇文章:Keeping development databases in multiple environments in syncOne of the answers in particular指向一些鏈接,所有鏈接都有很好的有用信息。

我正在閱讀K. Scott Allen的series of posts,它描述了他如何管理數據庫更改。從我的閱讀中(請原諒我的問題的無差別),似乎數據庫本身從未被檢入到存儲庫中。相反,可以構建數據庫的腳本以及測試數據(也可以從腳本填充)被檢入到存儲庫中。最終,這意味着,當開發人員測試他或她的應用程序時,這些腳本(構建過程的一部分)將運行。這可以確保數據庫是最新的,但也可以從每個開發人員的計算機本地運行。

這對我有意義(如果我確實正確閱讀)。但是,如果我錯過了某些東西,我會很感激更正或附加的指導。此外,我想問另一個問題 - 這是否也意味着我應該檢查mdfldf從Visual Studio創建的文件?

感謝您的幫助和其他見解。永遠感激。

+0

我可以問一下你最終選擇哪種方法嗎?你是否開發數據庫從生產中退出(確保'好'的測試數據),還是將數據作爲構建過程的一部分進行填充? – 2010-07-01 09:03:12

+1

@David - 目前我們將我們的開發數據庫作爲構建過程的一部分進行填充。在這一點上,我們不需要模仿數據的大小(我們將確保在以後這樣做)。這可能是短視的(同樣,我第一次這樣做),但是,目前我沒有可用的服務器,我只能用於開發數據庫,​​所以我受限於資源可用性。 – JasCav 2010-07-01 12:49:42

+0

所以,如果我理解正確,你沒有使用生產數據庫,因爲你的服務器不能容納這將需要的大小?或者還有其他原因? – 2010-07-01 16:24:28

回答

6

這是正確的,你應該檢查腳本而不是數據庫文件本身。

我不喜歡從測試數據構建,除非數據本身會模仿生產數據的大小(或者,在新數據庫的情況下,有意使用)。爲什麼?因爲針對具有100條記錄的表編寫代碼並不會告訴您它是否會在您有10,000,000條記錄時及時運行。我認爲太多的糟糕的設計選擇是由那些認爲小數據集可用於開發的人所做出的。

在這裏,我們不允許開發者在他們的盒子上有一個單獨的數據庫(通常限制數據庫可以通過不作爲連接到SAN的服務器的大小),相反他們必須針對開發數據庫定期從prod刷新(然後運行所有新的開發腳本)以保持數據的大小。我認爲您的開發數據庫環境儘可能匹配產品非常重要,包括設備配置,數據庫的大小等。沒有比花費很長時間開發更令人沮喪的事情來開發一些根本無法用於產品或必須的產品立即取消,因爲它太慢了系統。

現在跳下我的肥皂箱。

+1

@HLGEM - 關於測試數據的好處。其中一篇文章實際上指出了這一點。 – JasCav 2010-05-05 19:50:19

1

我使用DataConstructor,但我有偏見,因爲我寫了它。

2

檢查腳本是個好主意,因爲源代碼控制最適合使用文本文件而不是二進制文件。作爲與數據庫更改相關的其他代碼更改的一部分,可以輕鬆查看腳本文件中的差異。除了檢入數據庫腳本之外,我們還檢入數據庫模式快照。此數據庫模式快照允許我們驗證生產中的模式是否與給定版本的產品的預期模式相匹配。除此之外,數據庫模式快照是使用純文本編輯器搜索列和表的便捷方式。

0

你可以使用一個工具,如Liquibase管理數據庫腳本。它實際上是一個數據庫升級框架,因此它將跟蹤已經執行的步驟,因此,例如,當您要升級生產時,它只執行新的步驟。