美文网首页缓存、数据库
传统型关系型数据库分库分表演进

传统型关系型数据库分库分表演进

作者: AI贺贺 | 来源:发表于2019-07-01 22:29 被阅读15次

传统型关系型数据库分库分表演进

传统RDBMS的分库分表其实就是Sharding,分为两方面:分库,分表。

  • 垂直分库, 用户库,商品库,交易库
  • 水平分表,uid % 64,分成64张表

演进

第一版拆分

  • 简单M-S -> DB拆分
  • 无Cache -> 有Cache
  • 硬件升级:
    • SAS -> SSD

存在问题:

  • 跨数据库事务
1561990089688

第二版升级

做读写分离,对表进行拆分

  • uid % 64
  • 写主库,读缓存。 从应用层做读写分离
1561990217993

问题:

  • 非分表的键进行查询,比如对uid进行分表,但是根据userName进行查询

第三版升级

同时进行分库分表

  • 首先进行垂直拆库,将数据库以uid % 3取模,落到三个数据库中
  • 再根据uid%64进行水平拆表

垂直方向分了三片,水平方向分64片,解决横向扩展问题。可以使用Sharding-JDBC

1561990483904

存在问题:

  • 业务partion Key选择
  • 业务多维度查询
  • 机器资源利用率低
  • Sharding语义如何透明
  • 数据同步/异步问题

第四版演进

用DBProxy或者MyCat将Sharding组件独立出来。

1561991226305

...

最后

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

相关文章

网友评论

    本文标题:传统型关系型数据库分库分表演进

    本文链接:https://www.haomeiwen.com/subject/vfdocctx.html