2016-03-03 24 views
5

非常新手問題,我認爲..我開始玩ES和MongoDB,我試圖將數據移出SQL DB作爲練習。 我不禁想知道,我會在Mongo中存儲哪些數據,以及ES中有哪些數據?我可以在ES中儲存所有東西嗎?假設數據加載,如在價格趨勢。ElasticSearch&Mongo

+0

嗯,這實際上取決於你想要的東西,通常elasticsearch是用於很多很多你想要做文本搜索的內容,它爲此進行了優化。你可以用富有彈性的方式存儲永久存儲,但我認爲這不是平常的。這可能會幫助你https://www.compose.io/articles/mongoosastic-the-power-of-mongodb-and-elasticsearch-together/ – dege

+0

謝謝@dege,文章有所幫助。 – kozureookami

+0

我傾向於存儲與Elasticsearch搜索相關的部分內容,並將擴展數據保留在Mongo上。這使我可以在表示層向用戶呈現一流的點擊率。當用戶選擇他/她希望獲得進一步詳細信息的某個匹配時,我從Mongo中提取詳細信息。 –

回答

4

首先,MongoDB就是所謂的文檔存儲。這種概念的主要特點是存儲架構的動態文檔:

  • 在文檔集合中的每個記錄可以具有不同的結構
  • 的每個記錄類型可以是不同的
  • 文檔屬性(列)可以有嵌套結構

它不是無模式的,它是模式動態的(或靈活的模式)。爲了進入這個概念,你可以在這裏找到一個很好的教程:https://docs.mongodb.org/manual/data-modeling/

MongoDB是最廣泛使用的文檔存儲 - 請參閱http://db-engines.com/en/system/MongoDB

它具有大多數編程語言的「驅動程序」,可實現快速開發。您可以很快進入Mongo,有很多教程和官方Mongo大學 - 這對於開發人員和DBA來說是一個很好的課程。

簡而言之,它支持索引,聚合,過濾器,負載平衡,分片,複製(副本集)等。數據以BSON格式(http://bsonspec.org/)存儲和傳輸。 https://docs.mongodb.org/manual/reference/sql-comparison/

這是什麼好:

的MongoDB VS RDBMS概念的比較好的可以在這個官方參考可以找到?它支持敏捷開發,模式可以在一段時間內改變,尤其是基於表單的數據,用戶生成的內容,基於位置的數據,用戶配置文件等。它還可以存儲大量文檔(每個文檔最多16MB)。

現在,Elasticsearch不是數據庫。它是一個搜索引擎,具有一些很好的聚合功能(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html - 請確保簽出度量標準,存儲桶和管道聚合)。

典型的RDBSM不適用於全文搜索或鬆散結構化的數據。 ES中的查詢可以比任何數據庫更快地返回結果(例如,與ES中的毫秒相比,RDBMS中的秒數)。你需要記住一個關鍵是設計好索引,並且它們會佔用你的磁盤空間。

有一篇非常詳細的文章比較兩個表現,你可能會發現它很有用:http://blog.quarkslab.com/mongodb-vs-elasticsearch-the-quest-of-the-holy-performances.html

實際上,您可以同時使用兩者 - MongoDB將存儲您的數據,其中ES將用作服務層(搜索,聚合等)。

+0

tldr:** Elasticsearch不是數據庫** - >使用元索引進行搜索。與數據庫如mongo一起使用。最佳答案。我不喜歡的是爲什麼你甚至提到了Pricings和雲系統?無關緊要。 – Pogrindis

+0

你是對的,定價是無關緊要的。我會刪除它。乾杯。 – wjp

0

mongodb和ES之間有很大的區別。 MongoDB是一個爲了存儲數據和查詢而設計的數據庫,而elasticsearch是一個lucene基礎索引器,在這個索引器中,您只應該爲搜索索引數據,而不應該相信elastisearch。即使你可以在彈性搜索中使用store:true,也不建議這樣做,我不會依賴那些重要的數據。