Elasticsearch和MongoDB

简介

Elasticsearch

Elasticsearch是一个Lucene支持的分布式文本检索引擎,针对大型数据集的索引与检索功能,Elasticsearch性能非常优越。Elasticsearch的大部分场景是:“一个常见的设置是使用其它数据库作为主要的数据存储,使用 Elasticsearch 做数据检索”(2.X官方文档里说的),和关系型数据库是辅助关系。

MongoDB

MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统,它的目标是:“取代oracle和db2”(财务总监时上市说的),和关系型数据库是竞争关系。MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表。数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系。

相同点

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实时理论上无数据丢失风险。

总结

es偏向于检索、查询、数据分析,适用于OLAP(在线分析处理系统);mongodb偏向于大数据规模下的CRUD,适用于对事务要求不强的OLTP(联机事务处理过程)系统。

参考:
https://blog.csdn.net/MrZhangBaby/article/details/88748260
https://blog.csdn.net/hayre/article/details/80628431
https://blog.csdn.net/qq_16619993/article/details/118897438

posted @   学海无涯#  阅读(489)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示