美文网首页DBA
ElasticSearch与MongoDB差异

ElasticSearch与MongoDB差异

作者: mysia | 来源:发表于2019-07-17 18:06 被阅读0次

    MongoDB是面向文档的数据库管理系统,ElasticSearch是基于Apache Lucene的Restful实时搜索和分析引擎。

    1. 共同点

    一些特性是两者共有的,比如面向文档存储、无Schema、分布式数据存储、高可用性、分片和复制等。虽然ElasticSearch作为数据存储是可行的,但具体场景是决定选型的关键。

    2. 发展历程

    MongoDB主要实现NoSQL数据库管理系统,用于存储海量数据(humongous)。另一方面,ElasticSearch基于数据抽取一些值,提供实时存储、索引、搜索和分析数据功能。这些数据收集自其他数据源(MySQL、文本、Redis等),可以直接存储在ElasticSearch集群中。

    3. 差异性

    1. 索引:
      ElasticSearch使用Apache Lucene实现索引,而MongoDB索引基于传统的B+树结构。ElasticSearch利用Lucene实现实时索引和搜索功能,默认支持在文档的每个字段上创建索引。而MongoDB,则必须定义索引用于提升查询性能,但是会影响写入效率;
    2. 实现语言:
      ElasticSearch采用Java语言编写,MongoDB是C++实现的;
    3. 文档:
      ElasticSearch存储Json文档,MongoDB采用Bson格式存储(Binary Json);
    4. Rest接口:
      ElasticSearch提供Restful接口,MongoDB不提供;
    5. MapReduce:
      MongoDB支持MapReduce数据操作,ElasticSearch不支持。

    两者的首要差异

    • MongoDB是通用功能的非Restful风格的NoSQL数据库,文档以Bson格式存储,主要用于数据存储;
    • ElasticSearch是分布式全文检索引擎,可以提供实时Restful风格API处理海量面向文档的数据。文档采用Json风格,主要用于基于文本的数据搜索。

    4. 同时使用

    很难对两者进行比较,实际应用中两者通常同时使用。

    Elasticsearch一般不作为主存储数据库,而是和SQL & NoSQL数据库一起使用,作为辅助数据库。
    与MongoDB不同, Elasticsearch 默认没有提供安全特性,如认证和授权(6.8之后,xpack部分开源功能可支持)。Elasticsearch和 Logstash & Kibana 一起称为ELK stack,用于快速查询数据并可视化展现分析数据。

    Elasticsearch 非常适合需要基于文本进行快速索引然后进行检索,其查询速度非常快,大多数情况速度最多几十毫秒。

    5. 总结

    Elasticsearch 通常作为主数据库存储的辅助存储库。一般数据库系统更聚焦于约束、准确性和健壮性。当主记录在事务中更新时,其会同时被推送至Elasticsearch中.

    和其他技术一样,没有银弹。没有一个数据库可以满足所有需求。所以我们需要了解不同数据库的优势和劣势,并选择合适的产品用于特定的需求。

    相关文章

      网友评论

        本文标题:ElasticSearch与MongoDB差异

        本文链接:https://www.haomeiwen.com/subject/ydyclctx.html