CN113297250A - 一种分布式数据库多表关联查询的方法及系统 - Google Patents

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

Info

Publication number
CN113297250A
CN113297250A CN202110591604.8A CN202110591604A CN113297250A CN 113297250 A CN113297250 A CN 113297250A CN 202110591604 A CN202110591604 A CN 202110591604A CN 113297250 A CN113297250 A CN 113297250A
Authority
CN
China
Prior art keywords
query
sql statement
distributed database
sql
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110591604.8A
Other languages
English (en)
Inventor
陆明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Si Tech Information Technology Co Ltd
Original Assignee
Beijing Si Tech Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Si Tech Information Technology Co Ltd filed Critical Beijing Si Tech Information Technology Co Ltd
Priority to CN202110591604.8A priority Critical patent/CN113297250A/zh
Publication of CN113297250A publication Critical patent/CN113297250A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种分布式数据库多表关联查询的方法及系统
技术领域
本发明涉及数据库软件系统开发技术领域,尤其是涉及一种分布式数据库多表关联查询的方法及系统。
背景技术
当前的分布式数据库系统大都采用分片(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所示,本发明还提供了一种分布式数据库多表关联查询的系统,包括:业务应用模块、分布式数据库代理节点、数据库存储节点和复杂查询代理节点,配置时,服务器应大于或等于3台,CPU采用2C的2GHz,内存8GB,磁盘4GB;
业务应用模块,用于:
发送SQL语句到分布式数据库代理节点;
分布式数据库代理节点,用于:
分布式数据库代理节点与业务应用模块之间协议的解析和封装;
接收并解析业务应用程序发送的SQL语句;
依次判断SQL语句是否为关联查询、关联的多表分片规则是否相同;
对简单查询或关联查询但多张表的分片规则相同的SQL语句做路由计算,并发送到对应的数据库分片上执行;
汇总查询结果并反馈到业务应用程序。
数据库存储节点,用于:
分布式存储数据,供数据查询和提取查询结果。
复杂查询代理节点,用于:
若是关联查询且多表分片规则不相同,则将SQL语句拆分为多个单表查询语句;
根据各单表查询SQL语句分别做路由计算,并发送到对应的数据库分片上执行;
根据多表的查询结果进行数据比对及汇总;
将汇总结果返回分布式数据库代理节点。
本发明中,对汇总结果按照原始SQL语句的查询要求进行数据处理和再次汇总,将再次汇总的结果返回分布式数据库代理节点。
本发明中,在将SQL语句拆分为多个单表查询语句时,应记录SQL语句的关联字段信息;
根据多表的查询结果,按照关联字段进行数据比对及汇总。
本发明的优点:
通过对SQL语句的关联查询判断及关联表的分片规则是否相同的判断,对关联查询且关联表的分片规则不同的SQL语句,专门设置复杂查询流程,解决了分布式数据库系统中两张不同分片规则的表关联查询问题,使业务系统在使用分布式数据库系统时,可以不用再改写SQL语句,更符合以往的开发习惯,减少了业务开发难度。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种分布式数据库多表关联查询的方法,其特征在于,包括:
分布式数据库代理节点接收并解析业务应用程序发送的SQL语句;
根据解析结果依次判断SQL语句是否为关联查询、关联的多表分片规则是否相同;
若是关联查询且多表分片规则不相同,则将所述SQL语句拆分为多个单表查询语句;
根据各所述单表查询SQL语句分别做路由计算,并发送到对应的数据库分片上执行,得到各自的查询结果;
根据多表的所述查询结果进行数据比对及汇总;
将汇总结果返回所述分布式数据库代理节点,由所述分布式数据库代理节点做最终汇总并反馈到业务应用程序。
2.根据权利要求1所述的方法,其特征在于:若SQL语句是简单查询,则无需判断关联的多表分片规则是否相同,直接对SQL语句做路由计算,并将SQL语句发送到对应的数据库分片上执行,将执行后的结果集汇总返回给业务应用程序。
3.根据权利要求1所述的方法,其特征在于:若SQL语句是关联查询,则进一步判断关联的多表分片规则是否相同,若关联的多表分片规则相同,对SQL语句做路由计算,并将SQL语句发送到对应的数据库分片上执行,将执行后的结果集汇总返回给业务应用程序。
4.根据权利要求1所述的方法,其特征在于:在将所述SQL语句拆分为多个单表查询语句时,应记录所述SQL语句的关联字段信息。
5.根据权利要求1所述的方法,其特征在于:根据多表的所述查询结果,按照所述关联字段进行数据比对及汇总。
6.根据权利要求1所述的方法,其特征在于:对所述汇总结果按照原始SQL语句的查询要求进行数据处理和再次汇总,将再次汇总的结果返回所述分布式数据库代理节点。
7.一种用于实现权利要求1~6任一项所述的方法的系统,其特征在于,包括:业务应用模块、分布式数据库代理节点、数据库存储节点和复杂查询代理节点;
所述业务应用模块,用于:
发送SQL语句到分布式数据库代理节点;
所述分布式数据库代理节点,用于:
接收并解析业务应用程序发送的SQL语句;
依次判断SQL语句是否为关联查询、关联的多表分片规则是否相同;
对简单查询或关联查询但多张表的分片规则相同的SQL语句做路由计算,并发送到对应的数据库分片上执行;
汇总查询结果并反馈到业务应用程序;
所述数据库存储节点,用于:
分布式存储数据,供数据查询和提取查询结果;
所述复杂查询代理节点,用于:
若是关联查询且多表分片规则不相同,则将所述SQL语句拆分为多个单表查询语句;
根据各所述单表查询SQL语句分别做路由计算,并发送到对应的数据库分片上执行;
根据多表的所述查询结果进行数据比对及汇总;
将汇总结果返回所述分布式数据库代理节点。
8.根据权利要求7所述的系统,其特征在于,所述分布式数据库代理节点,还用于:分布式数据库代理节点与业务应用模块之间协议的解析和封装。
9.根据权利要求7所述的系统,其特征在于:对所述汇总结果按照原始SQL语句的查询要求进行数据处理和再次汇总,将再次汇总的结果返回所述分布式数据库代理节点。
10.根据权利要求7所述的系统,其特征在于:在将所述SQL语句拆分为多个单表查询语句时,应记录所述SQL语句的关联字段信息;
根据多表的所述查询结果,按照所述关联字段进行数据比对及汇总。
CN202110591604.8A 2021-05-28 2021-05-28 一种分布式数据库多表关联查询的方法及系统 Pending CN113297250A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110591604.8A CN113297250A (zh) 2021-05-28 2021-05-28 一种分布式数据库多表关联查询的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110591604.8A CN113297250A (zh) 2021-05-28 2021-05-28 一种分布式数据库多表关联查询的方法及系统

Publications (1)

Publication Number Publication Date
CN113297250A true CN113297250A (zh) 2021-08-24

Family

ID=77325838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110591604.8A Pending CN113297250A (zh) 2021-05-28 2021-05-28 一种分布式数据库多表关联查询的方法及系统

Country Status (1)

Country Link
CN (1) CN113297250A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114860764A (zh) * 2022-05-26 2022-08-05 上海爱可生信息技术股份有限公司 分布式数据库查询的优化方法、系统及电子设备
CN114925073A (zh) * 2022-06-14 2022-08-19 九有技术(深圳)有限公司 支持灵活动态分片的分布式数据库架构及其实现方法
WO2023151543A1 (zh) * 2022-02-09 2023-08-17 杭州未名信科科技有限公司 基于结构化查询语言sql的查询方法和系统
CN116821235A (zh) * 2023-03-19 2023-09-29 广州睿本信息科技有限公司 一种分布式数据库的分库分表路由策略的查询重写方法
CN117131078A (zh) * 2023-10-20 2023-11-28 天津南大通用数据技术股份有限公司 一种基于跨分布模式的关联查询优化方法
CN117435594A (zh) * 2023-12-18 2024-01-23 天津南大通用数据技术股份有限公司 一种分布式数据库分布键的优选方法
CN117931898B (zh) * 2024-03-25 2024-06-07 成都同步新创科技股份有限公司 一种基于大模型的多维数据库统计分析方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104036007A (zh) * 2014-06-23 2014-09-10 北京京东尚科信息技术有限公司 一种分布式数据库查询方法及装置
CN105404638A (zh) * 2015-09-28 2016-03-16 高新兴科技集团股份有限公司 一种解决分布式跨库分片表关联查询的方法
CN105930407A (zh) * 2016-04-18 2016-09-07 北京思特奇信息技术股份有限公司 一种分布式数据库跨库关联查询方法及系统
CN111427963A (zh) * 2020-04-15 2020-07-17 赞同科技股份有限公司 分布式数据库的数据访问方法及系统
CN112363994A (zh) * 2020-10-27 2021-02-12 杭州大搜车汽车服务有限公司 数据库的处理方法、装置、电子装置和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104036007A (zh) * 2014-06-23 2014-09-10 北京京东尚科信息技术有限公司 一种分布式数据库查询方法及装置
CN105404638A (zh) * 2015-09-28 2016-03-16 高新兴科技集团股份有限公司 一种解决分布式跨库分片表关联查询的方法
CN105930407A (zh) * 2016-04-18 2016-09-07 北京思特奇信息技术股份有限公司 一种分布式数据库跨库关联查询方法及系统
CN111427963A (zh) * 2020-04-15 2020-07-17 赞同科技股份有限公司 分布式数据库的数据访问方法及系统
CN112363994A (zh) * 2020-10-27 2021-02-12 杭州大搜车汽车服务有限公司 数据库的处理方法、装置、电子装置和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
腾讯云开发者社区: "分布式 | DBLE 关联查询下压优化", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1816849》, 23 April 2021 (2021-04-23), pages 1 - 4 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023151543A1 (zh) * 2022-02-09 2023-08-17 杭州未名信科科技有限公司 基于结构化查询语言sql的查询方法和系统
CN114860764A (zh) * 2022-05-26 2022-08-05 上海爱可生信息技术股份有限公司 分布式数据库查询的优化方法、系统及电子设备
CN114925073A (zh) * 2022-06-14 2022-08-19 九有技术(深圳)有限公司 支持灵活动态分片的分布式数据库架构及其实现方法
CN114925073B (zh) * 2022-06-14 2024-04-16 深圳九有数据库有限公司 支持灵活动态分片的分布式数据库系统及其实现方法
CN116821235A (zh) * 2023-03-19 2023-09-29 广州睿本信息科技有限公司 一种分布式数据库的分库分表路由策略的查询重写方法
CN116821235B (zh) * 2023-03-19 2023-12-22 广州睿本信息科技有限公司 一种分布式数据库的分库分表路由策略的查询重写方法
CN117131078A (zh) * 2023-10-20 2023-11-28 天津南大通用数据技术股份有限公司 一种基于跨分布模式的关联查询优化方法
CN117131078B (zh) * 2023-10-20 2024-02-06 天津南大通用数据技术股份有限公司 一种基于跨分布模式的关联查询优化方法
CN117435594A (zh) * 2023-12-18 2024-01-23 天津南大通用数据技术股份有限公司 一种分布式数据库分布键的优选方法
CN117435594B (zh) * 2023-12-18 2024-04-16 天津南大通用数据技术股份有限公司 一种分布式数据库分布键的优选方法
CN117931898B (zh) * 2024-03-25 2024-06-07 成都同步新创科技股份有限公司 一种基于大模型的多维数据库统计分析方法

Similar Documents

Publication Publication Date Title
CN113297250A (zh) 一种分布式数据库多表关联查询的方法及系统
WO2020233367A1 (zh) 区块链数据存储和查询方法、装置、设备及存储介质
US10452691B2 (en) Method and apparatus for generating search results using inverted index
US7822710B1 (en) System and method for data collection
US11775501B2 (en) Trace and span sampling and analysis for instrumented software
CN110019218B (zh) 数据存储与查询方法及设备
US8965894B2 (en) Automated web page classification
WO2016165525A1 (zh) 在跨分区数据库中查询数据的方法及跨分区查询装置
WO2018036549A1 (zh) 分布式数据库查询方法、装置及管理系统
US11030196B2 (en) Method and apparatus for processing join query
CN111581234B (zh) Rac多节点数据库查询方法、装置及系统
US20130173543A1 (en) Materialized query table journaling in a computer database system
CN106294695A (zh) 一种面向实时大数据搜索引擎的实现方法
TWI549009B (zh) 資料庫管理方法、資料庫管理系統,以及資料庫樹狀結構
US10901811B2 (en) Creating alerts associated with a data storage system based on natural language requests
CA3149710A1 (en) Data collecting method, device, computer equipment and storage medium
US10776368B1 (en) Deriving cardinality values from approximate quantile summaries
CN112434003A (zh) 一种sql优化方法、装置、计算机设备及存储介质
CN115905630A (zh) 一种图数据库查询方法、装置、设备及存储介质
KR20230096107A (ko) 빅 메타데이터 관리를 위한 열 기반 기법들
CN114218211A (zh) 数据处理系统、方法、计算机设备以及可读存储介质
US20170124090A1 (en) Method of discovering and exploring feature knowledge
CN112612832A (zh) 节点分析方法、装置、设备及存储介质
JP2006134191A (ja) 文書検索方法およびそのシステム
CN115658680A (zh) 数据存储方法、数据查询方法和相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination