用来配置水平切分,以及水平切分规则
name:取名要唯一,最好能通过名字进行描述。
columns:是分片列,必须是表中存在的列,mycat根据这个列计算,确定当前数据要存放在哪个分片,每一个要分片的表都要定义一个分片列,分片列的选择关系到日后的查询性能和查询逻辑
algorithm:指定表的分片算法,取<function>的name属性
function的name同样要在整个配置文件中是唯一的,并具有一定象征意义的
class属性是实现分片算法的java类的全名,也就是路径
count代表分片节点数的总和,这里的意思是将表分成四份
分片算法:
简单取模
哈希取模是对分片列进行哈希后取模
分片枚举是根据某项枚举值进行分片(比如异地生活,根据不同地区id把数据分别存储在不同的片上,使用mycat进行数据路由)
字符串范围取模分片:比如根据很长的字符串的前几位来分片
简单取模、哈希无法认为决定数据分片,枚举分片可以:
mapFile指定文件名,创建到config目录下
type:
0.整数型
非0.字符串
defaultNode:
>=0.启用默认节点
<0.不启用默认节点
有时候要截取分片列特定长度字符作为分片依据,如订单号后五位、姓名前缀: