我是R2DBC (https://r2dbc.io/)的新手。我想知道r2dbc的生态系统是否有数据库迁移工具/框架。
Liquibase & Flyway似乎依赖于JDBC。是否有计划允许这些框架支持r2dbc驱动程序?
欢迎任何意见或反馈。
发布于 2019-07-26 07:52:58
史蒂夫的回答是正确的,R2DBC主要是关于与实际数据的交互。我想增加一个不同的视角。
确实,在迁移过程中,反应性API没有提供任何改进。事实上,仔细观察,迁移是启动过程的一部分,它通常是同步的,至少在某种程度上是同步的。
在这样的应用程序安排中,要求JDBC进行迁移增加了复杂性。您需要将JDBC驱动程序包含到现有的R2DBC设置中,并且需要配置指向与R2DBC相同的数据库的另一个数据库连接。这两个需求都很容易出错,因为它们需要被配置来完成完全相同的事情。
现在,应用程序配置框架(Spring、Micronaut、Quarkus)会在类路径中提供某个库时激活功能。拥有JDBC驱动程序配置的引导功能并不是应用程序所需要的,而是在引导过程中需要的,这在某种程度上是资源的浪费。
理想情况下,您可以配置单个数据库连接技术,该技术可重用用于模式迁移和应用程序中以后的数据交互。
发布于 2020-04-03 14:41:25
你可以试试我的包裹R2dbc-迁移。
在最小配置中(假设您正在使用SpringBoot2.3.0.M3),只需添加
<dependency>
<groupId>name.nkonev.r2dbc-migrate</groupId>
<artifactId>r2dbc-migrate-spring-boot-starter</artifactId>
<version>0.0.24</version>
</dependency>转到pom.xml
然后在类路径中添加.sql文件,例如在/db/migration/中
然后添加
r2dbc.migrate.resourcesPath: classpath:/db/migration/*.sql给你的application.yml
发布于 2019-07-24 13:39:59
在我看来,R2DBC的目标与迁移并没有任何关系(诚然,粗略地看了一下R2DBC网页的头版)。该页面列出了主要功能如下:
没有任何东西值得在像Liquibase这样的框架中添加R2DBC支持。目前正在使用的JDBC驱动程序不需要使用非阻塞API,也不需要真正的“反应性API",而且几乎可以肯定,每个连接不需要多个线程。
迁移工具主要关注数据库的形状/结构,而不是内容,而R2DBC的目标是主要关注实际数据的应用程序。
总之,我不认为有人会因为应用程序使用R2DBC而不使用像Liquibase这样的迁移工具,我也不认为向Liquibase这样的工具添加R2DBC支持有什么好处。
https://stackoverflow.com/questions/57183169
复制相似问题