当前位置: 首页 > 知识库问答 >
问题:

具有相互依赖数据库的FlyWay

呼延臻
2023-03-14

DB是这样设置的。

  • AppDB
  • AppLogDB
  • AppAuditDB
  • apparchivedb
  • ...

我有一些例子,其中AppDB有引用其他表的视图/过程/等。也有其他DBs访问AppDB的情况(即ArchiveDB存储过程将从AppDB拉出)。

有了不同数据库之间的这种依赖关系,FlyWay是否可以按照所需的顺序处理迁移/清理?例如:

如果我有这样的脚本顺序

  • AppDB
    1. v1__create_table
    2. v2__create_proc_pointing_to_archivedb
    null

怎么能把这件事重新处理成这样呢

  • AppDB,ArchiveDB
    1. v1__appdb_create_table
    2. V2__ARCHIVEDB_CREATE_TABLE
    3. v3__appdb_create_proc_pointing_to_archivedb
    4. V4__ARCHIVEDB_CREATE_PROC_POINTING_TO_APPDB

共有1个答案

利稳
2023-03-14

这可能是一个棘手的问题,特别是对于具有循环依赖关系的ArchiveDB。

我正在做的一个项目也有类似的安排。它们实际上是Oracle数据库中的不同模式,但是我们选择为每个模式保留一个单独的schema_version表(以尝试保持信息显示的可管理性)。我们使用的方法是按照依赖关系的主要顺序对目录进行编号,并确保按照该顺序进行应用。你的可能是:

10_AppDB
20_AppLogDB
30_AppAuditDB
40_AppArchiveDB

循环依赖项要确保它们能够正确地应用于干净的环境,就需要多做一点工作。幸运的是,我们还没有遇到这种情况,但这种情况在将来可能会改变。我建议的一种方法是错开部署(在migrate上使用target选项/属性),以便按照必要的顺序创建对象。然后,在新环境中从头创建时,您需要跨所有数据库应用到第一个整合点,然后跨所有数据库应用到下一个整合点,依此类推。基于您的示例

# run flyway -target 2 for all DBs
10_AppDB___/V1__AppDB_Create_table
20_AppLogDB/V2__ArchiveDB_Create_table
# run flyway -target 4 for all DBs
10_AppDB___/V3__AppDB_Create_proc_pointing_to_ArchiveDB
20_AppLogDB/V4__ArchiveDB_Create_proc_pointing_to_AppDb
 类似资料:
  • 问题内容: 我有一个在后端使用postgres数据库的项目,并且我正在创建一个Dockerfile,该文件可以自动设置数据库的本地开发实例。该数据库包含大量功能,并且这些功能在历史上一直存储在上下文相关的sql文件中,例如,users.sql,companys.sql。这样做很好,因为每当进行更改时,我都可以简单地执行所有视图和删除/重新创建所有函数的相关sql文件。 但是,当尝试在一个新的pos

  • 问题内容: 我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了: 我该如何实现? 问题答案: 一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的: 注意:如果您不太熟悉Python,则该关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!

  • 我知道循环依赖通常是不被鼓励的——然而,在C#和TypeScript中,我有时发现它们很有用。这可能是因为我缺乏python方面的经验,也可能是因为我的思维方式不对,或者是因为我没有找到谷歌应该使用的词语。我将如何解决以下问题? 我试图创建一个处理请求的类,每个处理事件都伴随着一个上下文。所以,我想创建handler类和context类,但它们是依赖的,linter在第2行给了我问题,说Handl

  • 作为另一个想法: 更新:我可以添加一个例程来模拟调用API的用例,如下所示: 然后我可以将第一行更改为下面建议的

  • 我对阿帕奇骆驼很陌生。我们需要同时处理多个动态的路由生命周期。 “等待,因为仍有2个飞行和挂起的交换要完成,超时300秒。”-此消息继续 没有打印任何内容,但B不工作(没有日志,没有任何内容)

  • 我正在研究Liquibase,以将数据库与Spring集成。我想问:是否有任何插件或类似的东西用于通过 liquibase 自动保存数据库中的更改。:D例如:我在用户表中插入新行(用户ID,用户名,密码),然后该插件自动生成db-changelog.xml: 非常感谢。