分库分表-分片键

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

  1. Range
  2. Hash
  3. Lookup

一、Range

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

二、Hash

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

三、Lookup

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值