我以爲個人商店有一個漏洞,由於咱們沒有一個可靠的流程來版本化咱們的數據庫模式更改。 咱們作了不少備份,因此咱們或多或少都被覆蓋了,但以這種方式依賴你的最後一道防線是很差的作法。 數據庫
使人驚訝的是,這彷佛是一個共同點。 我說過的不少商店都忽略了這個問題,由於他們的數據庫並無常常改變,並且他們基本上只是努力作到細緻。 ruby
可是,我知道這個故事是怎麼回事。 事情排列錯誤只是一個時間問題並且缺乏某些東西。 工具
對此有什麼最佳作法嗎? 有哪些策略對你有用? spa
我相信每一個數據庫都應該受源代碼控制,開發人員應該有一個簡單的方法從頭開始建立他們的本地數據庫。 受Visual Studio for Database Professionals的啓發,我建立了一個腳本MS SQL數據庫的開源工具,並提供了將它們部署到本地數據庫引擎的簡便方法。 試試http://dbsourcetools.codeplex.com/ 。 玩得開心, - 彌敦道。 版本控制
數據庫自己? 沒有 code
建立它們的腳本,包括靜態數據插入,存儲過程等; 固然。 它們是文本文件,它們包含在項目中,並像其餘全部內容同樣進行檢入和檢出。 開發
固然,在理想的世界中,您的數據庫管理工具會這樣作; 但你必須遵照紀律。 部署
我經過保存建立/更新腳本和生成採樣數據的腳原本實現。 get
必須閱讀在版本控制下獲取數據庫 。 查看K. Scott Allen的一系列帖子。 io
在版本控制方面,數據庫一般是第二類甚至是三等公民。 從我所看到的狀況來看,那些在沒有版本控制的狀況下永遠不會想到編寫代碼的團隊在一百萬年以內 - 這是正確的 - 在某種程度上能夠徹底忘記對應用程序所依賴的關鍵數據庫進行版本控制的需求。 我不知道當你的數據庫與其餘代碼徹底沒有徹底相同的源代碼控制級別時,你怎麼稱本身爲軟件工程師並保持直面。 不要讓這件事發生在你身上。 在版本控制下獲取數據庫。
我很是喜歡Rails ActiveRecord遷移。 它將DML抽象爲ruby腳本,而後能夠在源存儲庫中輕鬆進行版本化。
可是,經過一些工做,你能夠作一樣的事情。 任何DDL更改(ALTER TABLE等)均可以存儲在文本文件中。 保留文件名的編號系統(或日期戳),並按順序應用它們。
Rails在數據庫中還有一個「版本」表,用於跟蹤上次應用的遷移。 你能夠輕鬆地作一樣的事情。