mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?

一、NoSQL的简介
NoSQL比关系型数据库性能高数倍 。NoSQL凭借 “易扩展、大数据、高可用、高性能、灵活性”特点强势引领全场 。CP型分布式数据库,能够保证数据的强一致性和分区容忍性 。
二、NoSQL的常用种类
1、mongodb
优点:MongoDB最大的特点是表结构灵活可变,字段类型可以随时修改 。MongoDB是高性能、无模式的文档型数据库,文件存储格式为BSON(二进制格式的JSON),
支持二级索引,在事务、复杂查询应用下无法取代关系型数据库 。支持相比于HBase更复杂的集合查找 。
简而言之,往MySQL写数据像是在做填空题,你写入的数据必须与最早定义的表结构一致,而往MongoDB写数据就像是在做问答题,想怎么写就怎么写,这灵活度不要爽太多 。
缺点:比较消耗内存,有事务、join(全外连接)等短板 。因此,如果你的数据的逻辑结构非常复杂,经常需要进行复杂的多表查询或者事务操作,那显然还是MySQL这类关系型数据库更合适 。
使用场景:得益于MongoDB的这些特点,MongoDB很适合那些表结构经常改变,数据的逻辑结构没又没那么复杂不需要多表查询操作,数据量又比较大的应用场景 。
2、redis
Redis是现在最热门的key-value数据库,是内存亦可持久化的日志型,读写性能最强 。提供五种数据类型:String,hash,list,set及zset(sorted set) 。
适合存储全局变量和高效的分布式缓存 。当内存达到一定的阈值,数据可以定时持久化到硬盘中 。
优点:Redis的最大特点当然就是key-value存储所带来的简单和高性能了 。适合读多写少的业务场景,支持操作原子性 。
缺点:不支持二级索引 。也不适合做存储和分析 。因此Redis无法提供常规数据库所具备的多列查询、区段查询等复杂查询功能 。
同时,由于Redis需要把数据存在内存中,因此数据量要小于HBase与MongoDB 。
应用场景:Redis牺牲了常规数据库中的数据表、复杂查询等功能,换来了很大的性能提升,特别适合那些对读写性能要求极高,且数据表结构简单(key-value、list、set之类)、查询条件也同样简单的应用场景 。
如果你的数据表结构还挺复杂,你还经常需要做一些复杂查询操作,那你最好还是老老实实用MongoDB或者SQL吧 。
3、Hbase
HBase是Hadoop项目的一部分,HBase列式数据库,BigTable的一种实现 。高效存储大量数据,支持列压缩,行事务 。适合Schema-less的数据,
适合稀疏表,一个表可以容纳上亿行、上百万列,用做超大数据量要求扩展简单的离线分析型应用 。Hadoop的无缝集成,有数据可靠性和海量数据分析性能(MapReduce)的能力 。
优点:HBase也继承了Hadoop项目的最大优点,那就是对海量数据的支持,以及极强的横向(存储容量)扩展能力 。
缺点:HBase的列式存储特性带来了海量数据规模的支持和极强的扩展能力,但是也给数据的读取带来很大的局限 。
由于只有同一列族的数据才会被存放在一起,而且所有的查询都必须要依赖Key,这就使得很多复杂查询难以进行 。
应用场景:作为MapReduce(大规模数据集(大于1TB)的并行运算)的后台数据源;Facebook的消息类应用,包括Messages、Chats、Emails和SMS系统,用的都是HBase 。
综上所述:
如果你对数据的读写要求极高,并且你的数据规模不大,也不需要长期存储,选redis;
如果你的数据规模较大,对数据的读性能要求很高,数据表的结构需要经常变,有时还需要做一些聚合查询,选MongoDB;
如果你需要存储海量数据,连你自己都不知道你的数据规模将来会增长多么大,那么选HBase 。

mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?

文章插图

mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?

文章插图

mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?

文章插图

mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?

文章插图

【mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?】


    推荐阅读