使用R2DBC进行数据库迁移

bal*_*teo 2 java database-migration liquibase flyway r2dbc

我是R2DBC的新手(https://r2dbc.io/)。我想知道r2dbc的生态系统是否具有数据库迁移工具/框架。

看来Liquibase和Flyway依赖JDBC。是否有计划允许那些框架支持r2dbc驱动程序?

欢迎任何意见或反馈。

mp9*_*1de 5

史蒂夫的答案是正确的,R2DBC主要是与实际数据进行交互。我想添加一个不同的观点。

的确,反应式API不会在迁移期间提供任何改进。实际上,仔细观察,迁移是启动过程的一部分,该过程通常是同步的,至少在某种程度上是同步的。

需要JDBC进行迁移会增加这种应用程序安排的复杂性。您需要在现有R2DBC设置中包括JDBC驱动程序,并且需要配置另一个数据库连接,该连接指向与R2DBC相同的数据库。这两个要求都容易出错,因为需要对其进行配置以执行完全相同的操作。

如今,当类路径中有某个库可用时,应用程序配置框架(Spring Boot,Micronaut,Quarkus)会激活功能。配置JDBC驱动程序会引导应用程序不需要的功能,但在引导过程中将需要该功能,这会浪费资源。

理想情况下,您配置一种数据库连接技术,该技术可用于架构迁移和应用程序内部的后续数据交互。

因此它是有道理的问Liquibase迁飞提供基于R2DBC整合。

  • 最近在 Flyway github 上提出了一个问题,建议依赖 r2dbc 进行迁移。请参阅此处:https://github.com/flyway/flyway/issues/2502。欢迎对这个问题进行投票。感谢托马斯·库巴基! (2认同)

小智 5

您可以尝试我的包r2dbc-migrate

在最小配置中(假设您使用的是 Spring Boot 2.3.0.M3),只需添加

<dependency>
  <groupId>name.nkonev.r2dbc-migrate</groupId>
  <artifactId>r2dbc-migrate-spring-boot-starter</artifactId>
  <version>0.0.24</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

到 pom.xml

然后在类路径中添加 .sql 文件,例如/db/migration/

然后加

r2dbc.migrate.resourcesPath: classpath:/db/migration/*.sql
Run Code Online (Sandbox Code Playgroud)

到您的应用程序.yml