zoukankan      html  css  js  c++  java
  • 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系统。

  • 相关阅读:
    Android不规则瀑布流照片墙的实现+LruCache算法
    嵌入式OS入门笔记-以RTX为案例:六.RTX的任务调度
    Oracle backgroup processes
    Android中数据库的操作流程详解
    Dreamweaver PHP代码护眼配色方案
    Twitter 新一代流处理利器——Heron 论文笔记之Heron架构
    Docker简单介绍
    C#下使用GDAL
    Android:实现仿 美团/淘宝 多级分类菜单效果
    KVC在定义Model类中的妙用
  • 原文地址:https://www.cnblogs.com/roboot/p/14893828.html
Copyright © 2011-2022 走看看