Redis学习笔记(一)--NoSQL入门概述(一)

数据库存储瓶颈

Redis学习笔记(一)--NoSQL入门概述(一)_第1张图片

DAL是数据访问层的英文缩写,即为数据访问层(Data Access Layer)。其功能主要是负责数据库的访问。简单地说就是实现对数据表的Select(查询)、Insert(插入)、Update(更新)、Delete(删除)等操作。

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

Memcached缓存+MySQL+垂直拆分

Redis学习笔记(一)--NoSQL入门概述(一)_第2张图片
1、利用缓存技术来缓解数据库的压力
2、优化数据库结构和索引

比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带来了比较高的IO压力。

MySQL主从读写分离

Redis学习笔记(一)--NoSQL入门概述(一)_第3张图片
Memcache只能缓解数据库的读写压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术达到读写分离,以提高读写性能和读库的可扩展性。形成了MySQL的master-slave模式

分库分表+水平拆分+MySQL

Redis学习笔记(一)--NoSQL入门概述(一)_第4张图片
在memcached的高速缓存和MySQL主从复制,读写分离的基础之上,主库写的压力出现瓶颈,二数据量持续猛增

表锁和行锁,行锁就是锁一张表中的某一行,并发性更高,表锁就是锁一张表,并发性差,由于MyISAM使用表锁,在高并发下出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。

使用分库分表缓解写压力和数据增长的扩展问题。业务相关的/耦合的分在一块,分表举例假如有9000w数据信息,分表就是1-3000w放在1号库,3001-6000w放在2号库,6001-9000w放在3号库

MySQL扩展性瓶颈

MySQL数据库经常存储一些大文本字段,导致数据库表非常的打,在做数据库回复的时候会非常的漫,不容易快速恢复,关系型数据库很强大,但不能很好的应付所有应用场景,MySQL扩展性差,大数据下IO压力大,表结构更改困难。

为什么用NoSQL

用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志的成倍增加,SQL数据库已经不适合。例如SQL数据库很难表达“哥哥的嫂子的二姨的叔叔”这种复杂的人际关系

NoSQL是什么

NoSQL(Not Only SQL)不仅仅是SQL,泛指非关系型的数据库,这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

你可能感兴趣的:(数据库,Redis,Redis)