DBA

ElasticSearch与MongoDB差异

2019-07-17  本文已影响0人  mysia

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不支持。

两者的首要差异

4. 同时使用

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

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

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

5. 总结

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

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

上一篇 下一篇

猜你喜欢

热点阅读