- 实现方式:切分规则根据文件(partition-hash-int.txt)配置的可能的枚举来进行分片,此种分片规则理解为枚举分区,会比较适合于取值固定的场合,比如说省份(固定值)
- 优点:适用于按照省份或者区县来拆分数据类业务
- 缺点:其他非枚举情况不适合
-
配置示例:
<tableRule name="sharding-by-intfile">
<rule>
<columns>province_id</columns>
<algorithm>enum-int</algorithm>
</rule>
</tableRule>
<function name="enum-int" class="io.mycat.route.function.PartitionByFileMap">
<property name="mapFile">partition-enum-int.txt</property>
<property name="type">0</property>
<property name="defaultNode">0</property>
</function>
-
相关属性:
- mapFile:切分规则配置文件,该配置文件和 rule.xml 文件在同一目录
- type:0表示Integer,非零表示String,默认值 0
- defaultNode:默认节点,小于0表示不设置默认节点,大于等于0表示设置默认节点(节点序号从 0 开始)
-
partition-enum-int.txt 示例:
1=0
2=1
DEFAULT_NODE=0
注意:如果碰到不识别的枚举值,就让它路由到默认节点,如果不配置默认节点(defaultNode值小于0表示不配置默认节点),碰到不识别的枚举值就会报错, like this:can't find datanode for sharding column:column_name val:ffffffff