NoSQL

一、什么是 NoSQL

1、泛指非关系型的数据库
2、这些类型的数据存储不需要固定的模式,无需多余的操作就可以横向扩展##

二、能做什么

1、易扩展数据之间无关系,这样就非常容易扩展。
2、大数据量高性能无关系性使得其具有非常高的读写性能。
3、多样灵活的数据模型NoSQL 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式.
4、传统 DBMS 和 NoSQL
NoSQL:
不仅仅是 SQL
没有声明性查询语言
没有预定义的模式
键值对存储,列存储,文档存储,图形数据库
最终一致性,而非 ACID 属性
非结构化和不可预知的数据
CAP 定理
高性能,高可用性和可伸缩性

三、为什么用NoSQL

【一】、单机 MySQL
1、数据量的总大小,一个机器放不下
2、数据库的索引(B+ Tree)一个机器的内存放不下
3、访问量(读写混合)一个实例不能承受
NoSQL

【二】、 优化一:Memcached(缓存)+ MySQL + 垂直拆分
使用缓存技术缓解数据库的压力,优化数据库的结构和索引。
NoSQL
【三】、优化二:主从复制读写分离
写操作放在主库,读操作放到从库。
NoSQL
【四】、优化三:分库分表 + 水平拆分 + MySQL 集群
1、在前三种优化的基础上,MySQL 的写压力出现了瓶颈,数据量持续猛增。
2、MyISAM 使用表锁,在高并发下会出现严重的锁问题,因此 MySQL 开始使用 InnoDB 引擎。
3、同时分表分库也成了一个热门技术。
NoSQL

【五】、MySQL 的扩展性瓶颈
1、MySQL 数据库经常存储一些大文本字段,导致数据库表非常的大,在做数据库恢复的时候就会非常慢。
2、关系数据库很强大,但是并不能很好的应付所有的应用场景。
3、MySQL 扩展性差,大数据下 IO 压力大,表结构更改困难。

【六】、今天是什么样子?
NoSQL

【七】、为什么用 NoSQL
1、传统的 MySQL 不足以支持庞大的关系网络
2、数据成倍增加
NoSQL