水平分片表映射关系
逻辑表-水平分片表使用多个物理表(即后端真实数据库中的表)存储数据
所以存在以下一对多映射关系
①分布式数据库实例.逻辑库.逻辑表→存储数据库实例.物理库.物理表
②分布式数据库实例.逻辑库.逻辑表→总物理分表下标
③分布式数据库实例.逻辑库.逻辑表→物理库下标.物理表下标 
其中②,③常用于HASH映射
在①中有以下配置项
物理库名字
物理表名字
在②中有以下配置项
总物理分表下标
其中物理分表就是数据分区即分片,总物理分表下标就是分区下标(序号)
在③中有以下配置项
物理库下标范围
每库物理表下标范围
上述两项如果还与总物理分表下标有数学关系,则还可以配置总物理分表下标
例子1
tbpartition by MOD_HASH (id) tbpartitions 6;
上述分片信息,共6个分区
有分表范围table_[0,5]
例子2
dbpartition by MOD_HASH (id) dbpartitions 8tbpartition by MOD_HASH (id) tbpartitions 6;
上述分片信息,共8*6个分区
有分库范围db[0,7],分表范围table[0,6],分区范围[0,47]
可以选择②或者③两种方式映射
但是使用③形式,在类似以下情况
在分库范围db[0,2],分表范围table[0,2]情况下,
| 分片值 | 分库下标 | 分表下标 |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 0 | 0 |
| 3 | 1 | 1 |
| 4 | 0 | 0 |
| 5 | 1 | 1 |
| 6 | 0 | 0 |
| 7 | 1 | 1 |
| 8 | 0 | 0 |
| 9 | 1 | 1 |
则永远不能使用(0,1),(1,0)分区,实际数据分区少于配置的分区数
在分库范围db[0,7],分表范围table[0,6]情况下,
| 分片值 | 分库下标 | 分表下标 |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 5 | 5 |
| 6 | 6 | 0 |
| 7 | 7 | 1 |
| 8 | 0 | 2 |
| 9 | 1 | 3 |
存在映射不直观,连续的分片值不尽可能存储在的相同存储节点的问题
所以一般使用②方式进行映射
| 分片值 | 分区下标 |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 47 | 47 |
| 48 | 0 |
| 49 | 1 |
下标关系
当使用③类型映射的时候使用dbIndex和tableIndex
//分库分表"function":{"properties":{"dbNum":1,"mappingFormat":"数据源/物理库_${dbIndex}/物理表_${tableIndex}","tableNum":10,"tableMethod":"MM(create_time)","storeNum":1,"dbMethod":"mod_hash(id)"}},
//分库分表"function":{"properties":{"dbNum":1,"mappingFormat":"数据源_${dbIndex}/物理库/物理表_${tableIndex}","tableNum":10,"tableMethod":"MM(create_time)","storeNum":1,"dbMethod":"mod_hash(id)"}},
//分表"function":{"properties":{"dbNum":1,"mappingFormat":"数据源(集群)/物理库/物理表_${tableIndex}","tableNum":10,"tableMethod":"MM(create_time)","storeNum":1,"dbMethod":"mod_hash(id)"}},
而使用②类型的时候如果分库分表两个函数使用相同的函数,如果这个函数支持②类型映射,使用index(一般带有)
对应
//分库分表"function":{"properties":{"dbNum":1,"mappingFormat":"c${targetIndex}/db1_${dbIndex}/sharding_${index}","tableNum":10,"tableMethod":"mod_hash(id)","storeNum":1,"dbMethod":"mod_hash(id)"}},
//分表"function":{"properties":{"dbNum":1,"mappingFormat":"c0/db1/sharding_${index}","tableNum":10,"tableMethod":"mod_hash(id)","storeNum":1,"dbMethod":"mod_hash(id)"}},
//分库分表"function":{"properties":{"dbNum":1,"mappingFormat":"c${targetIndex}/db1_${dbIndex}/sharding_${tableIndex}","tableNum":10,"tableMethod":"mod_hash(id)","storeNum":1,"dbMethod":"mod_hash(id)"}},
