rule.xml中定义了对表进行拆分所涉及到的规则。我们可以对表使用不同的分片算法,或对表使用相同的算法但不同的参数。该文件中主要有tableRule和function 两个标签。
1. tableRule标签
该标签定义表规则。在rule.xml中定义表规则,例如:
<tableRule name="rule1"> <rule> <columns>id</columns> <algorithm>func1</algorithm> </rule> </tableRule>
其中,name属性为表规则指定唯一名字。内嵌的rule标签指定拆分的物理表的列名及使用的路由算法。columns标签指定拆分的列名字。algorithm标签通过function标签的name属性,连接表规则和具体路由算法。当然,多个表规则可以连接到
同一个路由算法。
rule.xml定义的表规则与schema.xml中table标签的rule属性相对应,逻辑表通过该规则进行分片。
2.function标签
该标签定义tableRule标签定义表规则的所用的算法,例如:
<function name="hash-int" class="io.mycat.route.function.PartitionByFileMap"> <property name="mapFile">partition-hash-int.txt</property> </function>
其中,name指定算法的名字,这与tableRule标签中name属性值相对应。class指定路由算法的具体类名字。property为具体算法需要用到的一些属性。