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=“customer” dataNode=“dn1,dn2” rule=“sharding-by-intfile”>

Mycat的分片Join包括全局表、E-R join等策略,解决业务表与字典表关联难题。E-R join确保子表与父表记录在同一分片,而全局表则用于处理标签关系。此外,Mycat还探索了通过catletT、ShareJoin(开发版)以及Spark/Storm的扩展来处理Join。

3250

被折叠的 条评论
为什么被折叠?



