【转载】原文地址:
https://www.zhihu.com/question/30219620
1.关于NoSQL
2.关于NoSQL的种类
两大用途:
4.MongoDB
比较赞同楼上的回答NoSQL is Not Only SQL
NoSQL的粗线的背景大概是因为随着数据量的扩大,在一些对数据集的分析中,传统的关系型数据库的计算成本变得很大。NoSQL凭借着它高大上的“易扩展、大数据、高可用、高性能、灵活性”,强势登场。
NoSQL的粗线的背景大概是因为随着数据量的扩大,在一些对数据集的分析中,传统的关系型数据库的计算成本变得很大。NoSQL凭借着它高大上的“易扩展、大数据、高可用、高性能、灵活性”,强势登场。
2.关于NoSQL的种类
3.HBase(列存储)
两大用途:
- 特别适用于简单数据写入(如“消息类”应用)和海量、结构简单数据的查询(如“详单类”应用)。特别地,适合稀疏表。(个人觉得存个网页内容是极好极好的)
- 作为MapReduce的后台数据源,以支撑离线分析型应用。
4.MongoDB
- 是一个介于关系型和非关系型之间的一个产品吧,类SQL语言,支持索引
- MongoDb在类SQL语句操作方面目前比HBase具备更多一些优势,有二级索引,支持相比于HBase更复杂的集合查找等。
- BSON的数据结构使得处理文档型数据更为直接。支持复杂的数据结构
- MongoDb也支持mapreduce,但由于HBase跟Hadoop的结合更为紧密,Mongo在数据分片等mapreduce必须的属性上不如HBase这么直接,需要额外处理。
- 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各有优劣,两者结合,可以覆盖更多的业务场景。