Elasticsearch和MongoDB简要对比

根据项目需求用到了Es,好久不用的我,赶紧查资料,然后忽然发现这个跟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系统。

优缺点分析:

MongoDB:

优点

  • 面向文档存储(类JSON数据模式简单而强大)

  • 动态查询

  • 全索引支持,扩展到内部对象和内嵌数组

  • 查询记录分析

  • 快速,就地更新

  • 高效存储二进制大对象 (比如照片和视频)

  • 复制和故障切换支持

  • Auto- Sharding自动分片支持云级扩展性

  • MapReduce 支持复杂聚合

  • 商业支持,培训和咨询

数据示例:

{ “system” : { “currentTime” : { “KaTeX parse error: Expected 'EOF', got '}' at position 40: …6:40.976+0800" }̲, "hostname" …numberLong” : “4096” },
“numPages” : 970635,
“maxOpenFiles” : 64000 },
“ok” : 1
}

缺点

  • 不支持事务(进行开发时需要注意,哪些功能需要使用数据库提供的事务支持)
  • MongoDB占用空间过大 (不过这个确定对于目前快速下跌的硬盘价格来说,也不算什么缺点了
  • MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方
  • 在32位系统上,不支持大于2.5G的数据(很多操作系统都已经抛弃了32位版本,所以这个也算不上什么缺点了,3.4版本已经放弃支持32 位 x86平台)

ElasticSearch

优点:

elasticSearch 目前主要用于大量数据的挖掘和搜索。使用的优势是在数据量较大的时候可以进行快速搜索,并且本身还带有分词器,可以对elasticSearch内的数据进行分词搜索。有利于数据管理。

缺点:

但相对的来说,缺点也很明显。在需要添加新数据与新字段的时候,如果elasticSearch进行搜索是可能需要重新修改格式。之前的数据需要重新同步,对数据的管理有很多困难。

一旦数据格式出现改变,会变得非常麻烦。

另一个缺点就是在搜索的时候,和之前的mysql不同,有许多mysql可以搜索到的东西,在elasticSearch里就不能搜或很难搜。

数据示例:

{
“_index”: “rta_daily_report”,
“_type”: “campaign”,
“_id”: “145603275_m_normal_20170804”,
“_version”: 1,
“found”: true,
“_source”: {
“cid”: 145603275,
“advertiser_id”: 457,
“trace_app_id”: “id1105855019”,
“network_cid”: “plr_gs_ios_cn_osv9”,
“platform”: 2,
“direct”: 1,
“last_second_domain”: “tracking.lenzmx.com”,
“jump_type”: 7,
“direct_trace_app_id”: “id1105855019”,
“mode”: 3,
“third”: “3444.tlnk.io”,
“hops”: 1,
“yyyymmdd”: “2017-08-03T16:00:00”,
“type”: “m_normal”,
“click”: 2,
“impression”: 3,
“revenue”: 0,
“install”: 0
}
}

小结:

不要以为对比就是敌人,他俩也是可以搭配的哦!Elasticsearch+Mongo亿级别数据导入及查询实践,哈哈。。。

所以说,能力不是重点,合作才有未来。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值