MyCAT常用分片规则之分片枚举

本文介绍了MyCAT中的分片枚举规则,适用于固定列值场景,如省份、月份。通过定义tableRule、function和mapFile,详细阐述了如何配置和测试分片规则。在实际操作中,未指定type值会导致插入错误,未设置defaultNode则无法处理未知枚举值。此外,MyCAT支持动态加载defaultNode,但中途修改可能导致查询问题。
摘要由CSDN通过智能技术生成

MyCAT支持多种分片规则,下面测试的这种是分片枚举。适用场景,列值的个数是固定的,譬如省份,月份等。

在这里,需定义三个值,规则均是在rule.xml中定义。

1. tableRule

2. function

3. mapFile

首先,定义tableRule,

   <tableRule name="sharding-by-intfile-test">
                <rule>
                        <columns>province</columns>
                        <algorithm>hash-int-test</algorithm>
                </rule>
    </tableRule>

其中,sharding-by-intfile-test是规则名,会在schema.xml中用到。

columns指的是对省份进行分片。

algorithm是算法名,该算法必须在function中定义。

 

其次,定义function,

      <function name="hash-int-test"
                class="org.opencloudb.route.function.PartitionByFileMap">
                <property name="mapFile">partition-hash-int-test.txt</property>
                <property name="type">1</property>
                <property name="defaultNode">0</property>
      </function>

其中,mapFile指的是配置文件名

type默认值为0,0表示Integer,非零表示String。因为我接下来的测试是基于省份分片,所以需type指定为1。

defaultNode 默认节点:小于0表示不设置默认节点,大于等于0表示设置默认节点
默认节点的作用:枚举分片时,如果碰到不识别的枚举值,就让它路由到默认节点。如果不配置默认节点(defaultNode值小于0表示不配置默认节点),碰到不识别的枚举值就会报错,like this:can’t find datanode for sharding column:column_name val:ffffffff

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值