为什么要用NoSql
单击mysql年代
90年代,一个基本的网页访问量不会太大,单个数据库足够,那个时候更多的是去使用静态网页Html服务器没有太大压力
思考下这中情况:整个网页的瓶颈是什么
1.输入数据量太大一个机器放不下了
2.数据的索引(B+Tree),一个机器内存也放不下
3.访问量(读写混合)一个服务器承受不了
2.Memcached(缓存)+MySql+垂直拆分
网站上80%的情况都是在读,每次要去查询数据库的时候特别麻烦!所以说我们要减轻数据库的压力,我们可以使用缓存来证明效率!
发展过程:优化 数据结构和索引-->文件缓存(IO)-->Memcached(当时最热门的缓存技术)
3.分库分表+水平拆分+MySql集群
技术和业务发展的同时,对人的要求 也越来越高
本质:数据库(读,写)
早些年MySAM:表锁,十分影响效率!高并发下就会引发严重的锁问题
转战 INONDB:行锁
慢慢的就开始使用分库分表来解决写的压力!MySql那个年代推出了表分区!这个并没有多少公司使用
MySql的集群,很满足了那个年代的需求
如今最近年代
MySql关系型数据库已经不够用了,数据量多,变化快!
MySql的使用是来存储一些比较大的图片、文件、博客,数据库表很大,效率就很低了,如果有一种数据库来专门处理这种数据MySql的压力就变得十分小,大数据IO压力下表几乎没法更大
目前一个基本的互联网项目!
为什么要使用NoSql呢
用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户的日志等等爆发式增长(这时候就不能用关系型数据库了)
这时候我们就需要用到NoSql数据库,NoSql会很好的处理以上情况
什么是NoSql
Nosql
Nosql = Not Only SQL(不仅仅是SQL)
关系型数据库:表格,行,列(PIO)
泛指非关系型数据库的,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发社区!爆露出很多难以克服的问题,Nosql在当今大数据环境下发展十分迅速
很多的数据类型用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个固定的格式,不需要多月的操作就可以横向扩展!Map<String,Object>使用键值对来控制
NoSQL特点
1.方便扩展(数据之间没有关系,很好扩展!)
2.数据量高性能(Redis一秒写8万次,读取11万次,NoSQL的换粗记录级,是一种细粒度的缓存,性能会比较高!)
3.数据类型是多样性的!(不需要事先设计数据库!随去随用!如果是数据量十分大的表,很多人就无法设计了!)
4.传统RDBMS和NoSQL
传统的RDBMS
— 结构化组织
— sql
— 数据和关系都存在单独的表中
— 操作操作,数据定义语言
— 严格的一致性
— 基础的事务
.....
Nosql
— 不仅仅是数据
— 没有固定的查询语言
— 键值对存储,列存储,文档存储,图形数据库(社交关系)
— 最终一致性
— CAP定理和BASE(异地多活)
— 高可用,高性能,高扩展
.....