什么是NoSQL
NoSQL
NoSQL并不是一个完整的词,即它的意思不是没有Sql!,而是Not Only Sql的缩写,即不仅仅是Sql。泛指非关系型数据库,在web2.0时代,关系型数据库在处理高并发和超大规模的动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。而 Redis便是这其中的一个典型代表。
传统关系型数据库存储数据采用类似表格中行、列的固定方式存储,而当今许多的应用场景下,许多数据类型,比如个人的信息、地理位置等,并不是一个固定的格式,而非关系型数据库采用类似Java中Map<key,value>的方式存储数据,不需要横向扩展,在某些场景下比关系型数据库更加合适。
特点
- 方便扩展,因为数据之间没有联系。
- 大数据量提高性能,比如Redis官方给出的数据声称一秒可写8万次,读取11万次,而NoSql的缓存级是一种细粒度的缓存,性能较高。
- 数据类型多样 ,因为不像关系型数据库是固定的,所以不需要事先去对数据库进行设计,随取随用即可。
- 关系型数据库(RDBMS)与非关系型数据库(NoSql)相比:
RDBMS
-
组织是结构化的
-
结构化的查询语言SQL
-
数据和关系都存在单独的表中,比如一张表中有多少列,多少行数据,外键、索引等
-
一致性、原子性,基础的事务等
NoSQL
-
不仅仅是数据,比如还可以存储文件、图形等
-
没有固定的查询语言,比如Redis中是通过get取值
-
键值对存储,列存储,文档存储,图形存储等多种类型存储
-
最终一次性,比如Redis的事务在出错时也能执行
-
高可用、高性能、搞可扩
3V+3高
大数据时代的3V:主要是描述问题的
1.海量Volume
2.多样Variety
3.实时Veiocity
大数据时代的3高:主要是对程序的要求
1.高并发
2.高可扩(随时水平拆分,比如机器不够用了,可以扩展机器)
3.高性能
实践中,一般是NoSQL+RDBMS结合使用
NoSQL四大分类
- K-V键值对
- Redis
- Tair
- 文档型数据库(bson格式)
- MongoDB
- MongoDB是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档
- MongoDB是一个介于关系型数据库和非关系型数据库中间的产品,MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的
- ConthDB
- 列存储数据库
- HBase
- 分布式文件系统
4.图关系数据库
- 不是存图形,放的是关系,比如:朋友圈社交网络,广告推荐
- Neo4j、InfoGrid
四者对比