2012-01-05 102 views
2

我正在試圖決定如何分解我的邏輯。邏輯分離:搜索,數據庫和應用程序

我把我的主要業務邏輯放在Node.js/Express中,而且我一直在使用Mongo來處理我的數據庫。這很好,但現在我需要實現一個非常強大的搜索系統,因爲搜索是我網站最重要的功能之一。起初,我非常驚訝於Mongo和Couch缺乏支持和整合,但後來我意識到我正試圖讓數據庫做一些不適合的事情。

現在我正在研究使用Solr或ElasticSearch,但是它的開始似乎是這些程序甚至可以執行Mongo可以執行的一些或大部分查詢,只要我能夠正確索引我的文檔(以及它們的自然,我將索引幾乎所有文件的每一個屬性)。所以說,我在想,也許我應該只使用一些簡單的東西,比如Redis,並且依賴像Solr/ElasticSearch這樣強大的搜索工具。

這看起來像是一個明智的選擇嗎?另外,爲什麼Solr,Lucene或ElasticSearch沒有Nodejs模塊?

+0

我也剛剛發現[RedBackJS](http://redbackjs.com),它看起來對我來說可能是正確的解決方案,但我又對一些更有經驗的建築師的智慧感興趣。 – cjroth 2012-01-05 20:04:54

+0

你大多隻需要一個HTTP客戶端庫(最好能夠連接池),你可以自己做一個solr查詢類(不要忘記做URL和Solr char轉義)。 – aitchnyu 2012-01-06 11:08:36

回答

4

MongoDB + Solr(或者甚至更好的ElasticSearch)對於將搜索作爲最重要的功能之一的應用來說聽起來是合理的選擇。 MongoDB不是用於全文搜索的,Solr(Lucene)是。 Solr並不是一個記錄系統(MongoDB)。

MongoDB vs Redis?很難說沒有任何要求指定。至少爲了臨時查詢我會選擇mongo。在任何情況下,請確保您學習了由Kyle Kingsbury所調用的jepsen系列博客文章,涵蓋了mongodbredis

+0

MongoDB vs Redis,如果你意識到你需要在Mongo中使用id,並且代碼連接(爲了不復制記錄並避免瘋狂的更新),你會傾向哪種方式? – 2015-06-06 06:13:14

+0

@AgentZebra不確定你的意思是通過重複記錄和瘋狂的更新,猜測可能試圖更新'單一交易'中的多個文件? – milan 2015-07-23 10:22:04

+0

嗨@米蘭,是的。 – 2015-07-23 18:08:58

相關問題