簡體   English   中英

我應該使用具有實體關系的 MongoDB 來實現 Spring 5 項目的端到端非阻塞嗎?

[英]Should I use MongoDB with entity's relations to be non-blocking end to end with my Spring 5 project?

前段時間我開始了一個 Spring WebFlux 項目,這個項目的目標是提供一個 REST API,它從數據庫中收集數據。

我目前采用反應式方法,這要歸功於 Spring 5 版本中包含的 Reactor 項目並創建了反應式控制器。 我需要堅持我的數據庫規范化數據與關系,這就是我使用 PostgreSQL 的原因。

在我寫這行代碼的時候,沒有為 JDBC 和 JPA 提供反應式編程支持。 但是我的控制器只有在它們使用的其他組件也是非阻塞的情況下才是真正的非阻塞。 如果我編寫的 Spring WebFlux 控制器仍然依賴於阻塞存儲庫,那么我的反應式控制器將被阻塞,等待它們生成數據。

我想要端到端的非阻塞,所以我想繼續使用 Spring Data 支持的 NoSQL 數據庫之一:Cassandra DB 或 MongoDB。 我不認為 Cassandra DB 真的適合我的需求,我需要重寫我的實體並以不同的方式思考我的數據庫結構以面向查詢。

我讀到可以在我的實體與 MongoDB 之間保持一些關系,尤其是在沒有完全折射我的 db 模式的最新 4.0 版本中。 但我想知道什么是值得的?

  • 即使我需要保留關系數據也切換到 MongoDB
  • 保持以阻塞方式獲取數據,然后盡快將其轉換為響應式類型
  • 忘記 Spring WebFlux 回到 Spring MVC(可能不是)

感謝您的任何幫助和建議!

我認為這取決於您的上下文,似乎轉移到文檔數據庫可能不適合您的數據,因為它似乎完全相關,除非您確定可以將數據建模為一堆聚合,否則您可能最終在檢查模型之間的一致性規則時存在其他問題,例如事務一致性。 作為第一個選擇,我會嘗試在另一個線程中獲取數據,也許將調用包裝在 rxjava observable 中。 雖然它仍然是一個阻塞調用,但它不會阻塞主線程,您將能夠更好地利用資源。

那是我的 2 美分。 問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM