我有一個Java應用程序(通用),通過休眠使用數據庫。我通過罐子將它運送給客戶。向客戶端發送數據庫更新(模式和數據)的最佳方式是哪一種? 請考慮客戶端可以具有不同版本的應用程序,並且更新必須是自動的,無需用戶支持。 如果應用程序是用grails編寫的?如何運送數據庫更新?
回答
您可以通過跟蹤當前的模式版本(即版本號)並使用修補程序文件將模式升級到下一個版本來完成此操作。您可以不斷增加應用修補程序,直到您達到新的產品/更新版本。
E.g. 說客戶是在修訂5您已經自運出修訂10和12,但他只更新到最新版本 - 15
你可以這樣做:
foreach rev in [clientRev ... currentRev]:
apply rev.patch
所以你就可以申請該修補程序可以提高到10版;然後另一個將它帶到第12回合;那麼另一個將它帶到第15回合;
如果一個不同的客戶端已經在rev 12,他們只需要應用最後一個補丁。
這是肯定的。但是我必須通過我自己來實現它?這是一個非常普遍的問題,有沒有解決方案?這就像在rails中的數據庫遷移一樣,不同之處在於,在rails的ruby中,我們默認使用它是由rails生成的。 – tapioco123 2010-09-21 17:45:22
正如@ user779所說的,保持每種格式的變化是一種方式。 Grails documentation提到了一些庫,可能會拿出一些辛苦的工作:LiquiBase和DbMigrate。
如果我不使用Grails? – tapioco123 2010-09-22 06:31:10
LiquiBase和DbMigrate不是Grails特有的 - 我只是將Grails插件鏈接到每個插件。看看他們的網站! – Nick 2010-09-22 16:02:03
(+1):LiquiBase – Ralph 2011-02-24 12:10:46
您可以在您的發行版中發佈Ruby和Active Record Migrations,並讓您的更新程序執行新的遷移。
有一個叫tapestry5-DB-遷移
- 1. 如何更新數據庫?
- 2. 如何更新數據庫
- 3. 如何更新數據庫更新數據庫
- 4. 在ASP.Net如何更新數據庫發送HttpResponse後
- 5. 如何在數據庫更新時發送提醒
- 6. 從Team City運行更新數據庫
- 7. 當更新Firebase數據庫時發送通知更新
- 8. 如何調用「更新,數據庫」
- 9. 如何使用MyBatis更新數據庫?
- 10. 如何更新MS Access數據庫
- 11. 如何更新angular2 firebase數據庫?
- 12. 如何自動更新SQL數據庫
- 13. 如何更新SQLite數據庫
- 14. 如何更新Firebase數據庫
- 15. 如何從android更新mysql數據庫
- 16. 如何監視oracle數據庫更新?
- 17. WiX:你如何去更新數據庫?
- 18. 如何更新Android媒體數據庫
- 19. 如何更新到數據庫中
- 20. 如何使用ADODB.Recordset更新數據庫?
- 21. 如何更新MS Access數據庫(vb.net)
- 22. JDBC如何更新數據庫?
- 23. 如何更新一個SQL數據庫
- 24. 如何將json數據從網址發送到數據庫並進行更新
- 25. 數據庫更新
- 26. 更新數據庫
- 27. 數據庫更新
- 28. 更新數據庫
- 29. 數據庫更新
- 30. 更新數據庫
你想發佈一個新的罐子,並在遷移執行時的罐子被加載(只依賴於tapestry5 IOC)的軌道遷移的渣口?或者你有可以執行的代碼來更新數據庫嗎? – 2010-09-21 17:49:36
查看http://stackoverflow.com/questions/2103646/grails-database-migration – 2010-09-21 19:09:40
沒有grails? – tapioco123 2010-09-22 13:09:54