一种异构平台下分页并行查询方法及系统与流程

文档序号:29215108发布日期:2022-03-12 10:59阅读:160来源:国知局
一种异构平台下分页并行查询方法及系统与流程

1.本发明涉及跨库查询技术领域,尤其涉及一种异构平台下分页并行查询方法及系统。


背景技术:

2.目前,具有自主知识产权的arm架构体系持续变热。考虑到arm架构的稳定性,为降低系统风险,灰度发布、白名单、混合部署等方法被广泛应用。混合异构系统除了数据规模导致的自身查询性能、系统高可用问题,数据分散在不同体系架构下的复杂查询性能也是一个不可回避的问题。
3.现有技术中,针对关系型数据库大数据量级的查询,一般采用分库分表的方法,根据sharding key,首先确认记录所在库、表编号,然后在指定表中进行查询。对于无法确认sharding key,或者在查询中涉及多个sharding key的情况,常见的并行查询解决方法主要有两种:
4.一种是将查询委托给数据库中间件,借助中间件智能分析sql,解析出那些sql可以直接下发,那些sql需要进行优化改造,优化成什么样,以及路由到哪些实例节点上执行,充分发挥数据库实例的全部能力,减少网络之间的数据传输量,最终对不同实例处理后的少量结果进行聚合计算返回给应用调用方。
5.另一种是由应用直接分析该查询涉及的数据库、表,并行针对不同的数据库建立多个连接,在每个连接上针对多个数据表,或多次查询或连接查询。采用分页方法,异步获取全部结果后对结果加工返回。
6.以上两种并行查询解决方案有自身的局限性。一方面,不论采用数据库中间件还是应用直接查询访问,都是针对同构数据库,多个数据库表之间体系结构需完全一致;另一方面两种并行查询方式都是将查询压力集中在单点完成,容易导致负载均衡问题,不利于系统的高可用性。


技术实现要素:

