一种解决分布式跨库分片表关联查询的方法技术

技术编号:13025882 阅读:42 留言:0更新日期:2016-03-16 23:04
本发明专利技术公开一种解决分布式跨库分片表关联查询的方法,包括:构建CUSTOMERS分片表与ORDERS分片表之间的关联关系:指定CUSTOMERS分片表的表名、分布的所有节点、分片字段及分片规则;同时指定ORDERS分片表的表名、外键列名及外键所引用的表的列的列名;使CUSTOMERS分片表的入库操作为正常的入库操作,而ORDERS分片表的入库操作需根据所关联的CUSTOMERS分片表数据所在的节点来执行入库操作,其中CUSTOMERS分片表为常规分片表,ORDERS分片表与常规分片表需要关联的分片表。

【技术实现步骤摘要】

本专利技术涉及网络通信
,具体涉及。
技术介绍
1、目前解决分布式跨库分片表关联的方案,是通过数据冗余的方式,将相关联的表数据全部冗余到所有的节点数据库上,以此来解决分布式中跨库分片关联查询的难题。如图1所示:若⑶ST0MERS分片表的数据分布在两台数据库dnl、dn2中,而⑶ST0MERS分片表需要跟ORDERS分片表进行关联查询,那么就将ORDERS分片表的全部数据分别存放到那两台数据库(dnl、dn2)中,此时ORDERS分片表称为全局表,ORDERS分片表在分布式下所有子节点上数据必须一致。通过冗余数据的方式虽然能够解决分布式跨库分片表关联的问题,但是需要牺牲掉很多数据存储空间,并且存在性能问题,举例说明如下: 如果⑶ST0MERS分片表分布到N台机器的数据库并且需要跟Μ个表进行关联,那么这Μ个表必须被配置为全局表,即需要将这Μ个表的所有数据都必须冗余到Ν台机器的对应数据库中,这需要牺牲大量机器磁盘空间;其次,对于这Μ个表在分布式环境下的数据一致管理需要耗费大量精力和时间;再者,若这Μ个表中的某些表的数据量很大,会对子节点数据库的性能造成一定影响,并且整个分布式集群的查询性能也相应变差。
技术实现思路
本专利技术的目的是解决现有技术的缺陷,提供一种不浪费额外数据存储空间,不会对各个子节点的系统性能造成太大影响,同时也保证整个分布式集群能够有较为高效的表关联查询性能的解决分布式跨库分片表关联查询的方法,采用的技术方案如下: ,包括: 构建CUSTOMERS分片表与ORDERS分片表之间的关联关系:指定CUSTOMERS分片表的表名、分布的所有节点、分片字段及分片规则;同时指定ORDERS分片表的表名、外键列名及外键所引用的表的列的列名; 使CUSTOMERS分片表的入库操作为正常的入库操作,而ORDERS分片表的入库操作需根据所关联的CUSTOMERS分片表数据所在的节点来执行入库操作,其中CUSTOMERS分片表为常规分片表,ORDERS分片表与常规分片表需要关联的分片表。通过以上设置,使得本专利技术无需通过数据冗余的方式来实现分布式跨库分片表关联查询,并且在ORDERS分片表所涉及的表数据量越很大的情况下,本专利技术采用的将CUSTOMERS分片表所有关联表数据存储在同一个子节点的方法有助于提高子节点查询效率,从而提高整个分布式集群的查询效率。作为优选,由XML文件配置并表示⑶ST0MERS分片表与ORDERS分片表之间的关联关系Ο通过XML文件来构建分布式数据库分片表与分片表之间的关联关系,一目了然,具体如下: 〈RootTable name = //CUSTOMERS^ shardNode = "dnl, dn2" shardKey = "id〃shardRule=〃hash〃>〈ChildTable name=〃ORDERS〃 foreignKey=〃cid〃 referenceKey=〃id〃>〈/ChildTable〉〈/RootTable〉 其中,RootTable表示CUSTOMERS分片表,name指定CUSTOMERS分片表的表名,shardNode和shardKey指定QJSTOMERS分片表分布的所有节点和分片字段,shardRule指定分片规则为哈希。ChildTable表示ORDERS分片表,name指定ORDERS分片表的表名,foreignKey指定外键列名,referenceKey指定外键引用了哪个表的哪一列的列名。作为优选,ORDERS分片表的入库操作需根据所关联的CUSTOMERS分片表数据所在的节点来执行入库操作具体为:当涉及到ORDERS分片表的入库操作时,首先生成一个查找CUSTOMERS分片表的id的sql语句,并下发到所有的节点执行,当某个节点反馈的结果集有数据,则在该节点上进行ORDERS分片表的入库操作。通过这种方法,当在分布式集群执行分片表与分片表关联查询的时候,分片表的关联操作都被本地化,即可以在每一个子节点数据库中提前完成,从而避免了分布式集群中跨节点数据库的分片表关联,由这种方法合并并返回的数据也是最终准确的。与现有技术相比,本专利技术的有益效果:本专利技术无需通过数据冗余的方式来实现分布式跨库分片表关联查询,无需浪费额外的存储空间,并且在ORDERS分片表所涉及的表数据量越很大的情况下,本专利技术采用的将CUSTOMERS分片表所有关联表数据存储在同一个子节点的方法有助于提高子节点查询效率,从而提高整个分布式集群的查询效率。【附图说明】图1是现有技术解决分布式跨库分片表关联查询的方法的示意图; 图2是本专利技术实施例的逻辑框架图; 图3是本专利技术实施例解决分布式跨库分片表关联查询的方法的示意图。【具体实施方式】下面结合附图和实施例对本专利技术作进一步详细描述。实施例:,包括: 构建CUSTOMERS分片表与ORDERS分片表之间的关联关系:指定CUSTOMERS分片表的表名、分布的所有节点、分片字段及分片规则;同时指定ORDERS分片表的表名、外键列名及外键所引用的表的列的列名; 使CUSTOMERS分片表的入库操作为正常的入库操作,而ORDERS分片表的入库操作需根据所关联的CUSTOMERS分片表数据所在的节点来执行入库操作,其中CUSTOMERS分片表为常规分片表,ORDERS分片表与常规分片表需要关联的分片表。本实施例中,由XML文件配置并表示⑶ST0MERS分片表与ORDERS分片表之间的关耳关关系Ο通过XML文件来构建分布式数据库分片表与分片表之间的关联关系,一目了然,具体如下: 〈RootTable name = //CUSTOMERS^ shardNode = "dnl, dn2" shardKey = "id〃shardRule=〃hash〃><ChildTable name=〃ORDERS〃 foreignKey=〃cid〃 referenceKey=〃id〃>〈/ChildTable〉〈/RootTable〉 其中,RootTable表示CUSTOMERS分片表,name指定CUSTOMERS分片表的表名,shardNode和shardKey指定QJSTOMERS分片表分布的所有节点和分片字段,shardRule指定分片规则为哈希。ChildTable表示ORDERS分片表,name指定ORDERS分片表的表名,foreignKey指定外键列名,referenceKey指定外键引用了哪个表的哪一列的列名。本实施例中,ORDERS分片表的入库操作需根据所关联的CUSTOMERS分片表数据所在的节点来执行入库操作具体为:当涉及到ORDERS分片表的入库操作时,首先生成一个查找CUSTOMERS分片表的id的sql语句,并下发到所有的节点执行,当某个节点反馈的结果集有数据,再进行ORDERS分片表的入库操作。如图2所示,当涉及⑶ST0MERS分片表和ORDERS分片表的入库操作时,入库处理流程为: 通过系统的分片表关联处理模块对入库操作Cl,C2进行路由处理,系统通过XML配置的关联信息识别到CUSTOMERS为常规分片表,根据路由规则,将C1路由到节点dnl,将C本文档来自技高网...

【技术保护点】
一种解决分布式跨库分片表关联查询的方法,其特征在于,包括:构建CUSTOMERS分片表与ORDERS分片表之间的关联关系:指定CUSTOMERS分片表的表名、分布的所有节点、分片字段及分片规则;同时指定ORDERS分片表的表名、外键列名及外键所引用的表的列的列名;使CUSTOMERS分片表的入库操作为正常的入库操作,而ORDERS分片表的入库操作需根据所关联的CUSTOMERS分片表数据所在的节点来执行入库操作,其中CUSTOMERS分片表为常规分片表,ORDERS分片表与常规分片表需要关联的分片表。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈建欣黎建驹冯亮李文杰劳定雄刘双广
申请(专利权)人:高新兴科技集团股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1