IT虾米网

数据垂直切分思想

itxm 2022年06月12日 架构师 183 0

一 定义

垂直切分和水平切分相比,可以理解为把数据表中的数据按照数据字段的维度纵向切分开。

二 使用场景

垂直切分在复杂逻辑解耦方面很有用。例如,针对亿级访问量的系统,用户并发数和每秒的访问总量都很大,仅使用 Mysql 支撑不住全部的服务,还需要在中间增加缓存层,加速前端访问。一般在缓存层会使用垂直切分的方法。

垂直切分的时候,也会按照数据把模块复杂的功能切分开。例如,一个用户有10个字段,根据业务场景,把3个字段存储在一个缓存表中,把另外7个字段存储在另外一个缓存表中。虽然它们都属于一个主键,但根据业务场景不同,划分到不同的缓存表中。

三 优点

1 节约成本

内存相对比较贵,表中的一条记录数据字段很多,并不是用户都想要的。例如:个人资料有几十个字段,常用的也就2到3个字段。我们可以按照功能的场景来设计,针对同一个场景,在缓存表中只存和这个场景相关的业务字段。

2  解耦复杂逻辑

当权重不同的、无交集的逻辑混杂在一起时,垂直切分会大大降低复杂度。

例如,一个进程处理两个功能:一个是修改用户详细资料,对用户的全部资料都要修改,一个是快速访问简单的用户资料,例如:昵称和会员标记。

在业务逻辑层,一般修改详细资料的场景很少,该功能所在的入口也很深;但对于快速访问用户的简单资料,每次登陆时都要调用该功能。一个进程虽然提供了两个功能,但这两个功能被访问的次数和对服务质量的要求相差很多。把两个功能切分后,整体会更容易维护,也降低了两种功能互相影响的概率。 

按功能切分存储如下图所示。

让不同状态数据相互独立,互不干扰。但也有缺点,数据会冗余存储,相同的数据会存储多份,大大增加了维护数据一致性的难度。

四 水平切分和垂直切分对比

优点

缺点

水平切分

将大量数据切分成少量数据,处理规模变小

增加了聚合类数据操作的处理难度

垂直切分

不同功能的数据相互独立,互不干扰

有些字段会冗余存储,增加了维护数据一致性的难度


评论关闭
IT虾米网

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

数据水平切分思想