7.为解决现有技术的不足,本发明提出一种异构平台下分页并行查询方法及系统,可高效解决数据分散在不同平台体系下的复杂查询问题。
8.为实现以上目的,本发明所采用的技术方案包括:
9.一种异构平台下分页并行查询方法,其特征在于,包括以下步骤:
10.步骤s1、对sql查询语句进行词法分析,生成编程语言层面的排序对象;
11.步骤s2、对sql查询绑定所需的参数对象进行分析;
12.步骤s3、遍历任务列表,修改分页信息建立查询任务,包括判断当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台的关系;
13.步骤s4、建立应用级别全局统一的线程池,将查询任务导入线程池完成调度,合并排序结果。
14.进一步地,所述步骤s2包括解析参数对象,确定数据库平台、数据库编号、数据库表号。
15.进一步地,所述步骤s2还包括:
16.当sql查询涉及多个切分键时,遍历全部切分键,计算各个切分键所对应的数据库平台以及该数据库平台下的数据库编号、数据库表编号,对数据库平台、数据库编号、数据库表号进行去重保存为任务列表,生成子查询任务;
17.当无法确认sql查询所涉及的切分键时,整合全量数据库平台、数据库编号、数据库表号数据保存为任务列表,生成子查询任务。
18.进一步地,所述步骤s3中,修改分页信息建立查询任务包括将从第start行开始的n行分页信息修改为从第0行开始的start+n行。
19.进一步地,所述步骤s3中,判断当前接收请求的应用ap服务器所属平台与任务所属平台的关系包括:
20.若当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台一致,且应用ap服务器号与任务数据库编号一致,则生成本地查询任务,通过sql访问查询结果;
21.若当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台一致,但应用ap服务器号与任务数据库编号不一致,则生成本数据库平台rpc内呼查询任务,调用本数据库平台内其他ap服务器获取查询结果;
22.若当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台不一致,则生成跨平台rpc查询任务,在异构数据库平台中获取查询结果。
23.进一步地,所述生成跨平台rpc查询任务,在异构数据库平台中获取查询结果包括连接异构数据库平台下的应用ap服务器,对sql访问查询进行跨数据库平台转换。
24.进一步地,所述步骤s4还包括:
25.将任一线程的子查询结果放入队列中;
26.当队列长度大于等于2时,从队列中任取2个子查询结果通过排序对象进行排序归并,将该中间结果重新压入归并结果队列中;
27.依次循环从队列中任取2个子查询结果通过排序对象进行排序归并,压入归并结果队列的过程,直到队列中只剩一个结果,即为分页查询结果。
28.本发明还涉及一种异构平台下分页并行查询系统,其特征在于,包括:
29.排序模块,用于对sql查询语句进行词法分析,生成编程语言层面的排序对象;
30.分析模块,用于对sql查询绑定所需的参数对象进行分析;
31.修改分页模块,用于遍历任务列表,修改分页信息建立查询任务,包括判断当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台的关系;
32.生成结果模块,用于建立应用级别全局统一的线程池,将查询任务导入线程池完成调度,合并排序结果。
33.本发明还涉及一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
34.本发明还涉及一种电子设备,其特征在于,包括处理器和存储器;
35.所述存储器,用于存储操作指令;
36.所述处理器,用于通过调用所诉操作指令,执行上述的方法。
37.本发明还涉及一种计算机程序产品,包括计算机程序和/或指令,其特征在于,该计算机程序和/或指令被处理器执行时实现如上所述方法的步骤。
38.本发明的有益效果为:
39.采用本发明所述异构平台下分页并行查询方法及系统,该技术方案融合本地查询、rpc内呼调用、sql语法映射转换、分页信息分割处理、中间结果丢弃合并等多种技术手段,搭建了完整的异构平台支持分页的并行查询解决方案,在计算机资源得到合理控制的前提下,便于高性能完成跨平台并行查询。
附图说明
40.图1为本发明异构平台下分页并行查询方法流程示意图。
41.图2为本发明异构平台下分页并行查询系统结构示意图。
具体实施方式
42.在本发明中,异构平台是指有不同类型指令集和体系架构计算单元,本文所述异构平台,主要指由不同指令集架构,如arm和x86的软硬件平台混合部署、协同工作,共同形成应用系统对外提供服务。
43.分库分表:关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000w或100g以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。分库分表的核心内容就是数据切分。数据切分就是将数据分散存储到多个数据库的多个数据表中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。
44.切分键:在对数据库分库分表时,选取数据库表记录中的一个或多个字段,通过哈希操作,得到一个特定值,基于该值计算用来确定记录所属的库号和表号。
45.并行查询:是指强行榨取除数据库服务器空闲资源,对一些高负荷大数据量数据进行分页处理。允许将一个sql查询语句划分为多个较小的查询,每个部分的查询并发地运行,然后将各个部分的结果组合起来,提供最终的结果,多用于全表扫描,大表的扫描和连接、创建大的索引、分区索引扫描、大批量插入更新和删除。
46.rpc:rpc即远程过程调用协议(remote procedure call protocol)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。属于应用层协议,不过相比较于http/https协议来说,rpc协议在功能和性能之间更偏重与性能,即rpc框架是一种高性能的网络通信框架。
47.为了更清楚的理解本发明的内容,将结合附图和实施例详细说明。
48.本发明第一方面涉及一种步骤流程如图1所示的异构平台下分页并行查询方法,包括:
49.步骤s1、对sql查询语句进行词法分析,生成编程语言层面的排序对象。
50.示例性的,查询语句为select*from a where xx order by field1 desc,field2 asc;实现排序对象时,通过解析排序部分得到
51.field1 desc
52.field2 asc;
53.示例性的,对于排序接口中的o1,o2对象,如java为
54.public int compare(object o1,object o2)
55.遍历上述解析出来的内容,针对每一行执行如下操作:
56.a.通过反射计算o1和o2对象当前field的属性值v1,v2;
57.b.若v1与v2任何一个为空或类型不匹配,继续遍历下一属性;
58.c.若v1与v2相等,继续遍历下一属性;
59.d.当标志为asc时,返回v1-v2;
60.e.当标志为desc时,返回v2-v1。
61.步骤s2、对sql查询绑定所需的参数对象进行分析。
62.可选的,所述步骤s2包括解析参数对象,确定数据库平台、数据库编号、数据库表号。
63.可选的,当sql查询涉及多个切分键时,遍历全部切分键,计算各个切分键所对应的数据库平台以及该数据库平台下的数据库编号、数据库表编号,对数据库平台、数据库编号、数据库表号进行去重保存为任务列表,生成子查询任务;
64.当无法确认sql查询所涉及的切分键时,整合全量数据库平台、数据库编号、数据库表号数据保存为任务列表,生成子查询任务。
65.示例性的,如果查询中包含客户列表,遍历全部客户列表,请求首先路由到客户列表中任意一个客户所对应的应用ap服务器(本实施例后续简称为a服务器),如果查询中不包含客户列表,请求首先随机路由到任意一个应用ap服务器。
66.a服务器收到请求后,根据客户列表解析出每个客户对应的数据库平台、数据库编号、数据库表编号,因为多个客户可能会处于相同的数据库平台、数据库或数据库表中,对数据库平台、数据库编号、数据库表号进行去重保存为任务列表,生成子查询任务;如果请求中不包含客户列表,则整合全量数据库平台、数据库编号、数据库表号数据保存为任务列表,生成子查询任务。
67.所述应用ap服务器优选为x86或arm服务器。
68.步骤s3、遍历任务列表,修改分页信息建立查询任务,包括判断当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台的关系。
69.可选的,修改分页信息建立查询任务包括将从第start行开始的n行分页信息修改为从第0行开始的start+n行。
70.可选的,判断当前接收请求的应用ap服务器所属平台与任务所属平台的关系包括:
71.若当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台一致,且应用ap服务器号与任务数据库编号一致,则生成本地查询任务,通过sql访问查询结果;
72.若当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台一致,但应用ap服务器号与任务数据库编号不一致,则生成本数据库平台rpc内呼查询任务,调用本数据库平台内其他ap服务器获取查询结果;
73.若当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台不一致,则生成跨平台rpc查询任务,在异构数据库平台中获取查询结果。
74.其中,所述生成跨平台rpc查询任务,在异构数据库平台中获取查询结果包括连接
异构数据库平台下的应用ap服务器,对sql访问查询进行跨数据库平台转换。
75.示例性的,若当前接收请求的a服务器所属数据库平台与任务所对应数据库平台一致,且a服务器号与任务数据库编号一致,则生成本地查询任务,通过sql访问查询结果;
76.若当前接收请求的a服务器所属数据库平台与任务所对应数据库平台一致,但a服务器号与任务数据库编号不一致,则生成本数据库平台rpc内呼查询任务,调用本数据库平台内其他ap服务器获取查询结果;
77.若当前接收请求的a服务器所属数据库平台与任务所对应数据库平台不一致,则生成跨平台rpc查询任务,在异构数据库平台中获取查询结果。
78.将所有结果汇总得到最终结果。
79.步骤s4、建立应用级别全局统一的线程池,将查询任务导入线程池完成调度,合并排序结果。
80.示例性的,一个查询任务,会分成一组子查询任务,产生一组子查询结果比如rs1,rs2

