垂直拆分:按业务模块拆分字段,适用于字段多但查询需求单一的场景。 水平拆分:按数据量拆分表结构相同的表,需通过分片键(如订单编号)定位具体表。

常见方法

  1. 分区表
  2. 时间维度分库分表
  3. 根据常见用户 ID、商家 Id 取模
    1. 通过异构数据 mq 或者 binlog 等异步构建数据
  4. 根据用户、商家 ID 取模做分库分表路由表,根据订单 ID 做分库分表
  5. 基因法
  6. 区间
  7. 一致性哈希

基因法

雪花算法

取模的特性:(前提被除数是 2 的 n 次方,除数除以被除数的得到的余数,这个余数转换成二进制一定会等于除数二进制最后 n 位)

比如,将买家 ID 融入到订单 ID 中,作为订单 ID 后缀。这样,指定买家的所有订单就会与其订单在同一分片内了

此情此景,如果在 查询某个用户的订单,就不用全表路由了。

现在是单片路由,直接根据用户id的最后4bit位,路由到订单的目标库表。

基因替换

替换基因的时候是直接把基因拼接还是替换后 n 位