一、背景
在互联网项目中往往存在大数据量的需求,比如一些商品抢购的场景,或是访问量瞬间较大的时候,一瞬间成千上万的请求就会到来,比如在双十一活动。
当数据量的总大小一个机器放不下时;数据索引一个机器的内存放不下时;访问量(读写混合)一个实例放不下时。
(1)单机模式:
app——>dao——>mysql,如果每次存储成千上万条数据,这样很会导致mysql的性能很差,存储以及读取速度很慢;
然后就演变成,app——>dao——>缓存——>mysql,缓存+mysql+垂直拆分的方式。将所有的数据先保存到缓存中,然后再存入mysql中,减小数据库压力,提高效率。
但是当数据再次增加到又一个量级,由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力,读写集中在一个数据库上让数据库不堪重负。
(2)主从分离模式:
使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配。
MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增。
由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。
(3)分库分表模式
将变化小的、业务相关的放在一个数据库,变化多的,不相关的数据放在一个数据库。
二、NoSQL的优势
易扩展 :不