【问题标题】:Using Flyway in modular applications在模块化应用程序中使用 Flyway
【发布时间】:2017-06-06 11:57:06
【问题描述】:

我们有一个模块化应用程序,每个应用程序创建自己的表(通常是一张两张)并管理数据。

我们在主应用程序中使用 Flyway,但我们的模块也需要它。但是,如果我们将补丁添加到我们的主应用程序,如果没有安装相应的模块,ALTER TABLE 查询将无法用于某些部署。

解决此问题的一种方法是使用多个 Flyway 操作执行架构演变,每个模块都有自己的 Flyway 并自行管理。然而,由于 Flyway 创建了用于管理状态的表,我们最终得到了太多的表,因为我们现在有大约 20 个模块。

解决这个问题的优雅方法是什么?

【问题讨论】:

    标签: flyway


    【解决方案1】:

    我想说,由它支持的软件单元管理迁移是最干净的,并且胜过“太多表”。就这些表的整齐组织而言,您可以使用架构(如果您的 RDBMS 支持这些)来隔离那些表,而 Flyway 允许您命名每个迁移托管应用程序使用的表。

    这里的关键是“模块”。根据您的描述,听起来并非所有应用程序都由相同的模块组成。我会问你,如果我们努力使我们的模块变得离散以创建解耦/可重用的软件 - 为什么要对这些模块的数据库模式进行不同的处理?

    为了解决您对“桌子太多”的担忧,让我们试着揭穿它的成本。

    1. 卷。您的 RDBMS 可以处理数千个,没有任何成本。
    2. 运行中。 Flyway 在这里完成所有管理工作,它们对您来说实际上是不透明的。
    3. 性能。它们是部署问题,而不是运行时责任。
    4. 组织。使用上述方法隐藏它们/命名它们。

    我们的自然冲动是聚合相关的事物,但并不总能带来最好的结果,因此我们必须务实。在这种情况下,良好/灵活的设计胜过聚合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 2014-02-17
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多