1.关于NoSQL
NoSQL = Not Only SQL
NoSQL的粗线的背景大概是因为随着数据量的扩大,在一些对数据集的分析中,传统的关系型数据库的计算成本变得很大。NoSQL凭借着它高大上的“易扩展、大数据、高可用、高性能、灵活性”,强势登场。
2.关于NoSQL的种类
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
MongoDB做高性能数据库,Redis做缓存,HBase做大数据分析。MongoDB还无法取代关系型数据库。
传统关系型数据库面对数据规模、数据模型复杂时的不足,导致了NoSQL的快速发展,后者易扩展,性能高,支持灵活的数据模型。
网易云官方回答:(www.163yun.com)
MongoDB是高性能、无模式的文档型数据库,支持二级索引,非常适合文档化格式的存储及查询。MongoDB的官方定位是通用数据库,确实和MySQL有些像,现在也很流行,但它还是有事务、join等短板,在事务、复杂查询应用下无法取代关系型数据库。
Redis是内存型Key/Value系统,读写性能非常好,支持操作原子性,很适合用来做高速缓存。
HBase存储容量大,一个表可以容纳上亿行、上百万列,可应对超大数据量要求扩展简单的需求。Hadoop的无缝集成,让HBase的数据可靠性和海量数据分析性能(MapReduce)值得期待。
所以说,关系型数据库和NoSQL各有优劣,两者结合,可以覆盖更多的业务场景。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。