- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Mycat跨分片Join指南
Mycat跨分片Join指南前言Mycat目前版本支持跨分片的join,主要实现的方式有四种。全局表ER分片HBT(参考MyCAT人工智能解决跨分片SQL.docx)ShareJoinShareJoin在开发版中支持,前面三种方式支持ShareJoin ShareJoin是一个简单的跨分片Join,基于HBT的方式实现。目前支持2个表的join,原理就是解析SQL语句,拆分成单表的SQL语句执行,然后把各个节点的数据汇集。支持任意配置的A,B表如:A,B的dataNode相同table name=A dataNode=dn1,dn2,dn3 rule=auto-sharding-long /table name=B dataNode=dn1,dn2,dn3 rule=auto-sharding-long /A,B的dataNode不同table name=A dataNode=dn1,dn2 rule=auto-sharding-long /table name=B dataNode=dn1,dn2,dn3 rule=auto-sharding-long /或table name=A dataNode=dn1 rule=auto-sharding-long /table name=B dataNode= dn2,dn3 rule=auto-sharding-long /相关类图JoinParser: SQL语句的解析TableFilter:存解析后的各个子表ShareJoin:执行拆分的语句管理控制,和字段,记录的管理ShareDBJoinHandler:第一个表执行后获取数据的handlerShareRowOutPutDataHandler:最后一个表执行后获取数据的handlerEnginerCtx:执行引擎SQLJob:SQL语句执行任务SQLJobHandler:SQL语句执行后获取数据的handlerBatchSQLJob:批量执行任务控制AllJobFinishedListener:所有任务完成侦听器测试默认mycat的环境测试:/*!mycat:catlet=demo.catlets.ShareJoin */ select a.*,b.id, as tit from customer a,company b on pany_id=b.id;/*!mycat:catlet=demo.catlets.ShareJoin */ select a.*,b.id, as name from orders a join customer b where a.customer_id=b.id;/*!mycat:catlet=demo.catlets.ShareJoin */ select a.*,b.* from orders a join customer b where a.customer_id=b.id;/*!mycat:catlet=demo.catlets.ShareJoin */ select a.id,a.user_id,date,a.fee,a.days,b.id as nnid, b.title as tit from travelrecord a join hotnews b on b.id=a.days order by a.id ;升级未来支持多表的跨分片Join小表放人缓存或广播方式全局表一个真实的业务系统中,往往存在大量的类似字典表的表格,它们与业务表之间可能有关系,这种关系,可以理解为“标签”,而不应理解为通常的“主从关系”,这些表基本上很少变动,可以根据主键ID进行缓存,下面这张图说明了一个典型的“标签关系”图:在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性:变动不频繁数据量总体变化不大数据规模不大,很少有超过数十万条记录。鉴于此,MyCAT定义了一种特殊的表,称之为“全局表”,全局表具有以下特性:全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性全局表的查询操作,只从一个节点获取全局表可以跟任何一个表进行JOIN操作将字典表或者符合字典表特性的一些表定义为全局表,则从另外一个方面,很好的解决了数据JOIN的难题。通过全局表+基于E-R关系的分片策略,MyCAT可以满足80%以上的企业应用开发。配置全局表配置比较简单,不用写Rule规则,如下配置即可:table name=company primaryKey=ID type=global dataNode=dn1,dn2,dn3 /需要注意的是,全局表每个分片节点上都要有运行创建表的DDL语句。ER分片MyCAT借鉴了Ne
原创力文档


文档评论(0)