2017-03-22 100 views
2

我有一個與Flyway DB遷移有關的問題。如何通常管理處理相同數據庫模式的多個項目(微服務)。如果項目被其他項目修改,則每個項目中的Flyway遷移腳本都不允許啓動。他們是否有相同的文件或最佳實踐?具有單個架構和多個項目的飛路遷移

+0

理想情況下,每個微服務應該管理自己的數據並擁有單獨的數據庫模式。這是一個糟糕的做法,違反了微服務體系結構的規則以在服務之間共享數據庫模式。 – sezerug

+1

雖然您的觀點是有效的,DB模式應該由單個模塊進行管理(包括遷移),但它可以被許多模塊共享。帶有共享數據庫的微服務體系結構並不是什麼新東西,我認爲它是數千個用例中廣泛使用的體系結構。 – user3808122

回答

1

爲了什麼值得,這就是我們所做的。由於架構是由多個項目共享的,因此我們通過單個項目來管理架構,其任務是維護所述架構。集中化模式創建和維護還有其他好處,因爲我們有單一的變更軌跡。我們無需掃描多個項目進行更改。

我真的認爲這是最好的解決方案。我不相信flyway有項目間模式依賴管理。

+0

這個單獨的項目是否僅包含Flyway配置和遷移文件,或者您是否還將所有應用程序SQL語句(普通'SELECT's等)移動到此中央項目? –

0

我們正在這樣做。我們有一個管理模式創建/管理的中心項目,其他項目都通過自己的飛行路徑版本控制自己的功能創建。這是通過更改那些其他項目檢查其模式版本的表的名稱以及將遷移設置爲true時的基線來完成的。我們使用spring/flyway-db移植,因此除了第一個項目之外,這僅僅是爲每個項目增加了以下內容到application.properties

flyway.baselineOnMigrate=true 
flyway.table=schema_verison_*<some_other_identifier>* 

我知道你的問題沒有specifiy彈簧結構明確,但我相信這可以配置你如何使用遷徙路線沒有關係。我想發表一個答案,就像我自己在Google上搜索這個問題一樣,你的問題是最重要的結果,我想我的答案可能會幫助某個人走上正軌。