<返回更多

主流NOSQL的比较与技术选型

2020-01-08    
加入收藏

MongoDB、ElasitcSearch、redis、HBase是现今最火的四款NoSQL数据库产品。在实际的开发中,这四种数据库有什么区别?我到底该选哪个?想必这是很多互联网开发都遇到过的难题。下面就给大家总结下这四种数据库产品的特点和应用场景,希望能够帮助你更深刻的理解这四种数据库的特点,好帮助你作出正确的数据库选择。

一、Redis

 

主流NOSQL的比较与技术选型

 

Redis的优点:

  1. 读写性能优异;
  2. 支持数据持久化,支持AOF和RDB两种持久化方式;
  3. 支持主从复制,主机会自动将数据同步到从机,可以进行读写分;
  4. 数据结构丰富:除了支持string类型的value外还支持string、hash、set、sortedset、list等数据结构。

Redis的局限性:

  1. Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。
  2. 支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。
  3. Redis在String类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。

二、MongoDB

 

主流NOSQL的比较与技术选型

 

 

MongoDB的优点:

  1. 无模式;
  2. 查询与索引方式灵活,是最像SQL的Nosql;
  3. 支持复制集、主备、互为主备、自动分片等特性。

Mongodb的缺点:

  1. 在集群分片中的数据分布不均匀;
  2. 单机可靠性比较差;
  3. 大数据量持续插入,写入性能有较大波动;
  4. 磁盘空间占用比较大。

三、HBase

 

主流NOSQL的比较与技术选型

 

 

HBase 优点:

  1. 存储容量大,一个表可以容纳上亿行,上百万列;
  2. 可通过版本进行检索,能搜到所需的历史版本数据;
  3. 负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce分布式计算系统);
  4. 可有效避免单点故障的发生。

HBase 缺点:

  1. 基于JAVA语言实现及Hadoop架构意味着其API更适用于Java项目;
  2. node开发环境下所需依赖项较多、配置麻烦(或不知如何配置,如持久化配置),缺乏文档;
  3. 占用内存很大,且鉴于建立在为批量分析而优化的HDFS上,导致读取性能不高;
  4. API相比其它 NoSql 的相对笨拙。

四、ElasticSearch

 

主流NOSQL的比较与技术选型

 

ElasticSearch的优点:

  1. 横向可扩展性: 作为大型分布式集群,很容易就能扩展新的服务器到ES集群中;也可运行在单机上作为轻量级搜索引擎使用。
  2. 更丰富的功能:与传统关系型数据库相比,ES提供了全文检索、同义词处理、相关度排名、复杂数据分析、海量数据的近实时处理等功能。
  3. 分片机制提供更好地分布性: 同一个索引被分为多个分片(Shard),利用分而治之的思想提升处理效率。
  4. 高可用: 提供副本(Replica)机制,一个分片可以设置多个副本,即使在某些服务器宕机后,集群仍能正常工作。
  5. 开箱即用: 提供简单易用的 API,服务的搭建、部署和使用都很容易操作。

ElasticSearch 的缺点:

  1. 最明显的就是字段类型无法修改、在需要添加新数据与新字段的时候,如果elasticSearch进行搜索是可能需要重新修改格式。之前的数据需要重新同步,对数据的管理有很多困难。
  2. 写入性能较低和高硬件资源消耗

总结:

MongoDB、ElasticSearch、Redis、HBase,以上四种数据库是当今NoSQL中最火爆的几款,掌握了它们,你基本就能HOLD住互联网开发中的绝大多数数据存储需求。这里还想强调的一点是,如同买衣服一样,没有最好的数据库,只有最适合你的应用场景的数据库,因此选用一款数据库前一定要想清楚自己的应用场景是否合适。再给大家总结下这些数据库的适用场景:

四种NOSQL对比图如下所示:

主流NOSQL的比较与技术选型

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>