为什么要用Nosql
2020年,大数据时代;技术更新的很快,真香。
1,单机MySQL的年代。
90年代,一个基本的网站访问量一般不会太大,单个数据库就够用了。
那个时候,更多的去使用静态网页Html~服务器根本没有太大的压力!思考一下,这种情况下:整个网站的瓶颈是什么?
1,数据量如果太大,一个机器放不下!
2,数据的索引,一个机器内存也放不下
3,访问量(读写混合),一个服务器承受不了~
2,Memcached(缓存)+MySQL+垂直拆分(读写分离)
加一个缓存来减轻数据的压力,保证效率
发展过程:优化数据结构和索引–>文件缓存(IO)–>Memcached(当时最热门的技术!)
3,分库分表+水平拆分+MySQL集群
本质:数据库(读,写)
什么是NoSQL
NoSQL
NoSQL = Not Only SQL (不仅仅是SQL)
关系型数据库:表格,行,列
泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区!暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,是一个必须掌握的技术。
NoSQL特点
解耦!
1,方便扩展(数据之间没有关系,很好扩展!)
2,大数据量高性能(Redis一秒8万次,读取11万,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高!)
3,数据类型是多样型的!(不需要事先设计数据库!)
4,传统RDBMS和NoSQL
传统的RDBMS
结构化组织
SQL
数据和关系都存在单独的表中
操作,数据定义语言
严格的一致性
基础的事务
…
NoSQL
不仅仅是数据
没有固定的查询语言
键值对存储,列存储,文档存储,图形数据库(社交关系)
最终一致性,
CAP定理和BASE (异地多活)初级架构师!
高性能,高可用,高可扩
。。。
了解:3V+3高
大数据时代的3V:主要是描述问题的
1,海量Volume
2,多样Variety
3,实时Velocity
大数据时代的3高:主要是对程序的要求
1,高并发
2,高可扩
3,高性能
技术没有高低之分,就看你如何使用!
NoSQL的四大分类
KV键值对:
新浪:Redis
美团:Redis+Tair
阿里,百度:Redis +memecache
文档型数据库(bson格式和json一样)
MongoDB(一般必须要掌握)
MongoDB是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档!
MongoDB是一个介于关系型数据库和非关系型数据中中间的产品!MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的!
ConthDB
列存储数据库
HBase
分布式文件系统
图关系型数据库
图形数据库不是存图形的,放的是关系,比如:朋友圈社交网络,广告推荐!
Neo4j,infoGrid;