分布式数据库中间件的实现原理介绍一:分库分表【转】

声明:本文并非原创,转自华为云帮助中心的分布式数据库中间件(DDM)服务的产品介绍。

分片是解决数据库存储容量限制的直接途径。分片包括垂直分片与水平分片两种方式。

  • 垂直分片

        垂直分片又叫纵向分割,即以逻辑表为单位,把原有数据库切分成多个数据库。切分后不同的表存储在不同的数据库上。

        垂直分片与业务架构设计有密切的联系。比如从业务领域对系统进行架构优化,分成多个子业务系统,各个子业务系统耦合度较低。子业务系统间以接口方式进行数据通信和数据交换。

    图2 垂直分片示意图 

        垂直拆分后业务清晰,拆分规则明确,系统之间容易整合与扩展。一般用于数据库上层架构设计。

  • 水平分片

        水平分片又叫横向分割,即以逻辑表中的数据行记录为单位,把原有逻辑数据库切分成多个物理数据库分片,表数据记录分布存储在各个分片上。

        水平分片主要用业务架构无法继续细分,而数据库中单张表数据量太大,查询性能下降的场景。通过水平分片,即解决单库容量问题,同时提高并发查询性能。

    图3 水平分片示意图 

        DDM实现了自动水平分片,应用无需关心某个数据该存储在哪一块分片上。

        对逻辑表水平分片需要依据一定的分片规则,例如一个订单跟踪系统(见图3),我们选取订单号(OrderId)作为拆分键,分别对“订单流水表”、“订单详情表”以及“物流跟踪表”进行水平拆分,拆分规则为对键值Hash后求模,则分片计算规则如下:

            H(Key(OrderId)) = Hash(Key(OrderId))%N

        其中,N表示一共有N个数据分片,H(Key(OrderId))表示该订单经过订单号Hash并求模后存储的分片编号。

    图4 分片后数据存储示意图 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值