数据库扩展(三)——主从复制&读写分离PK垂直划分&水平划分

  • 数据库的业务请求逻辑代码调整:

若使用垂直/水平划分,则需要根据不同的操作调整要处理的数据库链接。

若使用主从复制、读写分离,无需修改原有的数据库逻辑代码,只要使用“数据库反向代理”(mysql proxy)即可,如下图:屏幕快照 2015-08-11 下午2.34.34

  • 处理正在提供服务的数据库的数据的复杂度及耗时时长:

若使用水平划分,为了调整原有数据以适配现有的存储方式,需要对原始数据表中的数据做一次遍历,并按照水平划分规则插入到新的数据表中。(解决办法:在最初开始建立单机数据库的时候就对数据进行分表处理,即下图中的四张数据表user、log_0、log_1、log_2可以存在同一数据库中,当数据量达到一定量后,只做“垂直划分”即可。)

  • 多表操作:

垂直/水平划分后的数据库不能做多表操作。垂直划分后,一个数据库中只有一张表,自然不支持多表操作;水平划分后,即使同一数据库中存在多张表,但因水平划分后的数据表存储的是该表结构的部分数据,这会使得多表操作的结果会出现与预期不一致现象。

总结:

数据库的划分没有统一的方法,需要根据自己的业务特点来定制合适的数据库配置方式。

摘自:

机械工业出版社《微信公众平台应用开发实战》 钟志勇 著

电子工业出版社 《构建高性能Web站点》 郭欣 著

发表评论