数据水平切分思想

一 定义 

水平切分是指业务模块按照数据的主键值来切分,实现扩展系统的能力。

简单理解,就是把数据表中一行行的数据,从水平方向切割开。

例如:从前一个系统的全量数据是100万个用户数据,水平切分10份后,从前系统逻辑不变,但是部署了10份,每份负责10万个用户数据。

二 优点

切分开的单元是独立的,存放在不同的表,相互没有影响和干扰,对于同一主键,处理逻辑和未切分前相同。

三 缺点

不同切分单元的数据聚合时,比较麻烦,要去不同的单元拉取数据,最终来聚合。

对数据主键切分导致在一个单元中看不到整体需要的其他单元的数据,必须要有一个整合层来获取数据进行汇总。整合层可以是一个单独的逻辑层,也可以是数据使用的调用方。

四 举例

使用 Mysql 存储用户数据,按照用户 ID 把不同的数据存储在不同的 Mysql 数据库中。如果每次只访问一个用户数据,那么只要路由到对应的 Mysql 表中,就能获取到数据。如果进行联表查询,不同的表分布在不同的数据库和物理机上,导致无法实现联合查询。例如查询整体数据排行前10的用户的需求,必须把每个表中的前10名都找到,然后汇总进行处理,才能得到最终结果。

没有切分之前,数据存储在一个表中,可以利用 Mysql 的排序功能,直接排序,找到前 10 名。切分后,数据存在在不同的空间,只能每个部分分别排序,然后汇总排序,类似外部排序思想,增大了算法实现的复杂度。

汇总排序的逻辑图如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值