1.1、为什么要使用Nosql
在 90 年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。
后来,随着访问量的上升,几乎大部分使用 MySQL
架构的网站在数据库上都开始出现了性能问题
- 数据量的总大小一个机器放不下时。
- 数据的索引(
B+ Tree
)一个机器的内存放不下时。 - 访问量(读写混合)一个实例不能承受。
用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发式增长!
1.2、什么是NoSQL?
NoSQL
(NoSQL = Not Only SQL ),意即“不仅仅是SQL
”,
泛指非关系型的数据库。随着互联网
web2.0
网站的兴起,传统的关系数据库在应付web2.0
网站,特别是超大规模和高并发的SNS
类型的web2.0
纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL
数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。
1.3、NoSQL的特点
- 方便扩展(数据之间没有关系,很好扩展! )
- 大数据量高性能(
Redis
一秒写8万次,读取11万, NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高! ) - 数据类型是多样型的! (不需要事先设计数据库!随取随用!如果是数据量十分大的表,很多人就无法设计了!
1.4、关系型数据库与NoSQL的区别?
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
- ACID
NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性