2017-03-22 53 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上搜索这个问题一样,你的问题是最重要的结果,我想我的答案可能会帮助某个人走上正轨。

相关问题