分享

mongodb,redis,hbase三者的定位和区别

 hello_worldw6 2017-08-30

2017-04-05 by 深夜里写琴弹代码的人

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中心化的生态系统完全不同。


//下面主要总结区别和特点


3.HBase(列存储)


两大用途:

特别适用于简单数据写入(如“消息类”应用)和海量、结构简单数据的查询(如“详单类”应用)。特别地,适合稀疏表。(个人觉得存个网页内容是极好极好的)
作为MapReduce的后台数据源,以支撑离线分析型应用。

场景:Facebook的消息类应用,包括Messages、Chats、Emails和SMS系统,用的都是HBase;淘宝的WEB版阿里旺旺,后台是HBase;小米的米聊用的也是HBase;移动某省公司的手机详单查询系统。(单次分析,只能scan全表或者一个范围内的) 4.MongoDB

是一个介于关系型和非关系型之间的一个产品吧,类SQL语言,支持索引
MongoDb在类SQL语句操作方面目前比HBase具备更多一些优势,有二级索引,支持相比于HBase更复杂的集合查找等。
BSON的数据结构使得处理文档型数据更为直接。支持复杂的数据结构
MongoDb也支持mapreduce,但由于HBase跟Hadoop的结合更为紧密,Mongo在数据分片等mapreduce必须的属性上不如HBase这么直接,需要额外处理。

5.Redis

Redis为内存型KV系统,处理的数据量要小于HBase与MongoDB
Redis很适合用来做缓存,但除此之外,它实际上还可以在一些“读写分离”的场景下作为“读库”来用,特别是用来存放Hadoop或Spark的分析结果。
Redis的读写性能在100,000 ops/s左右,时延一般为10~70微妙左右;而HBase的单机读写性能一般不会超过1,000ops/s,时延则在1~5毫秒之间。
Redis的魅力还在于它不像HBase只支持简单的字符串,他还支持集合set,有序集合zset和哈希hash

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

NoSQL数据库的四大分类

键值(Key-Value)存储数据库


这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。[3]举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.


列存储数据库。


这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.


文档型数据库


文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。


图形(Graph)数据库


图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。[2]如:Neo4J, InfoGrid, Infinite Graph.


因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。

NoSQL数据库的四大分类表格分析
分类
Examples举例
典型应用场景
数据模型
优点
缺点


键值(key-value)[3]
Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。[3]
Key 指向 Value 的键值对,通常用hash table来实现[3]
查找速度快
数据无结构化,通常只被当作字符串或者二进制数据[3]


列存储数据库[3]
Cassandra, HBase, Riak
分布式的文件系统
以列簇式存储,将同一列数据存在一起
查找速度快,可扩展性强,更容易进行分布式扩展
功能相对局限


文档型数据库[3]
CouchDB, MongoDb

Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)
Key-Value对应的键值对,Value为结构化数据
数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
查询性能不高,而且缺乏统一的查询语法。


图形(Graph)数据库[3]
Neo4J, InfoGrid, Infinite Graph
社交网络,推荐系统等。专注于构建关系图谱
图结构
利用图结构相关算法。比如最短路径寻址,N度关系查找等
很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。[3]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多