Elasticsearch和MongoDB簡要對比

場景和目標

1、mongodb的目標是:“取代oracle和db2”(財務總監時上市說的)。和RDBMS是競爭關係。
2、es的大部分場景是:“一個常見的設置是使用其它數據庫作爲主要的數據存儲,使用 Elasticsearch 做數據檢索”(2.X官方文檔裏說的)。和RDBMS是輔助關係。

相同點:

1、都是以json格式管理數據的nosql數據庫。
2、都支持CRUD操作。
3、都支持聚合和全文檢索。
4、都支持分片和複製。
5、都支持閹割版的join操作。
6、都支持處理超大規模數據。
7、目前都不支持事務或者叫支持閹割版的事務。

不同點:

1、es是java編寫,通過RESTFul接口操作數據。mongodb是C++編寫,通過driver操作數據。(es對java開發更有好,利於排查理解)
2、mongodb的分片有hash和range兩種方式,es只有hash一種。
3、es是天生分佈式,主副分片自動分配和複製,開箱即用。mongodb的分佈式是由“前置查詢路由+配置服務+shard集合”,需要手動配置集羣服務。
4、內部存儲ES是到排索引+docvalues+fielddata。mongodb暫時未知。
5、es全文檢索有強大的分析器且可以靈活組合,查詢時智能匹配。mongodb的全文檢索字段個數有限制。
6、es所有字段自動索引,mongodb的字段需要手動索引。
7、es非實時有數據丟失窗口。mongodb實時理論上無數據丟失風險。

總結:

1、es偏向於檢索、查詢、數據分析,適用於OLAP系統。mongodb偏向於大數據規模下的CRUD,適用於對事務要求不強的OLTP系統。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章