分片算法的介绍
DRDS会将逻辑表进行切割,如何合理的选择分片算法至关重要。通常,要考虑如下几点:
- 切分后数据分布是否均匀。
- 切分后是否会形成数据访问热点 。
- 算法是否足够简单,性能足够好 。
- 扩容时涉及的数据迁移数量及难度。
- 对多值和范围查询的支持。
已支持的分片算法包括:取模分片、字符串hashCode取模分片、枚举分片、时间范围分片、枚举分组取模分片、枚举分组字符串hashCode取模分片等。分片算法的介绍具体请参见 分布式关系型数据库> 产品介绍 > 常用概念 > 分片算法。
分片算法的策略选择
上述几种分片算法的适用场景如下。
取模分片
适用场景:分片键必须是整数,分片键求余后的值均匀分布。一般来说,用作整数的主键id作为取模分片较为合适。
枚举分片
适用场景:有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则。
时间范围分片
适用场景:适用日志数据等按时间范围进行存储的数据。这种分片算法适用于日志数据、监控数据在内等以时间纬度存储的数据。
枚举分组取模分片
适用场景:枚举键可以是整数也可以是字符串,取模键必须是整数,取模键求余后的值均匀分布。如: 数据库的数据需要按区域进行隔离,但隔离后的数据量依然巨大需要按取模方式进行再次分片,可以选择此算法。
枚举分组字符串hashCode取模分片
适用场景:枚举键可以是整数也可以是字符串,取模键是字符串,取模键字符串hashCode求余后的值均匀分布。如: 数据库的数据需要按区域进行隔离,但隔离后的数据量依然巨大需要按取模方式进行再次分片,可以选择此算法。