一种分布式数据库多表关联查询的方法及系统技术方案

技术编号:29789698 阅读:18 留言:0更新日期:2021-08-24 18:08
本发明专利技术提供一种分布式数据库多表关联查询的方法及系统,涉及数据库软件系统开发技术领域,分布式数据库接收并解析业务应用程序发送的SQL语句;根据解析结果判断SQL语句是否为关联查询且关联的多表分片规则不相同;若判断为是,则将SQL语句拆分为多个单表查询语句;根据各单表查询SQL语句分别做路由计算并发送到对应的数据库分片上执行,得到各自的查询结果;根据多表的查询结果进行数据比对及汇总;将汇总结果返回分布式数据库并反馈到业务应用程序。本发明专利技术解决了分布式数据库系统中两张不同分片规则的表关联查询问题,使业务系统在使用分布式数据库系统时,可以不用再改写SQL语句,更符合以往的开发习惯,减少了业务开发难度。

【技术实现步骤摘要】
一种分布式数据库多表关联查询的方法及系统
本专利技术涉及数据库软件系统开发
,尤其是涉及一种分布式数据库多表关联查询的方法及系统。
技术介绍
当前的分布式数据库系统大都采用分片(sharding)的模式来实现数据的分布式存储。当两张表A和B分别采用了不同的分片规则时,其数据是无关联的散乱分布在各个分片上。如果有基于这两张表的关联(join)查询SQL语句,则该SQL通常无法直接发送到各个分片上执行(每个分片上存储的表A数据和表B数据不一定有关联关系,一个分片上的表A可能和另一个分片的上表B是关联关系),需要重新改写为非关联的语句来执行。这个问题造成业务系统在使用分布式数据库系统时,需要投入大量的工作量去进行SQL语句改造,导致工作进度延长、工作量投入加大。
技术实现思路
针对上述问题,本专利技术提供了一种分布式数据库多表关联查询的方法及系统,解决分布式数据库系统中两张不同分片规则的表关联查询问题,使业务系统在使用分布式数据库系统时,可以不用再改写SQL语句,更符合以往的开发习惯,减少业务开发难度。为实现上述目的,本专利技术提供了一种分布式数据库多表关联查询的方法,包括:分布式数据库代理节点接收并解析业务应用程序发送的SQL语句;根据解析结果依次判断SQL语句是否为关联查询、关联的多表分片规则是否相同;若是关联查询且多表分片规则不相同,则将所述SQL语句拆分为多个单表查询语句;根据各所述单表查询SQL语句分别做路由计算,并发送到对应的数据库分片上执行,得到各自的查询结果;根据多表的所述查询结果进行数据比对及汇总;将汇总结果返回所述分布式数据库代理节点,由所述分布式数据库代理节点做最终汇总并反馈到业务应用程序。作为本专利技术的进一步改进,若SQL语句是简单查询,则无需判断关联的多表分片规则是否相同,直接对SQL语句做路由计算,并将SQL语句发送到对应的数据库分片上执行,将执行后的结果集汇总返回给业务应用程序。作为本专利技术的进一步改进,若SQL语句是关联查询,则进一步判断关联的多表分片规则是否相同,若关联的多表分片规则相同,对SQL语句做路由计算,并将SQL语句发送到对应的数据库分片上执行,将执行后的结果集汇总返回给业务应用程序。作为本专利技术的进一步改进,在将所述SQL语句拆分为多个单表查询语句时,应记录所述SQL语句的关联字段信息。作为本专利技术的进一步改进,根据多表的所述查询结果,按照所述关联字段进行数据比对及汇总。作为本专利技术的进一步改进,对所述汇总结果按照原始SQL语句的查询要求进行数据处理和再次汇总,将再次汇总的结果返回所述分布式数据库代理节点。本专利技术还提供了一种分布式数据库多表关联查询的系统,包括:业务应用模块、分布式数据库代理节点、数据库存储节点和复杂查询代理节点;所述业务应用模块,用于:发送SQL语句到分布式数据库代理节点;所述分布式数据库代理节点,用于:接收并解析业务应用程序发送的SQL语句;依次判断SQL语句是否为关联查询、关联的多表分片规则是否相同;对简单查询或关联查询但多张表的分片规则相同的SQL语句做路由计算,并发送到对应的数据库分片上执行;汇总查询结果并反馈到业务应用程序;所述数据库存储节点,用于:分布式存储数据,供数据查询和提取查询结果;所述复杂查询代理节点,用于:若是关联查询且多表分片规则不相同,则将所述SQL语句拆分为多个单表查询语句;根据各所述单表查询SQL语句分别做路由计算,并发送到对应的数据库分片上执行;根据多表的所述查询结果进行数据比对及汇总;将汇总结果返回所述分布式数据库代理节点。作为本专利技术的进一步改进,所述分布式数据库代理节点,还用于:分布式数据库代理节点与业务应用模块之间协议的解析和封装。作为本专利技术的进一步改进,对所述汇总结果按照原始SQL语句的查询要求进行数据处理和再次汇总,将再次汇总的结果返回所述分布式数据库代理节点。作为本专利技术的进一步改进,在将所述SQL语句拆分为多个单表查询语句时,应记录所述SQL语句的关联字段信息;根据多表的所述查询结果,按照所述关联字段进行数据比对及汇总。与现有技术相比,本专利技术的有益效果为:本专利技术通过对SQL语句的关联查询判断及关联表的分片规则是否相同的判断,对关联查询且关联表的分片规则不同的SQL语句,专门设置复杂查询流程,解决了分布式数据库系统中两张不同分片规则的表关联查询问题,使业务系统在使用分布式数据库系统时,可以不用再改写SQL语句,更符合以往的开发习惯,减少了业务开发难度。附图说明图1为本专利技术一种实施例公开的分布式数据库多表关联查询的方法流程图;图2为本专利技术一种实施例公开的分布式数据库多表关联查询的系统示意图;图3为本专利技术一种实施例公开的分布式数据库多表关联查询的详细流程示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面结合附图对本专利技术做进一步的详细描述:如图1、3所示,本专利技术提供的一种分布式数据库多表关联查询的方法,包括:S1、分布式数据库代理节点接收并解析业务应用程序发送的SQL语句;S2、根据解析结果依次判断SQL语句是否为关联查询、关联的多表分片规则是否相同;S3、若是关联查询且多表分片规则不相同,则将SQL语句拆分为多个单表查询语句;其中,若SQL语句是简单查询,则无需判断关联的多表分片规则是否相同,直接对SQL语句做路由计算,并将SQL语句发送到对应的数据库分片上执行,将执行后的结果集汇总返回给业务应用程序。若SQL语句是关联查询,则进一步判断关联的多表分片规则是否相同,若关联的多表分片规则相同,对SQL语句做路由计算,并将SQL语句发送到对应的数据库分片上执行,将执行后的结果集汇总返回给业务应用程序。本专利技术中,在将SQL语句拆分为多个单表查询语句时,应记录SQL语句的关联字段信息。S4、根据各单表查询SQL语句分别做路由计算,并发送到对应的数据库分片上执行,得到各自的查询结果;S5、根据多表的查询结果进行数据比对及汇总;其中,根据多表的查询结果,按照关联字段进行数据比对及汇总。S6、将汇总结果返回分布式数据库代理节点,由分布式数据库代理节点做最终汇总并反馈到业务应用程序。其中,对汇总结果按照原始SQL语句的查询要求进行数据处理和再次汇总,将再次汇总的结果返回分布式数据库代理节点。如图2所示,本专利技术还提供了一种分布式数据库多表关联查本文档来自技高网...

