一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据库查询优化方法、装置、设备及计算机可读存储介质与流程

2022-04-16 13:39:03 来源:中国专利 TAG:


1.本发明实施例涉及数据处理技术领域,具体涉及一种数据库查询优化方法、装置设备及计算机可读存储介质。


背景技术:

2.大规模并行处理(massively parallel processing,简称mpp)数据库是一种shared nothing架构的新型数据库集群,每一个节点都拥有自己的cpu、内存和磁盘,也就是每个节点都是一个单独的数据库。节点之间的信息交互是通过节点互联网络实现。在进行数据查询时,mpp数据库将任务并行的分散到多个节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起,得到最终的执行结果。在传统的mpp数据库架构中,数据存储通常是以以下方法之一进行分布:哈希、随机、范围或列表,其中我们最常用到的是通过哈希分布进行数据分布。在哈希分布中,记录的键值哈希至桶,这些桶分配给每个处理节点。哈希分布使得可通过键来直接定位数据,其消耗的系统资源最少。但在查询过程中,需要数据库表进行连接等操作,如果操作涉及到非分布列,则各节点在进行计算时,还需要非本节点数据才能完成。
3.现有技术方案中,做连接操作的两个表,分布列各不相同,则无法实现连接操作方式或者需要进行大量数据的重分布,会影响整个集群的io。


技术实现要素:

