喝茶聊方案:分库分表方案之背景动员

207 阅读2分钟

为什么需要分库分表

问题

随着业务数据量和请求量的上升,单DB会遇到磁盘/带宽/IO瓶颈

解决

单DB成为瓶颈,抱着分而治之的思路,我们可以有如下的解决方案

  • 提升物理硬件 但是这种是有成本的,并且硬件升级到一定程度会有一个上限门槛.导致花费金额很大也没有明显效果.
  • 读写分离 拆分读写流量对数据库实行读写分离,针对读多写少的业务类型效果尤其明显
  • 应用垂直切分 对应用进行垂直切分,同时数据库垂直切分.如将单体应用切分为 订单/商品/会员模块,数据库跟着进行切分
  • 应用水平切分 垂直切分后已经是单模块的db和表,还可以进行水平切分

需要调研的事情

  • 市面上的分库分表组件
    • 市面上有哪些分库分表组件可供使用? 分别有什么优势和劣势?
  • 确定分片键(按哪个字段分片)以及分片规则
  • 根据业务增量,进行容量规划判断,满足未来存储需求(每年多少数据,希望满足未来几年使用.判断具体分多少库多少表)
  • 含有分库分表组件不支持的sql排查和改造(sql关键字不支持或者sql过于复杂影响组件判断)
  • 迁移方案(单库到分片库第一次上线方案)
  • 扩容方案(如果未来几年数据增量超过预估,需要进行扩容,怎么扩容)

细说下要调研的事情

限于篇幅限制来说,陆续发布欢迎关注

市面上的分库分表组件
喝茶聊方案:分库分表之市面开源组件一览
分库分表扩容方案
喝茶聊方案:分库分表方案之数据迁移