2010-03-07 185 views
0

我正在研究Java Web應用程序(Adobe Flex前端,JPA/Hibernate/BlazeDS/Spring MVC後端),並且很快就會達到無法再擦除數據庫並重新生成它。JDBC SQL Server數據庫遷移

處理DB模式更改的最佳方法是什麼?生產和測試數據庫是SQL Server 2005,開發人員使用MySQL,單元測試針對HSQLDB內存數據庫運行。我很高興讓開發機器繼續使用Hibernate擦除並重新加載來自示例數據的數據庫以重新生成表格。但是,對於生產部署,DBA希望有一個他可以手動執行的DDL腳本。

因此,我的理想解決方案是我可以編寫Rails式遷移,在測試服務器上執行它們,並在驗證它們能夠寫出DBA可以在生產環境中執行的SQL Server DDL後執行它們服務器(並且已經被驗證可以再次運行測試服務器)。

這是什麼工具?我應該手動編寫DDL(並讓開發機器使用Hibernate重新生成數據庫)?我可以使用像migrate4j這樣的工具嗎(它似乎對SQL Server的支持有限,如果有的話)?

我還希望將DB操作腳本集成到此過程中(例如,通過分割所有現有字符串的JDBC腳本將「Name」字段轉換爲「First Name」,「Last Name」字段) 。

任何建議將不勝感激!

回答

1

處理DB模式更改的最佳方法是什麼?

冪等change scripts一個版本表(並與一些比當前存儲在版本表的版本時應用所有更改腳本的工具)。還請檢查提到的信息Bulletproof Sql Change Scripts Using INFORMATION_SCHEMA Views

要實現這一點,你可以推出自己的解決方案,或使用現有的工具,如DbUpdater(在change scripts意見所),LiquiBasedbdeploy。後者有我的偏好。

+0

這是完美的。 LiquiBase是我正在尋找的確切工具。謝謝! – zpinter 2010-03-07 05:47:45

0

我依靠hibernate在生產服務器上創建任何需要的東西。沒有丟失數據的風險,因爲它永遠不會刪除任何東西:它只會增加丟失的數據。

在當前的項目中,我們已經建立了一個約定,通過該約定,需要對數據庫(模式或數據)進行更改的任何功能都需要提供它自己的DDL/DML片段,這意味着我們需要做的就是將片段聚合到一個腳本中並執行它以使生產更新。這些都不是大規模工作(片段的順序變得至關重要,並非每個人都遵循約定等),但是在一個小團隊和一個迭代過程中,它工作得很好。