MongoDB vs Redis vs HBase

当SQL无法满足我们的需求或者SQL已经不是必须的或者最佳的选择时,就可以考虑NoSQL了。

MongoDB是文档型数据库,使用bson结构,可以更加灵活的处理嵌套结构的数据,是这三个里最接近关系型数据库的,有着非结构化、方便扩充字段、写性能优于mysql等优点,万物皆有利弊,MongoDB是内存性缓存内容,使其速度飞快;带来内存占用率高,掉电丢数据等问题,加上自身代码还有很多bug造成不如老牌关系型数据库稳定,特别是主从等分布式环境下,其设计也带来诸多问题。

Redis是K-V型数据库,目标是为了做高效的分布式缓存,数据一般不需要要实时落盘,不适合做存储和分析。可以认为Redis是一个小而美的数据库,主要用在key-valu的内存缓存,读写性能极佳,string, list、set、sorted set(zset)等几种简单的结构使其使用很简单。缓存及使用简单是Redis的定位,分布式redis的出现,让redis更加广泛的使用。

HBase是列式数据库,BigTable的一种实现方式,目标是高效存储大量数据,支持列压缩,行事务,适合Schema-less的数据。定位非结构化的大数据,可伸缩性好,并不是完全高可用,底层依靠Hadoop提供的HDFS,使用时有一整套zookeeper,pig,hive的生态系统。Cassandra可以算是一个竞争对手,但是Cassandra去中心化的自适应结构又跟HBase中心化的生态系统完全不同。

存储类型 解决方案代表 特点
列存储 Hbase, Cassandra, Hypertable 按列存储,适应于数据库压缩,对一个或几个字段进行查询的效率很高
文档存储 MongoDB, CouchDB, Riak 保证海量数据存储的同时,具有良好的查询性能。用类Json格式进行存储
key-value存储 Dynamo, Redis, Tokyo Cabinet, MemcacheDB 具有极高的并发读写性能,通过key迅速查到value,但只能通过可以查询
图数据库 Neo4j, HyperGraphDB 图形关系的最佳存储模式
对象数据库 db4o, Versant 类似面向对象语言的语法操作数据库,通过对象的方式存储数据
XML数据库 Berkerey DB XML, BaseX 高效存储XML数据,并支持XML的内部查询语法

 

 

你可能感兴趣的:(redis,mongodb,hbase)