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

我是否应该使用MongoDB和实体的关系来对我的Spring5项目进行端到端的非阻塞?

冯沛
2023-03-14

不久前我开始了一个Spring WebFlux项目,该项目的目标是提供一个REST API,它可以从数据库中收集数据。

我目前使用的是一种反应性方法,感谢Spring5版本中包含的Reactor项目,并创建了反应性控制器。我需要在我的数据库中持久化数据与关系,这就是为什么我使用PostgreSQL。

在我写这几行的时候,还没有为JDBC和JPA提供任何反应编程支持。但我的控制器只有在与它们一起工作的其他组件也是非阻塞的情况下才是真正的非阻塞的。如果我编写的Spring WebFlux控制器仍然依赖于阻塞存储库,那么我的反应控制器将被阻塞,等待它们生成数据。

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

我读到这是可能的,我的实体之间的一些关系与MongoDB,特别是与最近的4.0版本没有refractor完全我的db模式。但我想知道什么值?

    null

共有1个答案

谷梁驰
2023-03-14

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

那是我的2美分。问候

 类似资料:
  • 问题内容: 我应该使用量角器或业力进行端到端测试吗? Angular-seed使用Protractor / Selenium WebDriver进行E2E,但是angular-phonecat教程使用业力。 我读到我应该将Karma用于单元测试,将Protractor用于E2E,这似乎还不错,但我想我想在这里征询其他开发人员的意见。 问题答案: AngularJS团队建议使用Protractor,

  • 问题内容: 我们目前正在为一家专业公司内部实施类似于CRM的解决方案。由于所存储信息的性质以及信息的不同值和键,我们决定使用文档存储数据库,因为它非常适合此用途(在这种情况下,我们选择MongoDB)。 作为此CRM解决方案的一部分,我们希望存储实体之间的关系和关联,例如包括存储利益冲突,股东,受托人等的冲突。以最有效的方式将所有这些实体链接在一起,我们确定了“关系”的中心模型是必要的。所有关系都

  • 问题内容: 我使用JPA,并将Hibernate作为其实现。我的项目中 需要* 具备哪些依赖关系? * 问题答案: 我相信您仅需要两件事就是hibernate的entitymanager,然后是SLF4J日志记录捆绑包之一。其他所有内容都应作为依赖项引入:

  • 问题内容: 我的大脑开始为此烦恼,这很简单: 问题答案: 就像是:

  • 这是用构建的好例子吗?有理由不这样做吗?我从未真正见过一个程序,无论它花多少时间在I/O上,都是为了大小而编译的。

  • 我正在开始一门Android Studio课程,但我在运行代码时遇到了问题:事实上,当我使用Nexus S API 22点击“Run app”时,启动的是我的旧项目,而不是我的新项目。我有Android Studio 3.5 我试图重启Android Studio并启动全新的项目,但没有成功。 谢谢你的帮助。