- 实现方式:根据字符串的子串(必须是数字)计算分区号(由调用方传递参数,显示指定分区号),例如,id=05-12232323,其中 id 是从 startIndex = 0,size=2,即截取的子串是 05 ,05 就是获取的分区,如果大于分区数,则分配到 defaultPartition 分区中
- 优点:可以在运行阶段,由应用自主决定路由到那个分片
- 缺点:需要应用实现分片规则
-
配置示例:
<tableRule name="rule1">
<rule>
<columns>id</columns>
<algorithm>func1</algorithm>
</rule>
</tableRule>
<function name="func1" class="io.mycat.route.function.PartitionDirectBySubString">
<property name="startIndex">0</property>
<property name="size">2</property>
<property name="partitionCount">8</property>
<property name="defaultPartition">5</property>
</function>
-
相关属性:
- startIndex:截取子串的开始位置
- size:截取长度
- partitionCount:分区数量
- defaultPartition:默认分区号