[发明专利]一种分布式数据库多表关联查询的方法及系统在审
申请号: | 202110591604.8 | 申请日: | 2021-05-28 |
公开(公告)号: | CN113297250A | 公开(公告)日: | 2021-08-24 |
发明(设计)人: | 陆明 | 申请(专利权)人: | 北京思特奇信息技术股份有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/245;G06F16/27 |
代理公司: | 北京汇信合知识产权代理有限公司 11335 | 代理人: | 张焕响 |
地址: | 100086 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 数据库 关联 查询 方法 系统 | ||
本发明提供一种分布式数据库多表关联查询的方法及系统,涉及数据库软件系统开发技术领域,分布式数据库接收并解析业务应用程序发送的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语句的查询要求进行数据处理和再次汇总,将再次汇总的结果返回所述分布式数据库代理节点。
本发明还提供了一种分布式数据库多表关联查询的系统,包括:业务应用模块、分布式数据库代理节点、数据库存储节点和复杂查询代理节点;
所述业务应用模块,用于:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京思特奇信息技术股份有限公司,未经北京思特奇信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110591604.8/2.html,转载请声明来源钻瓜专利网。