【技术保护点】
1.一种分布式数据库多表关联查询的方法,其特征在于,包括:/n分布式数据库代理节点接收并解析业务应用程序发送的SQL语句;/n根据解析结果依次判断SQL语句是否为关联查询、关联的多表分片规则是否相同;/n若是关联查询且多表分片规则不相同,则将所述SQL语句拆分为多个单表查询语句;/n根据各所述单表查询SQL语句分别做路由计算,并发送到对应的数据库分片上执行,得到各自的查询结果;/n根据多表的所述查询结果进行数据比对及汇总;/n将汇总结果返回所述分布式数据库代理节点,由所述分布式数据库代理节点做最终汇总并反馈到业务应用程序。/n

【技术特征摘要】
1.一种分布式数据库多表关联查询的方法,其特征在于,包括:
分布式数据库代理节点接收并解析业务应用程序发送的SQL语句;
根据解析结果依次判断SQL语句是否为关联查询、关联的多表分片规则是否相同;
若是关联查询且多表分片规则不相同,则将所述SQL语句拆分为多个单表查询语句;
根据各所述单表查询SQL语句分别做路由计算,并发送到对应的数据库分片上执行,得到各自的查询结果;
根据多表的所述查询结果进行数据比对及汇总;
将汇总结果返回所述分布式数据库代理节点,由所述分布式数据库代理节点做最终汇总并反馈到业务应用程序。


2.根据权利要求1所述的方法,其特征在于:若SQL语句是简单查询,则无需判断关联的多表分片规则是否相同,直接对SQL语句做路由计算,并将SQL语句发送到对应的数据库分片上执行,将执行后的结果集汇总返回给业务应用程序。


3.根据权利要求1所述的方法,其特征在于:若SQL语句是关联查询,则进一步判断关联的多表分片规则是否相同,若关联的多表分片规则相同,对SQL语句做路由计算,并将SQL语句发送到对应的数据库分片上执行,将执行后的结果集汇总返回给业务应用程序。


4.根据权利要求1所述的方法,其特征在于:在将所述SQL语句拆分为多个单表查询语句时,应记录所述SQL语句的关联字段信息。


5.根据权利要求1所述的方法,其特征在于:根据多表的所述查询结果,按照所述关联字段进行数据比对及汇总。


6.根据权利要求1所述的方法,其特征在于:对所述汇总结果按照原始SQL语句的查询要求进行数据处理和再次汇总,将再次汇总的结果返回所述分布式数据库...

【专利技术属性】
技术研发人员:陆明
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:北京;11

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

1