从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战
上QQ阅读APP看书,第一时间看更新

2.2 查询分离简介

2.2.1 何为查询分离

查询分离即每次写数据时保存一份数据到其他的存储系统里,用户查询数据时直接从中获取数据,如图2-1所示。

• 图2-1 查询分离示意图

2.2.2 何种场景下使用查询分离

当在实际业务中遇到以下情形时,就可以考虑使用查询分离。

1)数据量大:比如单个表的行数有上千万,当然,如果几百万就出现查询慢的问题,也可以考虑使用。

2)查询数据的响应效率很低:因为表数据量大,或者关联查询太过复杂,导致查询很慢的情况。

3)所有写数据请求的响应效率尚可:虽然查询慢,但是写操作的响应速度还可以接受的情况。

4)所有数据任何时候都可能被修改和查询:这一点是针对冷热分离的,因为如果有些数据走入终态就不再用到,就可以归档到冷数据库了,不一定要用查询分离这个方案。

很多人对查询分离这个概念特别熟悉,但是对于查询分离的使用场景不太理解,这是不够的。只有了解了查询分离的真正使用场景,才能在遇到实际问题时采取最正确的解决方案,这也是本书的立意所在。

接下来谈谈查询分离的实现思路。