rsn。
81.假如原分页的查询范围为a行到b行(a《=b),分为子查询后因为子查询结果的第1行,有可能就是整体查询结果的第a行,但是子查询结果的b+1行不可能是整体查询结果的第b行,所以,每个子查询结果取第1行到第b行。
82.如果收集所有查询结果后再处理,内存中就需要nb行,当系统该类型的查询并发压力较大时内存压力很大。因此,本实施例可选的,采用如下方法进行处理:
83.当有任一线程完成查询任务时,立即将该子查询结果放入队列中;
84.当队列长度大于等于2时,从队列中任取2个子查询结果通过排序对象进行排序归并,因为排序后的b+1行不可能是整体查询结果的第b行,所以,每个子查询结果取第1行到第b行,将该中间结果重新压入归并结果队列中;
85.依次循环从队列中任取2个子查询结果通过排序对象进行排序归并,压入归并结果队列的过程,直到队列中只剩一个结果,将最终结果取a行到b行,即为分页查询结果。
86.采用本发明所述异构平台下分页并行查询方法及系统,该技术方案融合本地查询、rpc内呼调用、sql语法映射转换、分页信息分割处理、中间结果丢弃合并等多种技术手段,搭建了完整的异构平台支持分页的并行查询解决方案,在计算机资源得到合理控制的前提下,便于高性能完成跨平台并行查询。
87.本发明另一方面还涉及一种异构平台下分页并行查询系统,其结构如图2所示,包括:
88.排序模块,用于对sql查询语句进行词法分析,生成编程语言层面的排序对象;
89.分析模块,用于对sql查询绑定所需的参数对象进行分析;
90.修改分页模块,用于遍历任务列表,修改分页信息建立查询任务,包括判断当前接收请求的应用ap服务器所属数据库平台与任务所对应数据库平台的关系;
91.生成结果模块,用于建立应用级别全局统一的线程池,将查询任务导入线程池完成调度,合并排序结果。
92.通过使用该系统,能够执行上述的运算处理方法并实现对应的技术效果。
93.本发明的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执
行时实现上述实施例中的方法的全部步骤。
94.本发明的实施例还提供一种用于执行上述方法的电子设备,作为该方法的实现装置,所述电子设备至少具备有处理器和存储器,特别是该存储器上存储有执行方法所需的数据和相关的计算机程序,例如等,并通过由处理器调用存储器中的数据、程序执行实现方法的全部步骤,并获得对应的技术效果。
95.优选的,该电子设备可以包含有总线架构,总线可以包括任意数量的互联的总线和桥,总线将包括由一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和接收器和发送器之间提供接口。接收器和发送器可以是同一个元件,即收发机,提供用于在传输介质上与各种其他系统通信的单元。处理器负责管理总线和通常的处理,而存储器可以被用于存储处理器在执行操作时所使用的数据。
96.额外的,所述电子设备还可以进一步包括通信模块、输入单元、音频处理器、显示器、电源等部件。其所采用的处理器(或称为控制器、操作控件)可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器接收输入并控制电子设备的各个部件的操作;存储器可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种,可储存上述有关的数据信息,此外还可存储执行有关信息的程序,并且处理器可执行该存储器存储的该程序,以实现信息存储或处理等;输入单元用于向处理器提供输入,例如可以为按键或触摸输入装置;电源用于向电子设备提供电力;显示器用于进行图像和文字等显示对象的显示,例如可为lcd显示器。通信模块即为经由天线发送和接收信号的发送机/接收机。通信模块(发送机/接收机)耦合到处理器,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)还经由音频处理器耦合到扬声器和麦克风,以经由扬声器提供音频输出,并接收来自麦克风的音频输入,从而实现通常的电信功能。音频处理器可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器还耦合到中央处理器,从而使得可以通过麦克风能够在本机上录音,且使得可以通过扬声器来播放本机上存储的声音。
97.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
98.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
99.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特
定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
100.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
101.以上所述仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换等都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1