Mycat目前版本支持的跨分片join,主要有四种方式实现:
1.全局表:一个真实的业务系统中,往往存在大量字典的表,它们与业务之间的关系可以理解为”标签”
当业务表因为规模进行分片以后,业务表与这些字典表之间的关联就成了比较棘手的问题.
字典表的特性:
-变动不频繁
-数据量总体变化不大
-数据规模不大,很少有超过数十万条记录
全局表的特性:
-全局表的插入,更新操作会实时在所有节点上执行,保持各个分片的数据一致性
-全局表的查询操作,只从一个节点获取
-全局表可以跟任何一个表进行Join操作
通过全局表+基于E-R关系的分片策略,Mycat可以满足80%以上的企业应用开发.
配置:全局表配置比较简单,不用写rule规则
<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />
每个分片节点上都要运行创建表的DDL语句
2.E-R join:基于E-R关系的分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上
配置:以上述例子为例
schema.xml:
<table name=“custom