Nosql概述
为什么要用Nosql?
我们现在是大数据时代; 大数据:一般数据库无法分析处理了!、
单机musql的90年代,一个基本的网站访问量不会太大,单个数据库完全足够!
那个时候,更多的去使用静态网页,服务器根本没有太大的压力。
思考? 这种情况下,整个网站的瓶颈是什么?
1、数据量如果太大,,一个机器放不下。
2、数据的索引300万,就一定建立索引(B+Tree)了。
3、访问量(混合读写),一个服务器承受不了
只要你开始出现以上三个情况之一,那么你就必须要晋级!
网站80%的情况都是读,每个用户都进行读mysql。 我们可以增加缓存, 让用户查缓存。
发展过程:优化数据结构和索引——>文件缓存(IO)——>Memcached(当时最热门的技术)
3、分库分表+ 水平拆分+Mysql集群
本质:数据库(读,写)
早些年MyLSAM:锁表(100w数据中,查张三的密码,他会把整个表锁起来。十分影响效率。高并发下出现严重问题)
转战Innodb:行锁,每次查询 之锁这一行。
慢慢的就开始使用分库分表来解决写的压力!Mysql在那个年代推出了表分区,但是并没有多少公司使用!
4、如今最近的年代
技术爆炸:2010-2020 世界已经发生了翻天覆地的变化;
MYSQL等关系型数据库就不够用了!数据量很多,变化很快~!
MSQL有的使用它来村粗一些比较大的文件,博客,图片!数据库表很大,效率就低了!
为什么用NoSQl!
用户的个人信息,社交网络,用户的日志等等爆发式增长,。这个时候就需要使用Nosql数据库的了。就可以很好解决问题。
关系型数据库:(表格,行,列)
什么是NoSQL?
NoSql=Not Only SQL(不仅仅是sql)
泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库 很难对付web2.0时代!尤其是超大规模的高并发的社区 ! 暴露出来很难客服问题,Nosql在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下必须要掌握一个技术。。
很多的数据类型用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个固定的格式!不需要多余的操作。就可以横向扩展的! Map<String ,Object> 很多人用get,set。就是控制的map。。使用键值对控制。
NoSQL特点
解耦!
1、方便扩展(数据直接没有关系,很好扩展!)
2、大数据量高性能(Redis一秒写8万次,读取11万,MoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高!)
3、数据类型是多样性的!(不需要实现设计数据库!随取随用,如果是数据量十分大的表,很多人就无法设计了!)
4、传统RDBMS和NoSQL
传统 RDBMS
- 结构化组织
- SQL
- 数据和关系都在单独的表中
- 数据操作,数据定义语言
- 严格的一致性,
- 基础的事务
- 。。。
NoSQL
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,列存储,文档存储,图形数据库(社交关系)
- 最终一致性
- CAP定理 和 BASE(异地多活)
- 高性能,高可用