Java 我是否应该将MongoDB与实体';s与我的Spring 5项目的端到端关系是非阻塞的吗?

Java 我是否应该将MongoDB与实体';s与我的Spring 5项目的端到端关系是非阻塞的吗?,java,spring,spring-data,reactive-programming,spring-webflux,Java,Spring,Spring Data,Reactive Programming,Spring Webflux,几天前我启动了一个SpringWebFlux项目,该项目的目标是提供一个RESTAPI,它从数据库收集数据 我目前采用反应式方法,感谢Spring5版本中包含的Reactor项目,并创建了反应式控制器。我需要使用关系来持久化数据库规范化数据,这就是我使用PostgreSQL的原因 在我写这行代码的时候,没有为JDBC和JPA提供响应式编程支持。但我的控制器只有在其使用的其他组件也是非阻塞的情况下才是真正的非阻塞。如果我编写的SpringWebFlux控制器仍然依赖于阻塞存储库,那么我的反应式控制

几天前我启动了一个SpringWebFlux项目,该项目的目标是提供一个RESTAPI,它从数据库收集数据

我目前采用反应式方法,感谢Spring5版本中包含的Reactor项目,并创建了反应式控制器。我需要使用关系来持久化数据库规范化数据,这就是我使用PostgreSQL的原因

在我写这行代码的时候,没有为JDBC和JPA提供响应式编程支持。但我的控制器只有在其使用的其他组件也是非阻塞的情况下才是真正的非阻塞。如果我编写的SpringWebFlux控制器仍然依赖于阻塞存储库,那么我的反应式控制器将被阻塞,等待它们生成数据

我希望实现端到端的非阻塞,因此我想了解Spring数据支持的NoSQL数据库之一:Cassandra DB或MongoDB。我不认为Cassandra DB真的适合我的需要,我需要重写我的实体,并以不同的方式思考我的数据库结构,使其面向查询

我读到有可能在我的实体和MongoDB之间保持一些关系,特别是在没有完全折射我的db模式的最后4.0版本中。但我想知道什么是值得的

  • 切换到MongoDB,即使我需要保留关系数据
  • 保持以阻塞方式获取数据,然后尽快将其转换为反应类型
  • 忘记SpringWebFlux,回到SpringMVC(可能不会)

谢谢你的帮助和建议

我认为这取决于您的上下文,移动到文档数据库似乎不适合您的数据,因为它似乎完全是相关的,除非您确定可以将数据建模为一组聚合,否则在检查模型之间的一致性规则时,您可能会遇到其他问题,例如事务一致性。作为第一种选择,我将尝试在另一个线程中获取数据,也许将调用包装在一个rxjava可观察线程中。尽管它仍然是一个阻塞调用,但它不会阻塞主线程,您将能够更好地利用资源

那是我的2美分。 问候