- 实现方式:该算法先进行取模,然后根据取模值所属范围进行分片
- 优点:可以自主决定取模后数据的节点分布
- 缺点:dataNode 划分节点是事先建好的,需要扩展时比较麻烦。
-
配置示例:
<tableRule name="sharding-by-pattern">
<rule>
<columns>id</columns>
<algorithm>sharding-by-pattern</algorithm>
</rule>
</tableRule>
<function name="sharding-by-pattern" class="io.mycat.route.function.PartitionByPattern">
<property name="mapFile">partition-pattern.txt</property>
<property name="patternValue">256</property>
<property name="defaultNode">0</property>
</function>
-
相关属性:
- mapFile:切分规则配置文件
- patternValue:求模基数
- defaultNode:默认节点,小于0表示不设置默认节点,大于等于0表示设置默认节点,如果超出配置的范围,则使用默认节点
-
partition-pattern.txt 示例:
#id partition range start-end,data node index
1-32=1
33-64=2
65-128=3
129-256=4
0-0=5
注意:在mapFile配置的文件中,其1-32 表示的为 id%256后分布的范围,如果id不是数据则分配到 defaultNode 中