2012-12-05 98 views
4

我使用的是mongodb-customer-service-data示例(可在https://github.com/SpringSource/spring-data-document-examples處獲得)。使用Spring Data JPA/MongoDB Cross Store,查詢是否可以跨兩個數據庫?

該示例使用@RelatedDocument關聯跨數據庫的域對象。它可以很好地存儲和更新對象。

不過,我想這樣做有對陣雙方JPA數據庫標準(在本例中HSQLDB)和MongoDB查詢。

這甚至可能嗎?有沒有任何例子證明它是可能的?


評論不直接相關的問題:

我使用的情況是,我們的應用程序是一個Oracle數據庫,但我們現在也開始接受半結構化數據。 JPA實體可由用戶在一定的限制範圍內進行過濾,但我們希望將此功能擴展到半結構化數據。

也似乎有競爭技術QueryDSL和的EclipseLink,但我無法找到有關跨數據庫的查詢做什麼。

在JPA中,它似乎並不可能,因爲有與每個數據庫相關聯的不同PersistanceUnits做跨數據庫查詢。但是,mongodb跨店似乎否定了這個特殊問題。

回答

0

我從來沒有使用過Spring JPA的數據,但如果JPA是不能夠這樣做的,我懷疑的是,Spring的數據將提供這種能力。
我不知道你通過mongodb跨店瞭解什麼。所以我會馬上解釋一下mongodb可以做什麼以及不可以做什麼。

用MongoDB的,你不能跨多個集合(表)查詢,這樣你就可以用普通的MongoDB不參加不行。所以@RelatedDocument是Spring Data提供的一個功能。相關文檔可以嵌入(不知道Spring Data是否支持這個),也可能是一些簡單的DBRef到不同集合(和數據庫)中的文檔。使用DBRef,您只能在@RelatedDocument字段(如_id,集合和數據庫)上查詢,而不能查詢實際引用的文檔屬性。

這說的MongoDB不允許搜索跨數據庫在一個查詢中,因爲你不能做查詢整個集合,所以你不能做到這一點對任何數據庫。您擁有的唯一跨商店功能是用於分片收藏。有了這個,你可以通過shakey將你的集合分佈在多個節點上。 MongoDB可能需要跨所有集合分片查詢才能完成查詢。但除此之外,我實際上不會稱之爲跨數據庫功能,您沒有這種功能。

如果這沒有幫助,請詳細解釋您想要的待辦事項。

相關問題