33MyCat - 分片规则(ASCII码求模范围约束)

简介: 33MyCat - 分片规则(ASCII码求模范围约束)

此种规则类似于取模范围约束,此规则支持数据符号字母取模。

<tableRule name="sharding-by-prefixpattern">
 <rule>
   <columns>user_id</columns>
   <algorithm>sharding-by-prefixpattern</algorithm>
 </rule>
 </tableRule>
<function name="sharding-by-pattern" class="org.opencloudb.route.function.PartitionByPrefixPattern">
   <property name="patternValue">256</property>
   <property name="prefixLength">5</property>
   <property name="mapFile">partition-pattern.txt</property>
 </function>

partition-pattern.txt:

partition-pattern.txt
# range start-end ,data node index
# ASCII
# 8-57=0-9阿拉伯数字
# 64、65-90=@、A-Z
# 97-122=a-z
###### first host configuration
1-4=0
5-8=1
9-12=2
13-16=3
###### second host configuration
17-20=4
21-24=5
25-28=6
29-32=7
0-0=7

配置说明:

上面columns 标识将要分片的表字段,algorithm 分片函数,patternValue 即求模基数,prefixLength ASCII 截取的位数。

mapFile 配置文件路径:

配置文件中,1-32 即代表id%256后分布的范围,如果在1-32则在分区1,其他类推。

此种方式类似方式6只不过采取的是将列种获取前prefixLength位列所有ASCII码的和进行求模sum%patternValue ,获取的值,在范围内的分片数

String idVal=“gf89f9a”;
Assert.assertEquals(true, 0==autoPartition.calculate(idVal));
idVal=“8df99a”;
Assert.assertEquals(true, 4==autoPartition.calculate(idVal));
idVal=“8dhdf99a”;Assert.assertEquals(true,3==autoPartition.calculate(idVal));


目录
相关文章
|
数据库
数据库中有数字加字母的排序
数据库中有数字加字母的排序
42 0
|
6月前
|
算法 数据库
Mycat【Mycat分片规则(取模、分片枚举、范围约定)】(六)-全面详解(学习总结---从入门到深化)
Mycat【Mycat分片规则(取模、分片枚举、范围约定)】(六)-全面详解(学习总结---从入门到深化)
103 0
32MyCat - 分片规则(取模范围约束)
32MyCat - 分片规则(取模范围约束)
35 0
30MyCat - 分片规则(求模)
30MyCat - 分片规则(求模)
23 0
28MyCat - 分片规则(分片枚举)
28MyCat - 分片规则(分片枚举)
34 0
|
算法
29MyCat - 分片规则(固定分片hash算法)
29MyCat - 分片规则(固定分片hash算法)
51 0
31MyCat - 分片规则(按日期分片)
31MyCat - 分片规则(按日期分片)
48 0
38MyCat - 分片规则(自然月分片)
38MyCat - 分片规则(自然月分片)
56 0
|
存储
浮点数存储规则
浮点数存储规则
浮点数存储规则
|
SQL 算法 关系型数据库
MyCat - 分片 - 分片规则 - 字符串 Hash 求模范围算法 | 学习笔记
快速学习 MyCat - 分片 - 分片规则 - 字符串 Hash 求模范围算法
MyCat - 分片 - 分片规则 - 字符串 Hash 求模范围算法 | 学习笔记