一券躁、場景和目標(biāo)
1轰胁、mongodb的目標(biāo)是:“取代oracle和db2”(財務(wù)總監(jiān)時上市說的)谒主。和RDBMS是競爭關(guān)系。
2赃阀、es的大部分場景是:“一個常見的設(shè)置是使用其它數(shù)據(jù)庫作為主要的數(shù)據(jù)存儲霎肯,使用 Elasticsearch 做數(shù)據(jù)檢索”(2.X官方文檔里說的)。和RDBMS是輔助關(guān)系。
二观游、相同點:
1搂捧、都是以json格式管理數(shù)據(jù)的nosql數(shù)據(jù)庫。
2懂缕、都支持CRUD操作允跑。
3、都支持聚合和全文檢索搪柑。
4聋丝、都支持分片和復(fù)制。
5拌屏、都支持閹割版的join操作。
6术荤、都支持處理超大規(guī)模數(shù)據(jù)倚喂。
7、目前都不支持事務(wù)或者叫支持閹割版的事務(wù)瓣戚。
三端圈、不同點:
1、es是java編寫子库,通過RESTFul接口操作數(shù)據(jù)舱权。mongodb是C++編寫,通過driver操作數(shù)據(jù)仑嗅。(es對java開發(fā)更有好宴倍,利于排查理解)
2、mongodb的分片有hash和range兩種方式仓技,es只有hash一種鸵贬。
3、es是天生分布式脖捻,主副分片自動分配和復(fù)制阔逼,開箱即用。mongodb的分布式是由“前置查詢路由+配置服務(wù)+shard集合”地沮,需要手動配置集群服務(wù)嗜浮。
4、內(nèi)部存儲ES是到排索引+docvalues+fielddata摩疑。mongodb暫時未知危融。
5、es全文檢索有強大的分析器且可以靈活組合雷袋,查詢時智能匹配专挪。mongodb的全文檢索字段個數(shù)有限制。
6、es所有字段自動索引寨腔,mongodb的字段需要手動索引速侈。
7、es非實時有數(shù)據(jù)丟失窗口迫卢。mongodb實時理論上無數(shù)據(jù)丟失風(fēng)險倚搬。
總結(jié):
1、es偏向于檢索乾蛤、查詢每界、數(shù)據(jù)分析,適用于OLAP系統(tǒng)家卖。mongodb偏向于大數(shù)據(jù)規(guī)模下的CRUD眨层,適用于對事務(wù)要求不強的OLTP系統(tǒng)。