CN110457347B - Mpp环境下数据库查询方法、装置、服务器及存储介质 - Google Patents
Mpp环境下数据库查询方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110457347B CN110457347B CN201910706376.7A CN201910706376A CN110457347B CN 110457347 B CN110457347 B CN 110457347B CN 201910706376 A CN201910706376 A CN 201910706376A CN 110457347 B CN110457347 B CN 110457347B
- Authority
- CN
- China
- Prior art keywords
- data set
- item
- temporary
- query result
- items
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种MPP环境下数据库查询方法、装置、服务器及存储介质,包括:根据接收到的SQL语句,确定目标节点的左边数据集和右边数据集,收集所有节点的左边数据集中与哈希半连接操作相关的数据,作为新的左边数据集,并在新的左边数据集中加入临时项,将新的左边数据集发送至除目标节点之外的其他节点,获取目标节点的输出项,将目标节点的输出项作为目标节点的初始子查询结果中的输出项,将新的左边数据集的临时项中,与输出项对应的值作为初始子查询结果的临时项的值,并接收其他节点发送的初始子查询结果,根据所有节点的初始子查询结果中输出项的值及各初始子查询结果中的临时项的值,确定最终查询结果,提高了数据库查询效率。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种大规模并行处理(MassivelyParallel Processing,MPP)环境下数据库查询方法、装置、服务器及存储介质。
背景技术
在MPP环境下,非共享数据库集群中的每个节点都有独立磁盘存储系统和内存系统。节点间数据通过网络相互连接,彼此协调计算。简单来说,MPP是将任务并行地分散到多个节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的执行结果。在MPP环境下,数据库表以合适的分布列进行数据分布,存储在各节点上。当用户进行数据库查询时,在查询过程中,需要数据库表进行连接等操作,若操作涉及到非分布列,则各节点在进行计算时,还需要非本节点数据才能完成,此时需要对数据进行动态重分布。
目前,数据动态重分布的方式有两种:1、分发(DISTRIBUTE)重分布方式:参与连接的左边数据集与右边数据集的数据按照重分布项进行重分布;2、收集(GATHER)重分布方式:将所有节点的一个数据集的数据全部收集到某个节点,相当于拉成全量复制表,另一个表维持不变。对于MPP环境下的哈希半连接,使用DISTRIBUTE重分布方式需要将参与连接的左边数据集和右边数据集都进行分发;若使用GATHER重分布方式,则只能对右边数据集数据进行收集,因为对左边数据集数据进行收集会导致连接结果不正确(因为同一行左边数据集数据可能在多个节点上都连接成功返回结果,导致最终返回多行,不符合半连接要求)。
但是,在数据库查询过程中,采用上述两种方式进行动态重分布时,当参与半连接的左边数据集数据量小而右边数据集数据量很大时,由于以上两种方法都需要在各个节点之间传输右边数据集数据,导致两种方式的数据库查询效率均较低。
发明内容
本发明提供一种MPP环境下数据库查询方法、装置、服务器及存储介质,以解决目前的MPP环境下数据库查询方法效率低的技术问题。
第一方面,本发明实施例提供一种MPP环境下数据库查询方法,包括:
根据接收到的SQL语句,确定目标节点的左边数据集和右边数据集;其中,所述SQL语句包括哈希半连接操作,所述左边数据集包括至少一个数据项;
收集所有节点的左边数据集中与所述哈希半连接操作相关的数据,作为新的左边数据集,并在所述新的左边数据集中加入临时项;其中,所述新的左边数据集包括至少一个数据项,所述临时项的值用于标识所述新的左边数据集的所述至少一个数据项中不同位置的数据;
将所述新的左边数据集发送至除所述目标节点之外的其他节点;
根据所述新的左边数据集以及所述右边数据集,获取所述目标节点的输出项,将所述目标节点的输出项作为所述目标节点的初始子查询结果中的输出项,将所述新的左边数据集的临时项中,与所述输出项对应的值作为所述初始子查询结果的临时项的值,并接收所述其他节点发送的初始子查询结果;
根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果。
第二方面,本发明实施例提供一种MPP环境下数据库查询装置,包括:
第一确定模块,用于根据接收到的SQL语句,确定目标节点的左边数据集和右边数据集;其中,所述SQL语句包括哈希半连接操作,所述左边数据集包括至少一个数据项;
收集模块,用于收集所有节点的左边数据集中与所述哈希半连接操作相关的数据,作为新的左边数据集,并在所述新的左边数据集中加入临时项;其中,所述新的左边数据集包括至少一个数据项,所述临时项的值用于标识所述新的左边数据集的所述至少一个数据项中不同位置的数据;
发送模块,用于将所述新的左边数据集发送至除所述目标节点之外的其他节点;
获取模块,用于根据所述新的左边数据集以及所述右边数据集,获取所述目标节点的输出项,将所述目标节点的输出项作为所述目标节点的初始子查询结果中的输出项,将所述新的左边数据集的临时项中,与所述输出项对应的值作为所述初始子查询结果的临时项的值;
接收模块,用于接收所述其他节点发送的初始子查询结果;
第二确定模块,用于根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果。
第三方面,本发明实施例还提供了一种服务器,所述服务器包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面提供的MPP环境下数据库查询方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面提供的MPP环境下数据库查询方法。
本实施例提供一种MPP环境下数据库查询方法、装置、服务器及存储介质,该方法包括:根据接收到的SQL语句,确定目标节点的左边数据集和右边数据集,其中,SQL语句包括哈希半连接操作,左边数据集包括至少一个数据项,收集所有节点的左边数据集中与哈希半连接操作相关的数据,作为新的左边数据集,并在新的左边数据集中加入临时项,其中,新的左边数据集包括至少一个数据项,临时项的值用于标识新的左边数据集的至少一个数据项中不同位置的数据,将新的左边数据集发送至除目标节点之外的其他节点,根据新的左边数据集以及右边数据集,获取目标节点的输出项,将目标节点的输出项作为目标节点的初始子查询结果中的输出项,将新的左边数据集的临时项中,与输出项对应的值作为初始子查询结果的临时项的值,并接收其他节点发送的初始子查询结果,根据所有节点的初始子查询结果中输出项的值及各初始子查询结果中的临时项的值,确定最终查询结果。通过收集所有节点的左边数据集中与哈希半连接操作相关的数据,再添加临时项,将形成的新的左边数据集分发给各节点,再接收各节点根据该新的左边数据集进行半连接的初始子查询结果,根据初始子查询结果确定最终查询结果,实现了在数据库查询过程中,不需要在各个节点间传输右边数据集数据,在右边数据集数据很大而左边数据集数据较小时,可以提高数据库查询效率。
附图说明
图1为本发明提供的MPP环境下数据库查询方法应用的系统架构图;
图2为本发明提供的MPP环境下数据库查询方法实施例的流程示意图;
图3为本发明提供的MPP环境下数据库查询方法对应的执行计划树的示意图;
图4为一种具体的执行计划树的示意图;
图5为本发明提供的MPP环境下数据库查询装置实施例的结构示意图;
图6为MPP环境下数据库查询装置中第二确定模块的一种实现方式的结构示意图;
图7为本发明提供的服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1为本发明提供的MPP环境下数据库查询方法应用的系统架构图。如图1所示,MPP环境中包括多个节点11,每个节点11均包括两个数据集,数据集1和数据集2。某个节点接收到了结构化查询语言(Structured Query Language,SQL)语句进行数据库查询,本实施例中为了便于描述,将该接收到SQL语句的节点称为目标节点。本实施例中的SQL语句为指示进行哈希半连接的语句,即,在根据该SQL语句进行数据库查询的过程中,需要针对各节点上的数据集1和数据集2进行哈希半连接操作。目标节点首先根据该SQL语句,确定数据集1和数据集2中哪个数据集为左边数据集,哪个数据集为右边数据集。假设数据集1为左边数据集,数据集2为右边数据集。在哈希半连接过程中,所有节点中的数据集1和数据集2的数据需要进行动态重分布。按照目前的DISTRIBUTE重分布方式,需要在各个节点间传递其他节点的数据集1和数据集2;按照目前的GATHER重分布方式,其他节点需要将各自节点的右边数据集,即数据集2的数据发送给目标节点,目标节点收集其他节点的右边数据集的数据。在上述过程中,当数据集1中的数据量小而数据集2中的数据量很大时,在各个站点间传输数据集2的数据会导致数据库查询效率较低。在本实施例提供的MPP环境下数据库查询方法可以在节点的左边数据集数据量小而右边数据集数据量很大时,不需要在各个节点间传输右边数据集数据,因此,可以提高数据库查询效率。
图2为本发明提供的MPP环境下数据库查询方法实施例的流程示意图。本实施例适用于用户进行数据库查询的场景。本实施例可以由MPP环境下数据库查询装置来执行,该MPP环境下数据库查询装置可以由软件和/或硬件的方式实现,该MPP环境下数据库查询装置可以集成于目标节点的服务器中。如图2所示,本实施例提供的MPP环境下数据库查询方法包括如下步骤:
步骤201:根据接收到的SQL语句,确定目标节点的左边数据集和右边数据集。
其中,SQL语句包括哈希半连接操作。左边数据集包括至少一个数据项。
具体地,当MPP环境下数据库查询装置或者目标节点的服务器接收到SQL语句时,根据该SQL语句确定目标节点的左边数据集和右边数据集。该SQL语句可以是用户发送的,也可以是其他计算机设备发送的。
本实施例中的SQL语句可以是包括哈希半连接操作的语句。例如:
SELECT L1.C1 FROM L1 WHERE L1.C1 IN(SELECT R1.D1 FROM R1);
SELECT L1.C2 FROM L1 WHERE EXISTS(SELECT R1.D1 FROM R1WHERE L1.C1+1>R1.D1);
在上述SQL语句中,操作符IN、EXISTS表示在查询过程中需要进行哈希半连接。
假设目标节点的左边数据集的名称为L1,右边数据集的的名称为R1。示例性地,可以以表的形式表征数据集L1和数据集R1。例如,数据集L1和数据集R1的具体实现如下所示:
L1
C1 | C2 | C3 | C4 |
1 | 54 | 45 | 6 |
2 | 32 | 5 | 9 |
R1
D1 | D2 | D3 |
1 | 4 | 3 |
2 | 9 | 8 |
3 | 6 | 9 |
21 | 15 | 6 |
22 | 16 | 78 |
23 | 19 | 32 |
数据集L1中的C1、C2、C3及C4可以称为数据集L1的数据项,数据集R1中的D1、D2及D3可以称为数据集R1的数据项。示例性地,上述例子中的数据项以列的形式表征。本实施例中的左边数据集中包括至少一个数据项。
上述SELECT L1.C1 FROM L1 WHERE L1.C1 IN(SELECT R1.D1 FROM R1)语句的意思为从数据集R1的D1数据项中,查找与数据集L1的C1数据项中的值相同的值,并在找到相同的值时,返回数据集L1的C1数据项中对应的值。
基于SQL语句的语义,数据库查询装置或者目标节点的服务器将数据集L1确定为左边数据集,数据集R1确定为右边数据集。MPP环境下,除目标节点之外的其他节点上存储的数据集的名称与目标节点上的数据集的名称相同或者具有某种映射关系,例如,其他节点的两个数据集的名称分别为L1和R1,或者,其他节点的两个数据集的名称分别为L2、L3、L4、……和R2、R3、R4、……。目标节点可以在确定出左边数据集和右边数据集之后,通知其他节点哪个数据集为左边数据集,哪个数据集为右边数据集。
步骤202:收集所有节点的左边数据集中与哈希半连接操作相关的数据,作为新的左边数据集,并在新的左边数据集中加入临时项。
其中,新的左边数据集包括至少一个数据项,临时项的值用于标识新的左边数据集的至少一个数据项中不同位置的数据。
具体地,本实施例提供的数据库查询方法中,为了避免查询过程的数据动态重分布过程中需要传递右边数据集的数据,在步骤202中,目标节点的服务器或者数据库查询装置收集所有节点的左边数据集与哈希半连接操作相关的数据,作为新的左边数据集,并在新的左边数据集中加入临时项。
SQL语句中还规定了左边数据集中与哈希半连接操作相关的数据。示例性地,SELECT L1.C1 FROM L1 WHERE L1.C1 IN(SELECT R1.D1 FROM R1)中,指示的左边数据集中与哈希半连接操作相关的数据为C1数据项中的数据。SELECT L1.C2 FROM L1 WHEREEXISTS(SELECT R1.D1 FROM R1 WHERE L1.C1+1>R1.D1)中,指示的左边数据集中与哈希半连接操作相关的数据为C2数据项及C1数据项中的数据。
举例来说,假设本实施例涉及的MPP环境中有两个节点,目标节点的两个数据集的数据如步骤201中的例子所示。节点2的两个数据集的数据如下所示:
L1
C1 | C2 | C3 | C4 |
11 | 34 | 55 | 61 |
22 | 32 | 15 | 39 |
R1
D1 | D2 | D3 |
1 | 24 | 31 |
2 | 19 | 81 |
3 | 46 | 95 |
11 | 25 | 62 |
12 | 66 | 48 |
13 | 29 | 72 |
在步骤202中,目标节点的服务器或者MPP环境下数据库查询装置收集所有节点的左边数据集中与哈希半连接操作相关的数据,作为新的左边数据集。之后,在该新的左边数据集中加入临时项,以标识新的左边数据集中的至少一个数据项中不同位置的数据。
一种实现方式中,新的左边数据集中的数据项以及临时项均以列的形式表示,临时项的值为新的左边数据集的数据项中各个值的行号。基于步骤201中目标节点和步骤202中节点2的例子,以及,假设SQL语句为SELECT L1.C1FROM L1 WHERE L1.C1 IN(SELECTR1.D1 FROM R1),新的左边数据集的一种实现方式如下所示:
新的左边数据集的一种实现方式
临时项 | 数据项 |
1 | 1 |
2 | 2 |
3 | 11 |
4 | 22 |
另一种实现方式中,新的左边数据集中的数据项以及临时项均以列的形式表示,临时项的值为新的左边数据集的数据项中各个值所在行的标识。更具体地,可以以A、B、C等字母标识该新的左边数据集的数据项的不同数据行。基于步骤201中目标节点和步骤202中节点2的例子,新的左边数据集的另一种实现方式如下所示:
新的左边数据集的另一种实现方式
需要说明的是,在新的左边数据集中,临时项和数据项的前后顺序可以是任意顺序,本实施例对此不做限制。新的左边数据集中数据项中的各值所在的行,可以是以任意顺序进行排列。上述例子中,将目标节点的左边数据集的数据项中的数据排在前,将节点2的左边数据集的数据项中的数据排在后,实际应用时,也可以是按其他方式进行排列,例如,按照各节点的左边数据集中与哈希半连接操作相关的数据交叉排列等方式进行排列。本实施对此不做限制。
步骤203:将新的左边数据集发送至除目标节点之外的其他节点。
具体地,在确定出的新的左边数据集后,目标节点的服务器或者数据库查询装置将该新的左边数据集发送至MPP环境下除自身之外的其他节点。
步骤204:根据新的左边数据集以及右边数据集,获取目标节点的输出项,将目标节点的输出项作为目标节点的初始子查询结果中的输出项,将新的左边数据集的临时项中,与输出项对应的值作为初始子查询结果的临时项的值,并接收其他节点发送的初始子查询结果。
具体地,其他节点在接收到新的左边数据集后,开始进行半连接操作。目标节点也需要根据该新的左边数据集以及右边数据集进行半连接操作。
目标节点的服务器或者数据库查询装置根据新的左边数据集以及右边数据集,获取目标节点的输出项。将目标节点的输出项作为目标节点的初始子查询结果中的输出项,将新的左边数据集的临时项中,与输出项对应的值作为初始子查询结果的临时项的值。SQL语句中还规定了半连接操作的输出项。
各个节点在进行半连接后,形成了各自的初始子查询结果。其他节点将各自的初始子查询结果发送给目标节点的服务器或者发送给数据库查询装置。
继续基于步骤201-步骤203中的例子进行说明。
第一种实现方式中,基于临时项的值为新的左边数据集的数据项的各个值的行号的实现方式,目标节点的初始子查询结果如下所示:
临时项 | 输出项 |
1 | 1 |
2 | 2 |
4 | 22 |
节点2的初始子查询结果如下所示:
临时项 | 输出项 |
1 | 1 |
2 | 2 |
3 | 11 |
第二种实现方式中,基于临时项的值为新的左边数据集的数据项的各个值所在行的标识的实现方式,目标节点的初始子查询结果如下所示:
临时项 | 输出项 |
A | 1 |
B | 2 |
D | 22 |
节点2的初始子查询结果如下所示:
步骤205:根据所有节点的初始子查询结果中输出项的值及各初始子查询结果中的临时项的值,确定最终查询结果。
具体地,目标节点的服务器或者数据库查询装置在确定出本身的初始子查询结果以及在接收到其他节点发送的初始子查询结果后,根据所有节点的初始子查询结果中输出项的值及各初始子查询结果中的临时项的值,确定最终查询结果。
一种具体的实现方式为:目标节点的服务器或者数据库查询装置收集所有节点的初始子查询结果中输出项的值,作为初始查询结果中输出项的值,收集所有节点的初始子查询结果中临时项对应的值,作为初始查询结果中临时项对应的值;根据初始查询结果中临时项的值进行去重,形成中间查询结果;将中间查询结果中的临时项去除,形成最终查询结果。
在该实现方式中,目标节点的服务器或者数据库查询装置根据多个初始子查询结果生成初始查询结果,初始查询结果的输出项的值为各个初始子查询结果中输出项的值,初始查询结果的临时项的值为其输出项的值在各个初始子查询结果中临时项对应的值。
基于步骤204中各个节点的初始子查询结果的第一种实现方式,对应的初始查询结果的第一种实现方式为:
基于步骤204中各个节点的初始子查询结果的第二种实现方式,对应的初始查询结果的第二种实现方式为:
临时项 | 输出项 |
A | 1 |
B | 2 |
D | 22 |
A | 1 |
B | 2 |
C | 11 |
上述两个初始查询结果的临时项有相同的值,需要根据临时项的值进行去重,形成中间查询结果。去重的过程具体可以是:如果初始查询结果的临时项中有多个相同值,则只保留多个相同值中的任一个值及对应的输出项的值。
对应于初始查询结果的第一种实现,中间查询结果的第一种实现方式为:
临时项 | 输出项 |
1 | 1 |
2 | 2 |
4 | 22 |
3 | 11 |
对应于初始查询结果的第二种实现,中间查询结果的第二种实现方式为:
临时项 | 输出项 |
A | 1 |
B | 2 |
D | 22 |
C | 11 |
之后,将中间查询结果中的临时项去除,形成最终查询结果,基于上述例子,最终查询结果为:
1 |
2 |
22 |
11 |
目标节点的服务器或者数据库查询装置在确定出最终查询结果后,向发送SQL语句的计算机设备或者用户返回该最终查询结果。
MPP环境下,目标节点的服务器或者数据库查询装置在接收到SQL语句后,经过词法语法解析,将SQL语句的执行过程转换为一棵逻辑计划树,再由逻辑计划树转换为物理计划树。再根据需要执行的操作和代价估算,在物理计划树中插入DISTRIBUTE、GATHER等通信操作符得到最终的执行计划树。本发明实施例是对在物理计划树中插入通信操作符阶段进行优化实现的。
图3为本发明提供的MPP环境下数据库查询方法对应的执行计划树的示意图。如图3所示,在该计划树中,第9行及第8行对应于步骤201,第7行及第6行对应于步骤202,第5行对应于步骤203,第4行对应于步骤204中“根据新的左边数据集以及右边数据集,获取目标节点的输出项,将目标节点的输出项作为目标节点的初始子查询结果中的输出项,将新的左边数据集的临时项中,与输出项对应的值作为初始子查询结果的临时项的值”的操作,第3行对应于步骤204中“接收其他节点发送的初始子查询结果”的操作,第2行及第1行对应于步骤205。
图4为一种具体的执行计划树的示意图。基于步骤201中目标节点的实现方式以及步骤202中节点2的实现方式,目标节点的执行计划树如左图所示,节点2的执行计划树如右图所示。
本实施例提供的MPP环境下数据库查询方法在查询过程中,不需要在各个节点间传输右边数据集数据,在右边数据集数据很大而左边数据集数据较小时,可以提高数据库查询效率。
本实施例提供的MPP环境下数据库查询方法,包括:根据接收到的SQL语句,确定目标节点的左边数据集和右边数据集,其中,SQL语句包括哈希半连接操作,左边数据集包括至少一个数据项,收集所有节点的左边数据集中与哈希半连接操作相关的数据,作为新的左边数据集,并在新的左边数据集中加入临时项,其中,新的左边数据集包括至少一个数据项,临时项的值用于标识新的左边数据集的至少一个数据项中不同位置的数据,将新的左边数据集发送至除目标节点之外的其他节点,根据新的左边数据集以及右边数据集,获取目标节点的输出项,将目标节点的输出项作为目标节点的初始子查询结果中的输出项,将新的左边数据集的临时项中,与输出项对应的值作为初始子查询结果的临时项的值,并接收其他节点发送的初始子查询结果,根据所有节点的初始子查询结果中输出项的值及各初始子查询结果中的临时项的值,确定最终查询结果。通过收集所有节点的左边数据集中与哈希半连接操作相关的数据,再添加临时项,将形成的新的左边数据集分发给各节点,再接收各节点根据该新的左边数据集进行半连接的初始子查询结果,根据初始子查询结果确定最终查询结果,实现了在数据库查询过程中,不需要在各个节点间传输右边数据集数据,在右边数据集数据很大而左边数据集数据较小时,可以提高数据库查询效率。
图5为本发明提供的MPP环境下数据库查询装置实施例的结构示意图。如图5所示,本实施例提供的MPP环境下数据库查询装置包括:第一确定模块51、收集模块52、发送模块53、获取模块54、接收模块55以及第二确定模块56。
第一确定模块51,用于根据接收到的SQL语句,确定目标节点的左边数据集和右边数据集。
其中,SQL语句包括哈希半连接操作,左边数据集包括至少一个数据项。
收集模块52,用于收集所有节点的左边数据集中与哈希半连接操作相关的数据,作为新的左边数据集,并在新的左边数据集中加入临时项。
其中,新的左边数据集包括至少一个数据项,临时项的值用于标识新的左边数据集的至少一个数据项中不同位置的数据。
可选地,新的左边数据集中的数据项以及临时项均以列的形式表示,临时项的值为新的左边数据集的数据项中各个值的行号。
发送模块53,用于将新的左边数据集发送至除目标节点之外的其他节点。
获取模块54,用于根据新的左边数据集以及右边数据集,获取目标节点的输出项,将目标节点的输出项作为目标节点的初始子查询结果中的输出项,将新的左边数据集的临时项中,与输出项对应的值作为初始子查询结果的临时项的值。
接收模块55,用于接收其他节点发送的初始子查询结果。
第二确定模块56,用于根据所有节点的初始子查询结果中输出项的值及各初始子查询结果中的临时项的值,确定最终查询结果。
图6为MPP环境下数据库查询装置中第二确定模块的一种实现方式的结构示意图。如图6所示。一种具体的实现方式中,第二确定模块56包括:收集子模块561、去重子模块562以及删除子模块563。
收集子模块561,用于收集所有节点的初始子查询结果中输出项的值,作为初始查询结果中输出项的值,收集所有节点的初始子查询结果中临时项对应的值,作为初始查询结果中临时项对应的值。
去重子模块562,用于根据初始查询结果中临时项的值进行去重,形成中间查询结果。
可选地,去重子模块562具体用于:如果初始查询结果的临时项中有多个相同值,则只保留多个相同值中的任一个值及对应的输出项的值。
删除子模块563,用于将中间查询结果中的临时项去除,形成最终查询结果。
本发明实施例所提供的MPP环境下数据库查询装置可执行本发明任意实施例所提供的MPP环境下数据库查询方法,具备执行方法相应的功能模块和有益效果。
图7为本发明提供的服务器的结构示意图。如图7所示,该服务器包括处理器70和存储器71。该服务器中处理器70的数量可以是一个或多个,图7中以一个处理器70为例;该服务器的处理器70和存储器71可以通过总线或其他方式连接,图7中以通过总线连接为例。
存储器71作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的MPP环境下数据库查询方法对应的程序指令以及模块(例如,MPP环境下数据库查询装置中的第一确定模块51、收集模块52、发送模块53、获取模块54、接收模块55以及第二确定模块56)。处理器70通过运行存储在存储器71中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的MPP环境下数据库查询方法。
存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器71可进一步包括相对于处理器70远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实施例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种MPP环境下数据库查询方法,该方法包括:
根据接收到的SQL语句,确定目标节点的左边数据集和右边数据集;其中,所述SQL语句包括哈希半连接操作,所述左边数据集包括至少一个数据项;
收集所有节点的左边数据集中与所述哈希半连接操作相关的数据,作为新的左边数据集,并在所述新的左边数据集中加入临时项;其中,所述新的左边数据集包括至少一个数据项,所述临时项的值用于标识所述新的左边数据集的所述至少一个数据项中不同位置的数据;
将所述新的左边数据集发送至除所述目标节点之外的其他节点;
根据所述新的左边数据集以及所述右边数据集,获取所述目标节点的输出项,将所述目标节点的输出项作为所述目标节点的初始子查询结果中的输出项,将所述新的左边数据集的临时项中,与所述输出项对应的值作为所述初始子查询结果的临时项的值,并接收所述其他节点发送的初始子查询结果;
根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的MPP环境下数据库查询方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述MPP环境下数据库查询装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种大规模并行处理MPP环境下数据库查询方法,其特征在于,包括:
根据接收到的结构化查询语言SQL语句,确定目标节点的左边数据集和右边数据集;其中,所述SQL语句包括哈希半连接操作,所述左边数据集包括至少一个数据项;
收集所有节点的左边数据集中与所述哈希半连接操作相关的数据,作为新的左边数据集,并在所述新的左边数据集中加入临时项;其中,所述新的左边数据集包括至少一个数据项,所述临时项的值用于标识所述新的左边数据集的所述至少一个数据项中不同位置的数据;
将所述新的左边数据集发送至除所述目标节点之外的其他节点;
根据所述新的左边数据集以及所述右边数据集,获取所述目标节点的输出项,将所述目标节点的输出项作为所述目标节点的初始子查询结果中的输出项,将所述新的左边数据集的临时项中,与所述输出项对应的值作为所述初始子查询结果的临时项的值,并接收所述其他节点发送的初始子查询结果;
根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果;
所述根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果,包括:
收集所有节点的初始子查询结果中输出项的值,作为初始查询结果中输出项的值,收集所有节点的初始子查询结果中临时项对应的值,作为初始查询结果中临时项对应的值;
根据所述初始查询结果中临时项的值进行去重,形成中间查询结果;
将所述中间查询结果中的临时项去除,形成所述最终查询结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述初始查询结果中临时项的值进行去重,形成中间查询结果,包括:
如果所述初始查询结果的临时项中有多个相同值,则只保留所述多个相同值中的任一个值及对应的输出项的值。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述新的左边数据集中的数据项以及所述临时项均以列的形式表示,所述临时项的值为所述新的左边数据集的数据项中各个值的行号。
4.一种大规模并行处理MPP环境下数据库查询装置,其特征在于,包括:
第一确定模块,用于根据接收到的结构化查询语言SQL语句,确定目标节点的左边数据集和右边数据集;其中,所述SQL语句包括哈希半连接操作,所述左边数据集包括至少一个数据项;
收集模块,用于收集所有节点的左边数据集中与所述哈希半连接操作相关的数据,作为新的左边数据集,并在所述新的左边数据集中加入临时项;其中,所述新的左边数据集包括至少一个数据项,所述临时项的值用于标识所述新的左边数据集的所述至少一个数据项中不同位置的数据;
发送模块,用于将所述新的左边数据集发送至除所述目标节点之外的其他节点;
获取模块,用于根据所述新的左边数据集以及所述右边数据集,获取所述目标节点的输出项,将所述目标节点的输出项作为所述目标节点的初始子查询结果中的输出项,将所述新的左边数据集的临时项中,与所述输出项对应的值作为所述初始子查询结果的临时项的值;
接收模块,用于接收所述其他节点发送的初始子查询结果;
第二确定模块,用于根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果;
所述第二确定模块包括:
收集子模块,用于收集所有节点的初始子查询结果中输出项的值,作为初始查询结果中输出项的值,收集所有节点的初始子查询结果中临时项对应的值,作为初始查询结果中临时项对应的值;
去重子模块,用于根据所述初始查询结果中临时项的值进行去重,形成中间查询结果;
删除子模块,用于将所述中间查询结果中的临时项去除,形成所述最终查询结果。
5.根据权利要求4所述的装置,其特征在于,所述去重子模块具体用于:
如果所述初始查询结果的临时项中有多个相同值,则只保留所述多个相同值中的任一个值及对应的输出项的值。
6.根据权利要求4-5任一项所述的装置,其特征在于,所述新的左边数据集中的数据项以及所述临时项均以列的形式表示,所述临时项的值为所述新的左边数据集的数据项中各个值的行号。
7.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的MPP环境下数据库查询方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一所述的MPP环境下数据库查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910706376.7A CN110457347B (zh) | 2019-08-01 | 2019-08-01 | Mpp环境下数据库查询方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910706376.7A CN110457347B (zh) | 2019-08-01 | 2019-08-01 | Mpp环境下数据库查询方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110457347A CN110457347A (zh) | 2019-11-15 |
CN110457347B true CN110457347B (zh) | 2022-03-08 |
Family
ID=68484454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910706376.7A Active CN110457347B (zh) | 2019-08-01 | 2019-08-01 | Mpp环境下数据库查询方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110457347B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9471632B2 (en) * | 2013-10-18 | 2016-10-18 | International Business Machines Corporation | Query optimization considering virtual machine mirroring costs |
CN107612840B (zh) * | 2017-09-26 | 2020-10-30 | 东软集团股份有限公司 | 一种四层负载均衡设备的数据处理方法及装置 |
CN107864156B (zh) * | 2017-12-18 | 2020-06-23 | 东软集团股份有限公司 | Syn攻击防御方法和装置、存储介质 |
-
2019
- 2019-08-01 CN CN201910706376.7A patent/CN110457347B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110457347A (zh) | 2019-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11436224B2 (en) | Parallel processing database system with a shared metadata store | |
US9576026B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using self directed data streams | |
JP6338817B2 (ja) | データベースミドルウェアを用いたデータ管理システム及びその方法 | |
CN107451208B (zh) | 一种数据搜索方法与装置 | |
CN104408159A (zh) | 一种数据关联、加载、查询方法及装置 | |
CN101916280A (zh) | 并行计算系统及按查询内容进行负载均衡的方法 | |
CN106815258B (zh) | 一种数据存储方法和协调节点 | |
CN103927331A (zh) | 数据查询方法、装置及系统 | |
US9984081B2 (en) | Workload aware data placement for join-based query processing in a cluster | |
CN103823846A (zh) | 一种基于图论的大数据存储及查询方法 | |
CN104504154A (zh) | 一种数据聚合查询的方法及装置 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN103678550A (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
CN113836163A (zh) | 数据的关联查询方法、装置、设备及存储介质 | |
CN105701128B (zh) | 一种查询语句的优化方法和装置 | |
CN110175202B (zh) | 用于数据库的表的外连接的方法和系统 | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN101916281A (zh) | 并行计算系统及去重计数方法 | |
CN103377236B (zh) | 一种用于分布式数据库的连接查询方法及系统 | |
CN105302827A (zh) | 一种事件的搜索方法和设备 | |
CN110457347B (zh) | Mpp环境下数据库查询方法、装置、服务器及存储介质 | |
US11625399B2 (en) | Methods and devices for dynamic filter pushdown for massive parallel processing databases on cloud | |
CN116775712A (zh) | 联表查询方法、装置、电子设备、分布式系统和存储介质 | |
CN104636384B (zh) | 一种处理文档的方法及装置 | |
JP2011216029A (ja) | 分散メモリデータベースシステム、データベースサーバ、データ処理方法およびそのプログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |