ES和MongDB的區別與異同


ElasticSearch 與 NoSQL 數據庫差異
本文探討下ElasticSearch 與 NoSQL 數據庫差異,主要以MongoDB作為NoSql代表。

MongoDB 是開源的面向文檔的數據庫管理系統。ElasticSearch是基於Apache Lucene 的RESTful 實時搜索和分析引擎。

共有特性
一些特性是兩者共有的,如面向文檔存儲,無Schema,分布式數據存儲,高可用性,分片和復制等。雖然使用ElasticSearch作為主數據存儲是可行的,但具體需求場景是決定選擇哪個產品的關鍵。

發展歷程
如果了解兩個產品的發展歷程,你將了解它們分別的應用場景。
MongoDB主要實現NoSQL數據庫管理系統,用於存儲海量數據(humongous,Mongo名稱的由來)。另一方面,Elasticsearch基於數據抽取一些值,提供實時存儲、索引、搜索和分析數據功能。這些數據收集自其他數據源(包括MongoDB),可以直接存儲在Elasticsearch集群中。

兩者差異
下面是兩者之間的一些差異:

索引 - Elasticsearch 使用 Apache Lucene 實現索引,而 MongoDB 索引是基於傳統的B+ 樹結構. Elasticsearch利用Lucene實現實時索引和搜索功能,默認支持在文檔的每個字段上創建索引。而 MongoDB,我們必須定義索引用於提升查詢性能,但會影響寫操作。
實現語言 - Elasticsearch 采用 Java語言編寫, 而 MongoDB 是 C++語言實現。
文檔 - Elasticsearch 存儲 JSON 文檔, MongoDB 采用BSON格式存儲 (Binary JSON).
REST 接口 - Elasticsearch 提供 RESTful接口. MongoDB 不提供 RESTful接口.
MapReduce - MongoDB 支持 MapReduce 數據操作。 Elasticsearch 不支持 MapReduce.
兩者之間首要差異為:

MongoDB是通用功能的非RESTful風格的 NoSQL 數據庫. 文檔以 BSON 格式存儲,主要用於存儲數據。

Elasticsearch 是分布式全文檢索引擎,可以提供實時Restful風格API處理海量面向文檔的數據。文檔使用JSON格式,主要用於基於文本的數據搜索。

同時使用
很難對兩者進行比較,實際應用中兩者通常同時使用。

Elasticsearch一般不作為主存儲數據庫,而是和SQL & NoSQL數據庫一起使用,作為輔助數據庫。
與MongoDb不同, Elasticsearch 默認沒有提供安全特性,如認證和授權。Elasticsearch和 Logstash & Kibana 一起稱為ELK stack,用於快速查詢數據並可視化展現分析數據。

Elasticsearch 非常適合需要基於文本進行快速索引然后進行檢索,其查詢速度非常快,大多數情況速度最多幾十毫秒。

總結
Elasticsearch 通常作為主數據庫存儲的輔助存儲庫。一般數據庫系統更聚焦於約束、准確性和健壯性。當主記錄在事務中更新時,其會同時被推送至Elasticsearch中.

一般典型使用PostgreSQL 和 ZooKeeper 負責數據的存儲, 同時提供給Elasticsearch實現實時檢索。

和其他技術一樣,沒有銀彈。沒有一個數據庫可以滿足所有需求。所以我們需要了解不同數據庫的優勢和劣勢,並選擇合適的產品用於特定的需求。
————————————————
原文鏈接:https://blog.csdn.net/neweastsun/article/details/95253696


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM