Sharding-切分
概念
当数据量非常大时,数据库拆分是常见的降低数据库大小,提升性能的方法。数据库拆分是指按照某种条件,或者维度,将一个库(表)中的数据分散到多个库(表)中,通常可以分为水平拆分和垂直拆分。
类别
水平拆分
水平拆分以某个字段为依据(例如uid),按照一定规则(例如取模),将一个库(表)上的数据拆分到多个库(表)上,以降低单库(表)大小。简单来讲,它是将同一个库(表)中的记录拆分到多个结构相同的库(表)中。
- 每个库(表)结构一致
- 每个库(表)数据不一致,没有交集
- 所有库(表)的并集是全量数据
水平拆分可以把单表数据分布到其他数据表中,甚至集群中的其他数据库中,从而缓解单个数据库(表)的压力,解决单表大数据量问题。
垂直拆分
垂直拆分是指将一个属性较多,一行数据较大的表,将不同的属性拆分到不同的表中,以降低单库(表)大小。简单来说,是把一张表按列切分为多张表。
- 每个库(表)结构不一致
- 一般来说,每个库(表)的属性至少有一列交集
- 所有库(表)的并集是全量数据