分库分表-分片键

分片键算法:分片键决定了数据会被分布在哪个分片,原理就是根据分片键的值计算出数据所分布的分片ID计算的过程就是分片键算法,即 f(shardKey) = shardID,常见的算法有三种

  1. Range
  2. Hash
  3. Lookup

一、Range

范围分片算法,按照字段的取值范围来计算数据所属分片,常见的有时间范围分片

二、Hash

Hash 算法的定义很简单:输入任意关键字,得到一个固定长度输出。
在分库分表中,输入关键字指的是分片键对应的字段值,输出对应的是表示分片的 ID。

三、Lookup

也称之为目录映射或查找映射,其实就是直接定义分片和分片键值之间的映射关系,将其维护在配置或数据库中,是一种静态分片.
比如为了满足不同国家对数据存储的要求,需要将数据按国家进行分片,由于国家字段值并不多的,我们可以做简单的映射:中国=分片 1、美国=分片2、其他=分片3。

算法 优点 缺点 适用场景
Range 1. 实现简单 2. 分片键范围查询效率高 3. 支持动态分片(即到达一个范围自动创建一个分片),扩容简单 1. 数据热点问题,某个范围的数据可能很大或很小 2. 不具备写分散性 1. 数据量大,需要范围查询
Hash 1. 数据分散均匀 1. 分片扩容复杂,因为需要重新分布数据 2. 不适合范围查询 2. 1. 并发量大 2. 数据量大,随机读取性大
Lookup 1、实现简单,直接定义映射关系即可 配置错误时会出现异常 1、适合分片键是枚举值的场景

本文转至:zuanzi https://zhuanlan.zhihu.com/p/609637884?utm_id=0

你可能感兴趣的:(分库分表,分库分表键策略)