4.鉴于上述问题,本发明实施例提供了一种数据库查询优化方法、装置设备及计算机可读存储介质,用于解决现有技术中存在的两个表分布列不相同时,无法实现连接操作的技术问题。
5.根据本发明实施例的一个方面,提供了一种数据库查询优化方法,所述方法包括:
6.接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段;
7.当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据;
8.根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列;
9.当所述关联字段不是所述第一数据表及所述第二数据表分布列时,将所述未关联字段数据分发至除所述第一节点之外的所有节点上,接收除所述第一节点之外的所有节点的反馈信息;
10.根据已关联字段数据及所述反馈信息得到第一查询结果。
11.在一种可选的方式中,所述当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行
连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据之前,还包括:
12.当所述第一数据表的分布列与所述第二数据表的分布列相同时,根据所述关联字段对所述第一数据表及所述第二数据表进行连接,得到第一查询结果。
13.在一种可选的方式中,接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段之前,还包括:
14.将所述第一数据表及所述第二数据表分别切分为多个数据块;
15.将所述多个数据块分别存储在数据库的各个数据节点上。
16.在一种可选的方式中,所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表分布列之后,进一步包括:
17.当所述关联字段不是所述第一数据表的分布列且为所述第二数据表的分布列时,将所述未关联字段数据分发至所述第二数据表对应的数据节点。
18.在一种可选的方式中,所述第一数据表信息中包括第一分布列字段标识,所述第二数据表信息中包括第二分布列标识字段;
19.所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列,包括:
20.根据所述第一分布列字段标识确定所述第一数据表的分布列;
21.根据所述第二分布列字段标识确定所述第二数据表的分布列;
22.确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列。
23.在一种可选的方式中,所述第一节点为大规模并行分析数据库集群中的任意一个数据节点,所述第一数据表及所述第二数据表存储在所述数据节点内。
24.根据本发明实施例的另一方面,提供了一种数据库查询优化装置,包括:
25.数据接收模块,用于接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段;
26.第一确定模块,用于当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据;
27.第二确定模块,用于根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列;
28.查询模块,用于当所述关联字段不是所述第一数据表及所述第二数据表分布列时,将所述未关联字段数据分发至除所述第一节点之外的所有节点上,接收除所述第一节点之外的所有节点的反馈信息;
29.结果模块,用于根据已关联字段数据及所述反馈信息得到第一查询结果。
30.在一种可选的方式中,所述第一数据表信息中包括第一分布列字段标识,所述第二数据表信息中包括第二分布列标识字段;
31.所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列,包括:
32.根据所述第一分布列字段标识确定所述第一数据表的分布列;
33.根据所述第二分布列字段标识确定所述第二数据表的分布列;
34.确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列。
35.根据本发明实施例的另一方面,提供了一种数据库查询优化设备,包括:
36.处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
37.所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述的数据库查询优化方法的操作。
38.根据本发明实施例的又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令在数据库查询优化设备上运行时,使得数据库查询优化设备执行上述的数据库查询优化方法的操作。
39.本发明实施例通过在第一节点中进行第一数据表与第二数据表之间的连接操作,当在第一节点中的第一数据表中存在未能完成关联的未关联字段数据时,将未关联字段数据分发给其他数据节点,进行查询获取未关联字段数据对应的目标数据,能够使得分布列不相同的两个表无需重分布即可进行连接操作,完成查询任务,提高了数据查询效率。
40.上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
41.附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
42.图1示出了本发明实施例提供的数据库查询优化方法的应用系统架构示意图;
43.图2示出了本发明实施例提供的数据库查询优化方法的流程示意图;
44.图3示出了本发明实施例提供的数据库查询优化装置的结构示意图;
45.图4示出了本发明实施例提供的数据库查询优化设备的结构示意图。
具体实施方式
46.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
47.请参阅图1,图1示出了本发明实施例的数据库查询优化方法所应用的应用系统架构图。其中,本发明实施例中,数据库查询优化方法可以应用于大规模并行分析数据库(analytical massively parallel processing databases,mmp数据库)。大规模并行分析数据库是针对分析工作负载进行优化的数据库,用于聚合和处理大型数据集。mpp数据库往往是列式的,因此mpp数据库通常将每一列存储为一个对象,而不是将表中的每一行存储为一个对象(事务数据库的功能)。
48.本发明实施例中,mmp数据库为shared nothing架构的mpp数据库,包括管理节点(cn)和数据节点(datanode,简称dn)。cn管理和监控mpp数据库中各个功能单元和物理资源
的运行情况,通过高速通信网络与各个数据节点datanode进行通信,监控数据节点datanode执行存储数据、接受数据、发送进程状态等功能,确保整个系统的稳定运行。管理节点cn分为主管理节点和备管理节点。通常情况下,只由主管理节点提供分布式集群系统的管理服务。当主管理节点发生故障的情况下,备管理节点会主动升为主管理节点提供集群管理服务。数据节点datanode负责执行管理节点下发的任务,即集群中的奴隶节点。数据节点datanode的操作系统、cpu、内存、磁盘都是独立的,不存在共享。数据节点datanode存储业务数据、执行数据查询任务以及向管理节点返回执行结果。在shared nothing架构的mpp数据库中,每一个节点完全独立,节点之间通过网络连接,本发明实施例中,可以通过光纤专用网络进行节点之间的网络连接。
49.本发明实施例中,将具有相同关联字段的至少两个数据表分别以数据库的形式存储在各个数据节点上。如图1所示,第一数据表至少具有id字段和no字段,第二数据表至少具有no字段和val字段。第一数据表和第二数据表通过no字段关联起来,因此no字段为第一数据表和第二数据表的关联字段,该关联字段也即第一数据表与第二数据表之间的相同字段。将第一数据表和第二数据表分别进行切分后形成多个数据块,存储在mpp数据库的第一节点、第二节点及第三节点上。
50.图2示出了本发明实施例提供的数据库查询优化方法的流程图,该方法由数据库查询优化设备执行。该数据库优化设备可以是计算机设备,应用于上述mmp数据库系统中。如图2所示,该方法包括以下步骤:
51.步骤110:接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段。
52.其中,数据查询请求为在第一节点上的数据查询请求,查询条件可以为查询第一数据表中的第一字段与第二数据表中第二字段的数据对应关系。其中,第一字段为目标查询字段,第一字段不存在于第二数据表中,第二字段不存在于第一数据表中。本发明实施例以图1所示为例,第一字段对应于第一数据表的有id字段,第二字段对应于第二数据表中的val字段。
53.本发明实施例中,在接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段之前,还包括:
54.将第一数据表和第二数据表分别以数据块的形式存储在mpp数据库的各个数据节点上。对于两个具有关联字段的数据表,其数据块位于同一个数据节点中。例如,对于图1中的第一数据表和第二数据表,第一数据表具有id字段和no字段,第二数据表具有no字段和val字段。第一数据表和第二数据表通过no字段关联起来,因此no字段为第一数据表和第二数据表的关联字段。根据关联字段,将第一数据表和第二数据表的各个数据块存储在存储在各个数据节点上,如在第一节点、第二节点及第三节点均存储有第一数据表和第二数据表。将数据表分成数据块进行存储,可以能够满足数据较大的存储,使得各数据节点负载均衡,提高了存储及查询效率。
55.由于第一数据表及第二数据表是以数据库的形式进行存储,因此,在第一节点上根据第一数据表和第二数据表进行数据查询操作时,需要对第一数据表及第二数据表进行连接操作。本发明实施例中,在第一节点接收该数据查询请求,需要至少对两个数据表进行
连接操作。可以是在第一节点根据第一数据表中的第一字段查询对应的第二字段,所述第二字段不存储于第一数据表中且储存于所述第二数据表中。如图1所示,第一数据表具有id字段和no字段,第二数据表具有no字段和val字段,no字段为第一数据表和第二数据表的关联字段。当需要根据id字段数据来获取相应地val字段数据时,由于第一数据表中没有val字段,因此需要对第一数据表及第二数据表进行连接操作。连接操作具体是通过两个数据表中的关联字段将两个数据表进行连接,也即,通过no字段来将第一数据表中的id字段和第二数据表中的val字段连接起来。
56.步骤120:当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据。
57.其中,本发明的一个实施例中,分布列指的是主键。也即,需要确定第一数据表中的主键与第二数据表中的主键是否为相同字段。也即当第一数据表的主键与所述第二数据表的主键不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据。也即,当第一数据表的主键和第二数据表的主键完全不相同时,首先在第一节点内部进行第一数据表和第二数据表的连接,确定在第一节点中第一字段对应的数据和第二字段对应的数据是否可以连接,当可以连接时,将匹配成功的字段数据确定为已关联字段数据,未匹配成功的字段数据确定我未关联字段数据。接图1示例,通过no字段将第一数据表中的id字段的数据与第二数据表中的val字段的数据进行连接时,由于第一节点内部存储的第一数据表中仅存在id1、no1、id4、no4、id7、no7;第一节点内部存储的第二数据表中仅存在no1、val1、no2、val2、no3、val3;由于第一节点内部的第二数据表中没有no4、no7(no4、no7放在其他节点上),故id4、id7关联不到对应的val的字段数据,因此,通过no字段进行连接时,只能通过no1连接到id1和val1。连接关系如下表所示:
58.idnovalid1no1val1id4no4 id7no7 59.此时,第一数据表中的第一字段的id4及id7未关联到对应的val字段的数据。因此,id1为已关联字段数据,id4及id7为未关联字段数据。其中,所述第一节点为大规模并行分析数据库集群中的任意一个数据节点,所述第一数据表及所述第二数据表存储在所述数据节点内。
60.所述当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据之前,还包括:
61.当所述第一数据表的分布列与所述第二数据表的分布列相同时,根据所述关联字段对所述第一数据表及所述第二数据表进行连接,得到第一查询结果。也即:当确定第一数据表的主键与第二数据表中的主键是相同字段时,如关联字段分别为第一数据表与第二数据表中的主键,则可以直接根据关联字段在对应的数据节点中对所述第一数据表及所述第
二数据表进行连接,得到第一查询结果。
62.步骤130:根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列。
63.其中,虽然第一数据表的分布列与所述第二数据表的分布列不同,但关联字段可以是第一数据表的分布列或者也可以是第二数据表的分布列。
64.本发明实施例中,所述第一数据表信息中包括第一分布列字段标识,所述第二数据表信息中包括第二分布列标识字段。故,所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列,包括:
65.根据所述第一分布列字段标识确定所述第一数据表的分布列;
66.根据所述第二分布列字段标识确定所述第二数据表的分布列;
67.确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列。
68.当第一数据表中的第一字段为分布列,则第一分布列字段标识表征第一字段,也即id字段为第一数据表的分布列时,根据第二分布列字段标识确定no字段是否为第二数据表的分布列。当第二分布列字段标识表征no字段时,则确定no字段为第二数据表的分布列,当第二分布列字段标识表征第二字段(也即val字段)时,则no字段不是第二数据表的分布列。
69.步骤140:当所述关联字段不是所述第一数据表及所述第二数据表分布列时,将所述未关联字段数据分发至除所述第一节点之外的所有节点上,接收除所述第一节点之外的所有节点的反馈信息。
70.其中,由于id4及id7为未关联字段数据,因此,当第二数据表中no字段不是第二数据表的分布列时,第一节点则将no4、no7分发至除第一节点外的所有其它节点上,如发送给第二节点及第三节点。上述数据分发后,除第一节点外的其它节点会同时并行在其所存储的第二数据表的数据块内查询所对应的no和val,并将反馈信息返回给第一节点,以此使得id4、id7关联到对应的val字段数据。通过这样的方式,快速得到未关联字段数据所对应的字段数据,提高了查询效率。
71.当所述关联字段不是所述第一数据表的分布列且为所述第二数据表的分布列时,根据第二数据表的分布规则将所述未关联字段数据分发至所述第二数据表对应的数据节点。其中,第二数据表的分布规则为第二数据表的数据块划分及存储规则,根据第二数据表的分布规则可以确定第二数据表中的每一个字段数据所存储在的数据节点。具体地,接图1上例,no字段为第二数据表的分布列,第一节点根据第二数据表的分布规则确定第二数据表的no4字段数据位于第二节点,第二数据表的no7字段数据存储于第三节点。因此,第一节点直接将第一数据表中未关联的no4字段数据分发给第二节点,no7字段数据分发给第三节点,第二节点将no4字段数据对应的val4字段数据,第三节点将no7字段数据对应的val7字段数据返回给第一节点。
72.步骤150:根据已关联字段数据及所述反馈信息得到第一查询结果
73.在得到反馈信息以及已关联字段数据后,将二者进行合并,得到如下表2数据:
74.idnovalid1no1val1id4no4val4
id7no7val7
75.通过上述方式,第一节点完成根据数据查询请求进行数据查询的查询工作,得到第一查询结果。同时,第二节点和第三节点也根据数据查询请求执行上述查询过程,直至将第一数据表中的所有id字段数据(id1-id9)与第二数据表中的val字段(val1-val 9)进行连接,也即上述查询过程也在其它各个数据节点同步进行,直至将第一数据表中所有的第一字段均与第二数据表中的第二字段进行连接,从而完成此次查询任务。
76.idnovalid1no1val1id2no2val2id3no3val3id4no4val4id5no5val5id6no6val6id7no7val7id8no8val8id9no9val9
77.将各个数据节点的查询结果合并,生成最终的查询结果,如上表所示。在得到最终的查询结果后,根据所述最终的查询结果进行数据分析。本发明实施例中,第一数据表和第二数据表可以为用户信息、财务报表等数据表,如,当为财务报表时,第一字段和第二字段分别为财务数据,因此根据最终的查询结果,可以相应地进行财务指标的计算。
78.本发明实施例通过在第一节点中进行第一数据表与第二数据表之间的连接操作,当在第一节点中的第一数据表中存在未能完成关联的未关联字段数据时,将未关联字段数据分发给其他数据节点,进行查询获取未关联字段数据对应的目标数据,能够使得分布列不相同的两个表无需重分布即可进行连接操作,完成查询任务,提高了数据查询效率。
79.本发明实施例通过在第一节点中进行第一数据表与第二数据表之间的连接操作,当在第一节点中的第一数据表中存在未能完成关联的未关联字段数据时,将未关联字段数据分发给其他数据节点,进行查询获取未关联字段数据对应的目标数据,能够使得分布列不相同的两个表无需重分布即可进行连接操作,完成查询任务,提高了数据查询效率。
80.图3示出了本发明实施例提供的数据库查询优化装置的结构示意图。如图3所示,该装置300包括:数据接收模块310、第一确定模块320、第二确定模块330、查询模块340和结果模块350。
81.数据接收模块310,用于接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段;
82.第一确定模块320,用于当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据;
83.第二确定模块330,用于根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列;
84.查询模块340,用于当所述关联字段不是所述第一数据表及所述第二数据表分布列时,将所述未关联字段数据分发至除所述第一节点之外的所有节点上,接收除所述第一节点之外的所有节点的反馈信息;
85.结果模块350,用于根据已关联字段数据及所述反馈信息得到第一查询结果。
86.在一种可选的方式中,所述当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据之前,还包括:
87.当所述第一数据表的分布列与所述第二数据表的分布列相同时,根据所述关联字段对所述第一数据表及所述第二数据表进行连接,得到第一查询结果。
88.在一种可选的方式中,接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段之前,还包括:
89.将所述第一数据表及所述第二数据表分别切分为多个数据块;
90.将所述多个数据块分别存储在数据库的各个数据节点上。
91.在一种可选的方式中,所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表分布列之后,进一步包括:
92.当所述关联字段不是所述第一数据表的分布列且为所述第二数据表的分布列时,将所述未关联字段数据分发至所述第二数据表对应的数据节点。
93.在一种可选的方式中,所述第一数据表信息中包括第一分布列字段标识,所述第二数据表信息中包括第二分布列标识字段;
94.所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列,包括:
95.根据所述第一分布列字段标识确定所述第一数据表的分布列;
96.根据所述第二分布列字段标识确定所述第二数据表的分布列;
97.确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列。
98.在一种可选的方式中,所述第一节点为大规模并行分析数据库集群中的任意一个数据节点,所述第一数据表及所述第二数据表存储在所述数据节点内。
99.本发明实施例的数据库查询优化装置300的具体工作过程与上述数据库查询优化方法的具体方法步骤相同,此处不再赘述。
100.本发明实施例通过在第一节点中进行第一数据表与第二数据表之间的连接操作,当在第一节点中的第一数据表中存在未能完成关联的未关联字段数据时,将未关联字段数据分发给其他数据节点,进行查询获取未关联字段数据对应的目标数据,能够使得分布列不相同的两个表无需重分布即可进行连接操作,完成查询任务,提高了数据查询效率。
101.图4示出了本发明实施例提供的数据库查询优化设备的结构示意图,本发明具体实施例并不对数据库查询优化设备的具体实现做限定。
102.如图4所示,该数据库查询优化设备可以包括:处理器(processor)402、通信接口(communications interface)404、存储器(memory)406、以及通信总线408。
103.其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通
信。通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。处理器402,用于执行程序410,具体可以执行上述用于数据库查询优化方法实施例中的相关步骤。
104.具体地,程序410可以包括程序代码,该程序代码包括计算机可执行指令。
105.处理器402可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。数据库查询优化设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
106.存储器406,用于存放程序410。存储器406可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
107.程序410具体可以被处理器402调用使数据库查询优化设备执行以下操作:
108.接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段;
109.当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据;
110.根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列;
111.当所述关联字段不是所述第一数据表及所述第二数据表分布列时,将所述未关联字段数据分发至除所述第一节点之外的所有节点上,接收除所述第一节点之外的所有节点的反馈信息;
112.根据已关联字段数据及所述反馈信息得到第一查询结果。
113.在一种可选的方式中,所述当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据之前,还包括:
114.当所述第一数据表的分布列与所述第二数据表的分布列相同时,根据所述关联字段对所述第一数据表及所述第二数据表进行连接,得到第一查询结果。
115.在一种可选的方式中,接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段之前,还包括:
116.将所述第一数据表及所述第二数据表分别切分为多个数据块;
117.将所述多个数据块分别存储在数据库的各个数据节点上。
118.在一种可选的方式中,所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表分布列之后,进一步包括:
119.当所述关联字段不是所述第一数据表的分布列且为所述第二数据表的分布列时,将所述未关联字段数据分发至所述第二数据表对应的数据节点。
120.在一种可选的方式中,所述第一数据表信息中包括第一分布列字段标识,所述第二数据表信息中包括第二分布列标识字段;
121.所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为
所述第一数据表及所述第二数据表的分布列,包括:
122.根据所述第一分布列字段标识确定所述第一数据表的分布列;
123.根据所述第二分布列字段标识确定所述第二数据表的分布列;
124.确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列。
125.在一种可选的方式中,所述第一节点为大规模并行分析数据库集群中的任意一个数据节点,所述第一数据表及所述第二数据表存储在所述数据节点内。
126.本发明实施例的数据库查询优化设备的具体工作过程与上述数据库查询优化方法的具体方法步骤相同,此处不再赘述。
127.本发明实施例通过在第一节点中进行第一数据表与第二数据表之间的连接操作,当在第一节点中的第一数据表中存在未能完成关联的未关联字段数据时,将未关联字段数据分发给其他数据节点,进行查询获取未关联字段数据对应的目标数据,能够使得分布列不相同的两个表无需重分布即可进行连接操作,完成查询任务,提高了数据查询效率。
128.本发明实施例提供了一种计算机可读存储介质,所述存储介质存储有至少一可执行指令,该可执行指令在数据库查询优化设备上运行时,使得所述数据库查询优化设备执行上述任意方法实施例中的数据库查询优化方法。
129.可执行指令具体可以用于使得数据库查询优化设备执行以下操作:
130.接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段;
131.当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据;
132.根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列;
133.当所述关联字段不是所述第一数据表及所述第二数据表分布列时,将所述未关联字段数据分发至除所述第一节点之外的所有节点上,接收除所述第一节点之外的所有节点的反馈信息;
134.根据已关联字段数据及所述反馈信息得到第一查询结果。
135.在一种可选的方式中,所述当所述第一数据表的分布列与所述第二数据表的分布列不同时,根据所述查询条件在所述第一数据表所在的第一节点中与所述第二数据表进行连接,确定所述第二数据表中与所述第一数据表关联的已关联字段数据及未关联的未关联字段数据之前,还包括:
136.当所述第一数据表的分布列与所述第二数据表的分布列相同时,根据所述关联字段对所述第一数据表及所述第二数据表进行连接,得到第一查询结果。
137.在一种可选的方式中,接收数据查询请求,所述数据查询请求中包括第一数据表信息、第二数据表信息及查询条件,第一数据表中与第二数据表之间存在关联字段之前,还包括:
138.将所述第一数据表及所述第二数据表分别切分为多个数据块;
139.将所述多个数据块分别存储在数据库的各个数据节点上。
140.在一种可选的方式中,所述根据所述第一数据表信息及所述第二数据表信息,确
定所述关联字段是否为所述第一数据表及所述第二数据表分布列之后,进一步包括:
141.当所述关联字段不是所述第一数据表的分布列且为所述第二数据表的分布列时,将所述未关联字段数据分发至所述第二数据表对应的数据节点。
142.在一种可选的方式中,所述第一数据表信息中包括第一分布列字段标识,所述第二数据表信息中包括第二分布列标识字段;
143.所述根据所述第一数据表信息及所述第二数据表信息,确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列,包括:
144.根据所述第一分布列字段标识确定所述第一数据表的分布列;
145.根据所述第二分布列字段标识确定所述第二数据表的分布列;
146.确定所述关联字段是否为所述第一数据表及所述第二数据表的分布列。
147.在一种可选的方式中,所述第一节点为大规模并行分析数据库集群中的任意一个数据节点,所述第一数据表及所述第二数据表存储在所述数据节点内。
148.本发明实施例的计算机可读存储介质中的可执行指令所执行的具体工作过程与上述数据库查询优化方法的具体方法步骤相同,此处不再赘述。
149.本发明实施例通过在第一节点中进行第一数据表与第二数据表之间的连接操作,当在第一节点中的第一数据表中存在未能完成关联的未关联字段数据时,将未关联字段数据分发给其他数据节点,进行查询获取未关联字段数据对应的目标数据,能够使得分布列不相同的两个表无需重分布即可进行连接操作,完成查询任务,提高了数据查询效率。
150.本发明实施例提供一种数据库查询优化装置,用于执行上述数据库查询优化方法。
151.本发明实施例提供了一种计算机程序,所述计算机程序可被处理器调用使数据库查询优化设备执行上述任意方法实施例中的数据库查询优化方法。
152.本发明实施例提供了一种计算机程序产品,计算机程序产品包括存储在计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令在计算机上运行时,使得所述计算机执行上述任意方法实施例中的数据库查询优化方法。
153.在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
154.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
155.类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
156.本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或
组件组合成一个模块或单元或组件,以及可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
157.应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献