redis学习笔记-02:为什么使用NoSQL数据库

一、第一代:单机版的MySQL

1、静态网页,动态交互类型的网站不多。

2、架构:APP---->DAL---->MySQL Instance

3、数据存储的瓶颈:

(1)数据量总大小超过机器的内存

(2)数据的索引和数据量的大小超过机器的内存

(3)访问量(读写混合)超过一个实例承受的范围

二、Memcached(缓存)+MySQL+垂直拆分

1、随着访问量的上升,使用MySQL架构的网站会出现性能问题。web程序不能只关注功能的实现,还要追求性能,于是使用缓存技术来缓解数据库的压力。如果频繁查询的是一些常用的数据,那么可以把数据放在缓存中,减轻数据库被访问的压力。

2、架构:APP---->DAL---->Cache---->(MySQL Instance1,MySQL Instance2,MySQL Instance3 ...)

3、一个MySQL数据库装不下数据,那么通过多个MySQL实例来分担数据。

三、MySQL主从复制,读写分离

1、为了提高数据库容灾能力,主库插入一条数据,从库也会相应的新增数据。

2、随着数据库的写入压力增加,Memcahed只能缓解数据库的读取压力,读写集中于一个数据库会让数据库不堪重负。

3、于是采用主从复制技术来达到读写分离,比如多个MySQL数据库,主库(master)一个用来写,从库(slave)多个用来读,即master-slave模式。

4、架构: APP---->DAL---->Cache---->MySQL Master---->(MySQL Slave1,MySQL Slave2 ...)。

四、分表分库+水平拆分+mysql集群

1、在Memcahed的高速缓存、MySQL主从复制和读写分离的基础上,这时MySQL主库的写压力出现瓶颈。

2、于是流行使用分表分库来缓解写压力和数据量增长的扩展问题。

3、分库是指:尽量做到低耦合,与业务高度相关的、频繁的、活跃的数据放在一个库,低相关的放在另一个库。分表是指把海量的数据分开来写入。

4、多个MySQL主从构成MySQL-Cluster集群。架构:APP---->DAL---->Cache---->((MySQL M1 ,MySQL S11,MySQL S21 ...),(MySQL M 2,MySQL S21,MySQL S22 ...)... )。

五、NoSQL数据库(Not Only SQL)

1、NoSQL数据库泛指非关系数据库,NoSQL数据库的产生是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括大规模数据的存储。

2、NoSQL数据库中的数据进行存储时不需要固定的模式,去掉了关系,无需多余操作就可以横向扩展。

3、MySQL等关系型数据库在应付web2.0网站,特别是超大规模和高并发的web2.0纯动态网站显得力不从心,促成了NoSQL数据库的发展。

猜你喜欢

转载自www.cnblogs.com/Luv-GEM/p/11502897.html
今日推荐