传统型关系型数据库分库分表演进
2019-07-01 本文已影响15人
AI贺贺
传统型关系型数据库分库分表演进
传统RDBMS的分库分表其实就是Sharding,分为两方面:分库,分表。
- 垂直分库, 用户库,商品库,交易库
- 水平分表,uid % 64,分成64张表
演进
第一版拆分
- 简单M-S -> DB拆分
- 无Cache -> 有Cache
- 硬件升级:
- SAS -> SSD
存在问题:
- 跨数据库事务

第二版升级
做读写分离,对表进行拆分
- uid % 64
- 写主库,读缓存。 从应用层做读写分离

问题:
- 非分表的键进行查询,比如对uid进行分表,但是根据userName进行查询
第三版升级
同时进行分库分表
- 首先进行垂直拆库,将数据库以uid % 3取模,落到三个数据库中
- 再根据uid%64进行水平拆表
垂直方向分了三片,水平方向分64片,解决横向扩展问题。可以使用Sharding-JDBC

存在问题:
- 业务partion Key选择
- 业务多维度查询
- 机器资源利用率低
- Sharding语义如何透明
- 数据同步/异步问题
第四版演进
用DBProxy或者MyCat将Sharding组件独立出来。

...
最后
自己应该再需要一些真正实践的经验,多去了解相关的内容,对这块知识点才有比较深的了解。