Nosql概述
为什么要用Nosql
1、单机+mysql的时代:
大数据时代:一般的数据库无法进行分析处理了
之前互联网并不发达,网站更多使用静态网页,服务器没有太大压力。
这种情况下的网站瓶颈是什么?
1、数据量如果太大,一个机器放不下了!
2、数据的索引(B+Tree),一个及其内存也放不下
3、访问量(读写混合),一个服务器承受不了
只要开始出现上面的三种情况之一,就必须要晋级。
2、加了一个缓存Memcached + mysql + 垂直拆分 (读写分离)
网站80%的数据都是查询,如果每次都去查询数据库就非常麻烦,所以我们加了一个缓存,来减轻服务器的压力
3、分库分表+ 水平拆分 + mysql集群
数据库的本质:读和写
早些年MyISAM: 表锁,十分影响效率!高并发下就会出现严重的锁问题
转战Innodb:行锁
慢慢的就开始使用分库分表来解决写的压力
MySQL的集群
4、如今最近的年代
MySQL等关系型数据库不够用了!数据量很大,变化很快
MySQL有的时候使用它来存储一些比较大的文件,博客,图片,数据库表很大,小路就低了。如果有一种数据库来专门处理这种数据。
目前的一个基本的互联网项目:
为什么要用NoSQL!
用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发时增长!
这个时候我们就需要使用NoSQL数据库的,NoSQL可以很好的处理以上的情况!
什么是NoSQL
NoSQL:=Not Only SQL(不仅仅是SQL)
关系型数据库:表格,行,列
很多的数据类型用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个固定的格式!不需要多余的操作就可以横向扩展事务Map<String, Object> 使用键值对来控制
NoSQL特点
1、方便扩展(数据之间没有关系,很好扩展)
2、大数据量高性能
3、数据类型是多样性的(不需要实现设计数据库,随取随用)
4、传统的关系型数据库 RDBMS (要写sql语言,只有row和col )和NoSQL(没有固定的,键值对)
NoSQL的四大分类
KV键值对:
- Redis
文档型数据库(bson格式 和 json 一样)
- MongoDB(一般必须掌握)
- MongoDB是一个基于分布式文件存储的数据库,主要用来处理大量的文档!
- MongoDB是一个介于关系型数据库和非关系型数据的中间产品!MongoDB是NoSQL(非关系型数据库)中最像关系型数据库的。
列存储数据库
- HBase
- 分布式文件系统
图关系数据库
- 他不是用来存图片的,而是用来存关系的,比如:朋友圈社交网络,广告推荐
- Neo4j
四者的区别: