数据库分库分表方案

数据库的拆分方式有两种:水平拆分和垂直拆分。水平拆分关注的单表数据量过大的问题,对于上千万过亿行数据的表来说,单表数据量过大,查询和变更的成本会变大,同时单库的吞吐量也会达到瓶颈,会同时对业务造成影响。水平拆分的目的就是为了将单表拆分为多表,每个表仍包含原有的数据结构。而垂直拆分关注的是表结构的拆分,我们需要根据业务的维度,将原本一个表拆分为多个表,其中每个表的结构与原表不同,这样不同的业务就可以根据需要访问不同的表,提高查询和修改的效率,当然,这同时也会带来一些问题,就是分布式事务的问题,这个问题我们在后面详细讨论。

根据如何切片,分库分表的方案一般分为三大类:客户端分片、代理分片以及支持事务的分布式数据库。下面我们来分别讨论:

(1)客户端分片

就数据库分片逻辑来说,方法其实很简单,我们利用分表键的值进行hash分片,也可以根据分表键进行范围分片(例如根据天来划分,其实就是将一天的数据划分到单张表中),还有很多其他定制的分片方法等。对数据库分片其实很简单,问题核心在于我们应用如何访问分库分表以后的数据,也就是分库分表后的路由规则。而客户端分片的方式是在应用层直接操作分片逻辑,每个应用都嵌入一个操作分片的逻辑实现,一般是通过jar依赖,业务在使用的时候直接依赖我们提供的jar包即可,在jar中我们提供跟基本操作数据库一样的操作方法,让业务对底层分库分表的路由和数据聚合无感知。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值