2013-10-30 15 views
1

我們計劃爲我們的數據庫實現分片,並且也希望爲分片提供Solr搜索。 (對於使用「like」,「order by」,「group by」等的查詢)帶分片的Solr,Hibernate和QueryDSL

哪種設計最適合這種設計?

我檢查了其中的一些,我無法決定其中的任何一個。

1)Hibernate Shards - 雖然Hibernate的主頁面非常明確地列出,但似乎並未被主動支持。

2)SolrJ - 看起來不錯,但是如何將我的QueryDSL查詢轉換爲Solr查詢?

3)SolrCloud - 同樣的問題SolrJ

4)Hibernate的搜索 - 允許我使用QueryDSL,但是這意味着我必須要管理分片功能自己,因爲在這種情況下,Lucene的將被用來作爲一個庫。所以每一個分片都會有自己的Lucene句柄,並且讓他們手動分片是一件很痛苦的事情(例如,合併「幾個分片的結果」,SolrCloud會自動爲我做這件事)。

5)Elasticsearch - 看起來非常相似,SolrCloud(又名Solr的4.0)

所以基本上,我的問題歸結爲:

如何使用QueryDSL一些Lucene的產品,它支持拆分出來的框。 (注意:我很滿意SolrCloud或ElasticSearch提供的默認分片策略)。

我不想寫一個轉換器將QueryDSL查詢轉換爲SolrCloud/ElasticSearch的HTTP get/put請求。

+0

這個問題不知何故讓我想起https://twitter.com/codinghorror/status/347070841059692545 –

回答

0

Querydsl直接支持Lucene和Hibernate Search。對於Solr和ElasticSearch,您需要使用Solr和ElasticSearch特定的查詢語言。

+0

嗨Timo,我真的很喜歡QueryDSL。 所以我想與Solr/ElasticSearch一起使用它。 你知道QueryDSL有沒有計劃在不久的將來支持上述兩個? 我不是這方面的專家,但是如果Lucene支持QueryDSL,那麼Solr也可能很容易支持。 另外,什麼是QueryDSL可以與Solr一起使用的軟件? – user2250246

+0

您可以在Querydsl Google Group中發佈此問題嗎?這可能是討論實施方案的一個更好的地方。 –

0

爲了記錄,Hibernate Search確實提供了透明分片,因此分佈在多個分片上的排序不成問題。

高興向大家報告,我們也支持Elasticsearch現在:

和Solr會在未來;(幫助歡迎!)我們的想法是讓人們與Hibernate ORM完美整合,這是一個非常好而穩定的API,而選擇在本地使用Lucene實例而非遠程使用Solr或Elasticsearch是一個正交方面。