一、单机MySQL的年代
90年代一个网站的访问量不会太大,单个数据库完全足够!更多使用静态网页HTML
,服务器没有什么压力;
但是会有以下瓶颈:
- 数据量不会太大,数据量太大的话一个机器存不下
- 数据的索引
(B+tree)
,一个机器内存也放不下 - 访问量
(读写混合)
,一个服务器承受不了
二、Memcached(缓存)
+ MySQL+垂直拆分(读写分离)
后来服务架构变成了读写分离,多个服务器中存放相同的数据,一些用来写一些用来读;
如图所示当有数据写入mysql2
中时,mysql1
和mysql3
两台服务器就会同步mysql2
中的数据,当用户需要读取数据时,就去mysql1
和mysql3
中读取;
经过调查,网站80%
的操作都是读操作,为了避免大量重复对于相同数据从数据库中读的操作,引入了缓存层;
这样减轻了数据库的压力;
三、分库分表+水平拆分+MySQL集群
三个集群构成了整个数据;
四、Nosql
NoSQL = Not Only SQL
(泛指非关系型数据库)
很多的数据类型,比如地理位置,个人信息,社交网络,这些数据类型的存储不需要一个固定的格式,不需要多余的操作就可以横向扩展;
NoSQL
的特点:
- 解耦!方便扩展
(数据之间没有关系很好扩展)
- 大数据高性能
(Redis一秒写8万次, 读12万次)(NoSQL的缓存是记录级的,是一种细粒度的)
- 数据类型是多样的
(不用事先设计数据库,随取随用)
五、3V和3高
3v
:描述问题
海量(volume)
多样(variety)
实时(verlocity)
3高
:解决问题
高并发
高可拓
高性能