MYCAT10种常见分片规则之十 — PartitionDirectBySubString(应用程序指定)
一、使用场景
此规则是在运行阶段由应用程序自主决定路由到那个分片,基本上是在数字字符串字段上自由加工处理,如果没匹配上,则被分片到默认分区。
二、使用说明
1.指定分区字段名称。
2.类全名:io.mycat.route.function.PartitionDirectBySubString
rule.xml 配置如下:
<tableRule name="sharding-by-substring">
<rule>
<columns>user_id</columns>
<algorithm>sharding-by-substring</algorithm>
</rule>
</tableRule>
<function name="sharding-by-substring" class="io.mycat.route.function.PartitionDirectBySubString">
<property name="startIndex">0</property><!-- zero-based -->
<property name="size">2</property>
<property name="partitionCount">8</property> #物理分区个数
<property name="defaultPartition">0</property> #默认分区
</function>
配置说明:
上面columns 标识将要分片的表字段,algorithm 分片函数 ,此方法为直接根据字符子串(必须是数字)计算分区号(由应用传递参数,显式指定分区号)。
例如id=05-100000002
在此配置中代表根据id中从startIndex=0,开始,截取siz=2位数字即05,05就是获取的分区,如果没传默认分配到defaultPartition