IT虾米网

数据水平切分思想

shasha 2022年06月12日 架构师 241 0

一 定义 

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

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

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

二 优点

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

三 缺点

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

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

四 举例

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

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

汇总排序的逻辑图如下:


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

电商平台微服务架构演进