mongodb,redis,hbase 三者都是nosql数据库,他们的最大区别和不同定位是什么?
mongodb,redis,hbase 三者都是nosql数据库,他们的最大区别和不同定位是什么?
Nosql = Not only SQL
mongodb:我觉得定位是取代关系型数据库,想当一个主流数据库。因为他有非结构化、方便扩充字段、写性能优于mysql。万事万物有利有弊,mongodb的内存型缓存内容,让其速度飞快,带来内存率多,掉电数据问题等,加上自身代码还有很多bug带来不如老牌关系型数据库稳定,特别是在主从等分布式环境,其设计也带来诸多问题。
redis:是一个小而美的数据库,主要用在key-value 的内存缓存,读写性能极佳,list,set,hash等几种简单结构使得使用也很简单。缓存与简单是其定位,分布式redis架构的出现,让redis更加广泛的使用,稳坐缓存第一把交椅。
hbase:定位非结构化大数据,可伸缩性好,并不是完全高可用,底层依靠hadoop提供的HDFS,使用时有一整套zookeeper,pig,hive的生态系统。Cassandra可以算一个竞争对手,但Cassandra去中心化的自适应结构又跟Hbase中心化的生态系统完全不同。
当SQL满足不了你的需求或者SQL 已经不是必须的或者最佳的选择时,就是你考虑这类NoSQL 的时候了。
当你的内存大于你的数据时,schema也不是太确定时,mongodb在这里静静地等待My SQL转业户为了尝鲜过来看热闹的,不改变设计模式,爽在前面痛在后面;
当你唯一追求的就是速度,又对memcached的过于简单心存芥蒂,刚好内存也比数据多时,redis俏生生站在那里;
大,好大,太大了,我说的是数据,我们128GB内存双路CPU25TB存储只够一星期的时候,估计就没有选择综合症了,HBase成了唯一或者唯二选择了。
-----------------------------------------
所以呢,不严谨地讲,Redis定位在"快",HBase定位于"大",mongodb定位在"灵活"。
NoSQL的优点正好就是SQL的软肋,而其弱点正好也就是SQL的杀手锏
-----------------------------------------
最大区别在于,在一般使用情况下,mongodb可以当作简单场景下的但是性能高数倍的MySQL, Redis基本只会用来做缓存,HBase用来做离线计算
MongoDB是文档型数据库,使用bson结构,可以更加灵活的处理嵌套结构的数据。是这三个里最接近关系型数据库的。
Redis是k-v型数据库,目标是做高效的分布式缓存。数据一般不实时落地。也不适合做存储和分析。
HBase是列式数据库,BigTable的一种实现,目标是高效存储大量数据,支持列压缩,行事务。适合Schema-less的数据。
来源:https://www.zhihu.com/question/30219620





