CN114328595B - 一种数据查询方法、装置、电子设备及存储介质 - Google Patents
一种数据查询方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114328595B CN114328595B CN202111441644.0A CN202111441644A CN114328595B CN 114328595 B CN114328595 B CN 114328595B CN 202111441644 A CN202111441644 A CN 202111441644A CN 114328595 B CN114328595 B CN 114328595B
- Authority
- CN
- China
- Prior art keywords
- execution
- subtrees
- hardware computing
- data query
- fpga
- 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
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000004364 calculation method Methods 0.000 claims description 36
- 238000012216 screening Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据查询方法、装置、电子设备及存储介质,该方法包括:获取待执行的数据查询语句;根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;根据FPGA的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树;根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的FPGA可执行码流;将FPGA可执行码流发送至FPGA。提高了FPGA的数据查询效率。
Description
技术领域
本申请涉及数据库应用技术领域,尤其涉及一种数据查询方法、装置、电子设备及存储介质。
背景技术
目前,数据库在大数据环境下进行数据分析时能够起到重要的作用,对信息化系统的整体性能提升有较大帮助。但是传统数据库在数据查询方面的执行效率不高,而且CPU也优先处理事务性负载,数据库系统整体性能受到数据查询效率较低的阻碍。
为了提高数据查询效率,通常将数据库的查询功能卸载到FPGA板卡上执行,此时需要对用户的查询语句转换成FPGA能够一步步执行处理的硬件语言码流。常用的转换方案是按照栈的处理方式,将用户查询语句转换成相应的FPGA可执行码流。
但是,在通过栈方式将SQL语句转换为FPGA可执行码流时,该FPGA可执行码流中的每个执行步骤都与前序的执行结果存在较强的相关性,导致整个FPGA可执行码流只能以串行的形式执行,降低了FPGA的数据查询效率。
发明内容
本申请提供一种数据查询方法、装置、电子设备及存储介质,以解决现有技术降低了FPGA的数据查询效率等缺陷。
本申请第一个方面提供一种数据查询方法,应用于包括FPGA的数据查询系统,所述方法包括:
获取待执行的数据查询语句;
根据所述数据查询语句的逻辑信息,将所述数据查询语句转换为执行计划树;
以所述执行计划树中的比较运算操作节点为执行子树的根节点,将所述执行计划树拆分为多个所述执行子树;
根据所述FPGA的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,以建立所述硬件计算单元与执行子树之间的对应关系;
根据所述硬件计算单元与执行子树之间的对应关系及各所述执行子树之间的逻辑关系,生成所述数据查询语句对应的FPGA可执行码流;
将所述FPGA可执行码流发送至所述FPGA,以使所述FPGA能够基于各所述硬件计算单元并行地执行各执行子树对应的计算逻辑,得到所述数据查询语句的数据查询结果。
可选的,所述根据所述FPGA的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
根据所述FPGA的硬件计算单元的个数和所有所述执行子树包含的操作节点的总数,确定所述硬件计算单元的平均工作量;
根据所述硬件计算单元的平均工作量和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
可选的,当所述FPGA包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,所述根据所述硬件计算单元的平均工作量和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
根据各所述执行子树包含的操作节点的个数,对所述执行子树进行排序;
将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;
将所述第一目标执行子树分配到所述第一硬件计算单元;
当所述第一目标执行子树包含的操作节点的个数小于所述第一硬件计算单元的平均工作量时;
根据剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树,并将所有所述第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
可选的,所述根据剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树,包括:
计算所述第一目标执行子树包含的操作节点的个数与所述第一硬件计算单元的平均工作量之间的操作节点数量差;
根据所述操作节点数量差和所述各所述剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树。
可选的,还包括:
获取各所述执行子树的操作类型;
根据各所述执行子树的操作类型,对所述执行子树进行分类;
所述根据所述FPGA的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
按照所述操作类型对所述硬件计算单元进行分类,以确定各所述操作类型的硬件计算单元的个数;
针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
可选的,所述操作数据类型可分为int类型、float类型、date类型等不同类型。
可选的,FPGA可执行码流包括指令头、与各所述执行子树对应的非逻辑运算指令组和逻辑指令组;
所述指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各所述硬件计算单元的操作类型;
所述非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;
所述逻辑指令组包括逻辑操作指令。
本申请第二个方面提供一种数据查询装置,应用于包括FPGA的数据查询系统,所述装置包括:
获取模块,用于获取待执行的数据查询语句;
转换模块,用于根据所述数据查询语句的逻辑信息,将所述数据查询语句转换为执行计划树;
拆分模块,用于以所述执行计划树中的比较运算操作节点为执行子树的根节点,将所述执行计划树拆分为多个所述执行子树;
分配模块,用于根据所述FPGA的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,以建立所述硬件计算单元与执行子树之间的对应关系;
生成模块,用于根据所述硬件计算单元与执行子树之间的对应关系及各所述执行子树之间的逻辑关系,生成所述数据查询语句对应的FPGA可执行码流;
查询模块,用于将所述FPGA可执行码流发送至所述FPGA,以使所述FPGA能够基于各所述硬件计算单元并行地执行各执行子树对应的计算逻辑,得到所述数据查询语句的数据查询结果。
可选的,所述分配模块,具体用于:
根据所述FPGA的硬件计算单元的个数和所有所述执行子树包含的操作节点的总数,确定所述硬件计算单元的平均工作量;
根据所述硬件计算单元的平均工作量和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
可选的,当所述FPGA包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,所述分配模块,具体用于:
根据各所述执行子树包含的操作节点的个数,对所述执行子树进行排序;
将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;
将所述第一目标执行子树分配到所述第一硬件计算单元;
当所述第一目标执行子树包含的操作节点的个数小于所述第一硬件计算单元的平均工作量时;
根据剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树,并将所有所述第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
可选的,所述分配模块,具体用于:
计算所述第一目标执行子树包含的操作节点的个数与所述第一硬件计算单元的平均工作量之间的操作节点数量差;
根据所述操作节点数量差和所述各所述剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树。
可选的,所述装置,还包括:
分类模块,用于获取各所述执行子树的操作类型;
根据各所述执行子树的操作类型,对所述执行子树进行分类;
所述分配模块,具体用于:
按照所述操作类型对所述硬件计算单元进行分类,以确定各所述操作类型的硬件计算单元的个数;
针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
可选的,所述操作类型至少分为int类型、float类型和date类型三种。
可选的,FPGA可执行码流包括指令头、与各所述执行子树对应的非逻辑运算指令组和逻辑指令组;
所述指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各所述硬件计算单元的操作类型;
所述非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;
所述逻辑指令组包括逻辑操作指令。
本申请第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请技术方案,具有如下优点:
本申请提供一种数据查询方法、装置、电子设备及存储介质,该方法包括:获取待执行的数据查询语句;根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;根据FPGA的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系;根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的FPGA可执行码流;将FPGA可执行码流发送至FPGA,以使FPGA能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。上述方案提供的方法,通过以比较运算为执行子树划分单位,并将这些执行子树分配到不同的硬件计算单元,硬件计算单元能够独自去执行分配到的执行子树,且硬件计算单元内部能够并行地去执行子树的运算逻辑,提高了FPGA的数据查询效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例基于的数据查询系统的结构示意图;
图2为本申请实施例提供的数据查询方法的流程示意图;
图3为本申请实施例提供的示例性的执行计划树的结构示意图;
图4为本申请实施例提供的示例性的FPGA可执行码流的结构示意图;
图5为本申请实施例提供的示例性的数据查询方法的流程示意图;
图6为本申请实施例提供的数据查询装置的结构示意图;
图7为本申请实施例提供的示例性的数据查询系统的结构示意图;
图8为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
为了提高数据查询效率,通常将数据库的查询功能卸载到FPGA板卡上执行,此时需要对用户的查询语句转换成FPGA能够一步步执行处理的硬件语言码流。常用的转换方案是按照栈的处理方式,将用户查询语句转换成相应的FPGA可执行码流。但是,在通过栈方式将SQL语句转换为FPGA可执行码流时,该FPGA可执行码流中的每个执行步骤都与前序的执行结果存在较强的相关性,导致整个FPGA可执行码流只能以串行的形式执行,降低了FPGA的数据查询效率。
针对上述问题,本申请实施例提供的数据查询方法、装置、电子设备及存储介质,通过获取待执行的数据查询语句;根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;根据FPGA的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系;根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的FPGA可执行码流;将FPGA可执行码流发送至FPGA,以使FPGA能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。上述方案提供的方法,通过以比较运算为执行子树划分单位,并将这些执行子树分配到不同的硬件计算单元,硬件计算单元能够独自去执行分配到的执行子树,且硬件计算单元内部能够并行地去执行子树的运算逻辑,提高了FPGA的数据查询效率。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
首先,对本申请所基于的数据查询系统的结构进行说明:
本申请实施例提供的数据查询方法、装置、电子设备及存储介质,适用于查询数据库中的数据。如图1所示,为本申请实施例基于的数据查询系统的结构示意图,主要包括数据库、FPGA及用于查询数据的数据查询装置。具体地,数据查询装置采集用户输入的待执行的数据查询语句,将该数据查询语句转换为FPGA可执行码流,并将转换后的FPGA可执行码流发送到FPGA,FPGA通过执行该FPGA可执行码流,从数据库中查询对应的数据,并将查询到的数据反馈到数据查询装置。
本申请实施例提供了一种数据查询方法,用于通过处理数据查询语句来从数据库中查询数据。本申请实施例的执行主体为电子设备,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于查询数据的电子设备。
如图2所示,为本申请实施例提供的数据查询方法的流程示意图,该方法包括:
步骤201,获取待执行的数据查询语句。
步骤202,根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树。
其中,逻辑信息分为与(and)或(or)逻辑。
具体地,可以以与或逻辑为根节点,将数据查询语句转换为执行计划树。
示例性的,当数据库查询语句为“select name,from test,where((a+b)+(c-d))>((a*c)-(a+b)*(c-d)and((a*c)<(b*d)”时,得到的执行计划树如图3所示,图3为本申请实施例提供的示例性的执行计划树的结构示意图。
步骤203,以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树。
其中,比较运算操作节点指“>”、“<”和逻辑运算非。
示例性的,如图3所示,可以将第二层中的两个比较运算操作节点确定为执行子树的根节点,以将该执行计划树拆分为两个执行子树。
步骤204,根据FPGA的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系。
需要说明的是,一个FPGA包括多个硬件计算单元,以为FPGA提供并行计算能力。
具体地,由于一条数据查询语句可以被划分为多个执行子树,一个FPGA又包括多个硬件计算单元,为了充分利用FPGA的计算资源,可以预先根据FPGA的硬件计算单元的个数和各执行子树包含的操作节点的个数,建立硬件计算单元与执行子树之间的对应关系,以便于后续负载分配。
步骤205,根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的FPGA可执行码流。
其中,如图4所示,为本申请实施例提供的示例性的FPGA可执行码流的结构示意图,所生成的FPGA可执行码流包括指令头、与各执行子树对应的非逻辑运算指令组和逻辑指令组;指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各硬件计算单元的操作类型;非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;逻辑指令组包括逻辑操作指令。其中,操作类型至少分为int类型、float类型和date类型三种,计算单元EU即为硬件计算单元。
具体地,可以首先将逻辑运算作为一个单独的运算部件,它的输入来自比较运算、非运算、自身的计算结果(逻辑运算的输入是固定的,比如是8输入,当用户输入的表达式超过8逻辑时,可以进行两次逻辑运算,后一次计算的需要用到前一次计算的结果)。然后以每个比较运算、非运算作为一个独立的运算部件,它的内部可以并行的去执行四则运算,然后再进行了比较/非运算,最后将运算结果输出给逻辑运算部件。
步骤206,将FPGA可执行码流发送至FPGA,以使FPGA能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。
具体地,FPGA在接收到FPGA可执行码流后,根据FPGA可执行码流,控制各硬件计算单元执行相应的执行子树的计算逻辑,在得到各个执行子树的计算结果后,按照该数据查询语句对应的逻辑指令(如与或逻辑),得到最终的数据查询结果。
在上述实施例的基础上,为了确保FPGA内部负载均衡,作为一种可实施的方式,在一实施例中,述根据FPGA的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,包括:
步骤2041,根据FPGA的硬件计算单元的个数和所有执行子树包含的操作节点的总数,确定硬件计算单元的平均工作量;
步骤2042,根据硬件计算单元的平均工作量和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树。
示例性的,如图3所示,左侧“>”比较运算操作节点对应的执行子树包括九个操作节点,右侧“<”比较运算操作节点对应的执行子树包括三个操作节点。
具体地,通过用执行子树包含的操作节点的总数除以FPGA的硬件计算单元的个数,可以得到硬件计算单元的平均工作量,其中,平均工作量表示平均需要执行的操作节点。然后以硬件计算单元的平均工作量为任务分为标准,根据各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以保障硬件计算单元负载均衡。
进一步地,在一实施例中,当FPGA包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,可以根据各执行子树包含的操作节点的个数,对执行子树进行排序;将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;将第一目标执行子树分配到第一硬件计算单元;当第一目标执行子树包含的操作节点的个数小于第一硬件计算单元的平均工作量时;根据剩余执行子树包含的操作节点的个数,从剩余执行子树中筛选若干个第二目标执行子树,并将所有第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
示例性的,假设当前FPGA上存在第一硬件计算单元和第二硬件计算单元两个硬件计算单元,根据用户输入的数据查询语句生成的执行计划树遍历得到5个执行子树(1-5),包含的操作节点数分别为1、2、3、4和5。那么可以得到确定执行子树包含的操作节点的总数为15,两个计算单元平均每个工作量为7.5个操作节点的计算。在为硬件计算单元进行执行子树的分配时,可以先将最长(包含操作节点的个数最多)的执行子树5(第一目标执行子树)分配到第一硬件计算单元,再遍历剩下剩余执行子树,以确定剩余执行子树包含的操作节点的个数,因此可以将树2确定为第二目标执行子树,以刚好凑成7个节点(向下取整)。最后,将其余执行子树(树1、树3和树4)都分配到第二硬件计算单元。此时生成的FPGA可执行码流:第一硬件计算单元需要去执行执行子树2和执行子树5,第二硬件计算单元需要去执行执行子树1、执行子树3和执行子树4。
具体地,在一实施例中,可以计算第一目标执行子树包含的操作节点的个数与第一硬件计算单元的平均工作量之间的操作节点数量差;根据操作节点数量差和各剩余执行子树包含的操作节点的个数,从剩余执行子树中筛选若干个第二目标执行子树。
示例性的,继续以上述实施例提供的例子为例,在确定将执行子树5分配到第一硬件计算单元后,可以确定第一硬件计算单元当前的操作节点数量差为7.5-5=2.5,而剩余执行子树中的执行子树2的操作节点个数为2,接近2.5,因此可以将执行子树2确定为第二目标执行子树。
具体地,在一实施例中,由于数据库中的数据分为int类型、float类型和date类型三种,相应的,执行子树的操作类型也分为int类型、float类型和date类型三种,为了进一步充分利用FPGA的计算资源,可以获取各执行子树的操作类型;根据各执行子树的操作类型,对执行子树进行分类。例如分为int类型、float类型和date类型三类。
相应地,在一实施例中,可以按照操作类型对硬件计算单元进行分类,以确定各操作类型的硬件计算单元的个数;针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树。
示例性的,假设当前FPGA上存在第一硬件计算单元和第二硬件计算单元两个int类型的硬件计算单元,则可以进一步根据int类型的执行子树包含的操作节点的个数,分别为第一硬件计算单元和第二硬件计算单元分配待执行的执行子树。
为了便于本领域技术人员更好地了解本申请实施例提供的数据查询方法,针对硬件计算单元和执行子树之间对应关系的建立过程,可以参考如下内容:
1.计算获得某一类型操作节点总数为A。
2.通过节点总数A/硬件计算单元个数B得到平均每个硬件计算单元需要执行的操作节点数C(可能存在小数部分),其中,小于等于C的整数D(向下取整)以及大于等于C的整数E(向上取整)。
3.从该类型执行子树树集合中取出最长的执行子树分配到一个空闲的硬件计算单元中,若最长的执行子树节点数大于等于整数E,则重新计算剩余硬件计算单元需要计算的平均节点数。
4.若该硬件计算单元分配的执行子树的操作节点个数大于等于整数D,跳回步骤3继续执行。
5.若该硬件计算单元分配的执行子树(第一目标执行子树)的操作节点个数小于整数D,则遍历该类型剩余执行子树集合,试图获取到一个新的执行子树(第二目标执行子树),满足新子树的操作节点个数+该硬件计算单元中执行的执行子树的操作节点的总数刚好等于D或者E。
6.若遍历完都没有新的子树满足新子树的操作节点个数+该硬件计算单元执行队列中的树节点总数刚好等于D或者E,则将执行子树集合中最短的执行子树放入到该硬件计算单元队列中。
7.若此时硬件计算单元执行队列中的操作节点总数>=D,则跳回步骤3继续执行若此时硬件计算单元执行队列中的操作节点总数<D,跳回步骤5继续执行。
8.重复以上步骤直到该类型执行子树集合的所有执行子树都分配到对应的硬件计算单元执行队列中。
示例性的,如图5所示,为本申请实施例提供的示例性的数据查询方法的流程示意图,具体为本申请实施例提供的数据查询方法的具体实现流程。首先创建一条总链,从PostgreSQL生成的执行节点树获得A个树的根节点;据值A创建树根节点,并添加到总链中;创建一条逻辑链,其链节点为逻辑操作节点;按照硬件计算单元个数创建对应的计算单元执行链,然后for循环递归遍历A个树的根节点;根据递归遍历函数输出累加统计逻辑节点个数M和非逻辑节点个数N,当A的值不为1时,向逻辑链尾部添加一个新的AND逻辑操作节点,其输入为A个根节点的运算结果,然后再整理递归遍历出的总链,以将每个树链的操作数类型向最大位宽操作数类型转换对齐,并将树链按照操作节点个数进行升序排序,然后再按照上述实施例提供的硬件计算单元和执行子树之间对应关系的建立过程,将总链拆分到各个计算单元执行链,最后按照计算单元执行链和逻辑链生成发送给FPGA的码流。
本申请实施例提供的数据查询方法,通过获取待执行的数据查询语句;根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;根据FPGA的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系;根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的FPGA可执行码流;将FPGA可执行码流发送至FPGA,以使FPGA能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。上述方案提供的方法,通过以比较运算为执行子树划分单位,并将这些执行子树分配到不同的硬件计算单元,硬件计算单元能够独自去执行分配到的执行子树,且硬件计算单元内部能够并行地去执行子树的运算逻辑,提高了FPGA的数据查询效率。并且,通过按照本申请实施例提供的硬件计算单元任务分配逻辑,将执行子树分配到硬件计算单元,在提高FPGA计算资源利用率的同时,保证了FPGA内部达到负载均衡状态。
本申请实施例提供了一种数据查询装置,用于执行上述实施例提供的数据查询方法。
如图6所示,为本申请实施例提供的数据查询装置的结构示意图。该数据查询装置60包括:获取模块601、转换模块602、拆分模块603、分配模块604、生成模块605和查询模块606。
其中,获取模块,用于获取待执行的数据查询语句;转换模块,用于根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;拆分模块,用于以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;分配模块,用于根据FPGA的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系;生成模块,用于根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的FPGA可执行码流;查询模块,用于将FPGA可执行码流发送至FPGA,以使FPGA能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。
具体地,在一实施例中,分配模块,具体用于:
根据FPGA的硬件计算单元的个数和所有执行子树包含的操作节点的总数,确定硬件计算单元的平均工作量;
根据硬件计算单元的平均工作量和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树。
具体地,在一实施例中,当FPGA包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,分配模块,具体用于:
根据各执行子树包含的操作节点的个数,对执行子树进行排序;
将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;
将第一目标执行子树分配到第一硬件计算单元;
当第一目标执行子树包含的操作节点的个数小于第一硬件计算单元的平均工作量时;
根据剩余执行子树包含的操作节点的个数,从剩余执行子树中筛选若干个第二目标执行子树,并将所有第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
具体地,在一实施例中,分配模块,具体用于:
计算第一目标执行子树包含的操作节点的个数与第一硬件计算单元的平均工作量之间的操作节点数量差;
根据操作节点数量差和各剩余执行子树包含的操作节点的个数,从剩余执行子树中筛选若干个第二目标执行子树。
具体地,在一实施例中,该装置,还包括:
分类模块,用于获取各执行子树的操作类型;
根据各执行子树的操作类型,对执行子树进行分类;
分配模块,具体用于:
按照操作类型对硬件计算单元进行分类,以确定各操作类型的硬件计算单元的个数;
针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树。
具体地,在一实施例中,操作类型至少分为int类型、float类型和date类型三种。
具体地,在一实施例中,FPGA可执行码流包括指令头、与各执行子树对应的非逻辑运算指令组和逻辑指令组;
指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各硬件计算单元的操作类型;
非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;
逻辑指令组包括逻辑操作指令。
示例性的,如图7所示,为本申请实施例提供的示例性的数据查询系统的结构示意图,以对PostgreSQL数据库进行数据查询为例,PostgreSQL数据库基于插件的方式执行用户自定义的查询方法,本申请实施例通过以PostgreSQL插件的形式将FPGA加速器(数据查询装置)加入其中,实现了CPU+FPGA异构加速平台,其中,CPU与FPGA之间物理通道采用PCIe高速数据通信接口连接。
关于本实施例中的数据查询装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供的数据查询装置,用于执行上述实施例提供的数据查询方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种电子设备,用于执行上述实施例提供的数据查询方法。
如图8所示,为本申请实施例提供的电子设备的结构示意图。该电子设备80包括:至少一个处理器81和存储器82;
存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的数据查询方法。
本申请实施例提供的一种电子设备,用于执行上述实施例提供的数据查询方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的数据查询方法。
本申请实施例的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的数据查询方法的计算机执行指令,其实现方式与原理相同,不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种数据查询方法,应用于包括FPGA的数据查询系统,其特征在于,所述方法包括:
获取待执行的数据查询语句;
根据所述数据查询语句的逻辑信息,将所述数据查询语句转换为执行计划树;
以所述执行计划树中的比较运算操作节点为执行子树的根节点,将所述执行计划树拆分为多个所述执行子树;
根据所述FPGA的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,以建立所述硬件计算单元与执行子树之间的对应关系;
根据所述硬件计算单元与执行子树之间的对应关系及各所述执行子树之间的逻辑关系,生成所述数据查询语句对应的FPGA可执行码流;
将所述FPGA可执行码流发送至所述FPGA,以使所述FPGA能够基于各所述硬件计算单元并行地执行各执行子树对应的计算逻辑,得到所述数据查询语句的数据查询结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述FPGA的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
根据所述FPGA的硬件计算单元的个数和所有所述执行子树包含的操作节点的总数,确定所述硬件计算单元的平均工作量;
根据所述硬件计算单元的平均工作量和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
3.根据权利要求2所述的方法,其特征在于,当所述FPGA包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,所述根据所述硬件计算单元的平均工作量和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
根据各所述执行子树包含的操作节点的个数,对所述执行子树进行排序;
将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;
将所述第一目标执行子树分配到所述第一硬件计算单元;
当所述第一目标执行子树包含的操作节点的个数小于所述第一硬件计算单元的平均工作量时;
根据剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树,并将所有所述第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
4.根据权利要求3所述的方法,其特征在于,所述根据剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树,包括:
计算所述第一目标执行子树包含的操作节点的个数与所述第一硬件计算单元的平均工作量之间的操作节点数量差;
根据所述操作节点数量差和所述各所述剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树。
5.根据权利要求1所述的方法,其特征在于,还包括:
获取各所述执行子树的操作类型;
根据各所述执行子树的操作类型,对所述执行子树进行分类;
所述根据所述FPGA的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
按照所述操作类型对所述硬件计算单元进行分类,以确定各所述操作类型的硬件计算单元的个数;
针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
6.根据权利要求5所述的方法,其特征在于,所述操作类型至少分为int类型、float类型和date类型三种。
7.根据权利要求1所述的方法,其特征在于,FPGA可执行码流包括指令头、与各所述执行子树对应的非逻辑运算指令组和逻辑指令组;
所述指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各所述硬件计算单元的操作类型;
所述非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;
所述逻辑指令组包括逻辑操作指令。
8.一种数据查询装置,应用于包括FPGA的数据查询系统,其特征在于,所述装置包括:
获取模块,用于获取待执行的数据查询语句;
转换模块,用于根据所述数据查询语句的逻辑信息,将所述数据查询语句转换为执行计划树;
拆分模块,用于以所述执行计划树中的比较运算操作节点为执行子树的根节点,将所述执行计划树拆分为多个所述执行子树;
分配模块,用于根据所述FPGA的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,以建立所述硬件计算单元与执行子树之间的对应关系;
生成模块,用于根据所述硬件计算单元与执行子树之间的对应关系及各所述执行子树之间的逻辑关系,生成所述数据查询语句对应的FPGA可执行码流;
查询模块,用于将所述FPGA可执行码流发送至所述FPGA,以使所述FPGA能够基于各所述硬件计算单元并行地执行各执行子树对应的计算逻辑,得到所述数据查询语句的数据查询结果。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111441644.0A CN114328595B (zh) | 2021-11-30 | 2021-11-30 | 一种数据查询方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111441644.0A CN114328595B (zh) | 2021-11-30 | 2021-11-30 | 一种数据查询方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114328595A CN114328595A (zh) | 2022-04-12 |
CN114328595B true CN114328595B (zh) | 2024-01-09 |
Family
ID=81049172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111441644.0A Active CN114328595B (zh) | 2021-11-30 | 2021-11-30 | 一种数据查询方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328595B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786808A (zh) * | 2014-12-15 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 一种用于分布式执行关系型计算指令的方法与设备 |
CN112115302A (zh) * | 2020-09-29 | 2020-12-22 | 集美大学 | 一种XML文档的并行XPath查询方法、终端设备及存储介质 |
CN112541001A (zh) * | 2019-09-23 | 2021-03-23 | 北京国双科技有限公司 | 数据查询方法、装置、存储介质及设备 |
CN112860730A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | Sql语句的处理方法、装置、电子设备及可读存储介质 |
CN113641701A (zh) * | 2021-10-13 | 2021-11-12 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、系统、异构加速平台及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677683B (zh) * | 2014-11-21 | 2018-12-14 | 华为技术有限公司 | 批量数据查询方法和装置 |
-
2021
- 2021-11-30 CN CN202111441644.0A patent/CN114328595B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786808A (zh) * | 2014-12-15 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 一种用于分布式执行关系型计算指令的方法与设备 |
CN112541001A (zh) * | 2019-09-23 | 2021-03-23 | 北京国双科技有限公司 | 数据查询方法、装置、存储介质及设备 |
CN112115302A (zh) * | 2020-09-29 | 2020-12-22 | 集美大学 | 一种XML文档的并行XPath查询方法、终端设备及存储介质 |
CN112860730A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | Sql语句的处理方法、装置、电子设备及可读存储介质 |
CN113641701A (zh) * | 2021-10-13 | 2021-11-12 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、系统、异构加速平台及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114328595A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8959138B2 (en) | Distributed data scalable adaptive map-reduce framework | |
US20140351239A1 (en) | Hardware acceleration for query operators | |
JP5730386B2 (ja) | 計算機システム及び並列分散処理方法 | |
CN109710406B (zh) | 数据分配及其模型训练方法、装置、及计算集群 | |
CN110347515B (zh) | 一种适合边缘计算环境的资源优化分配方法 | |
CN114420215B (zh) | 基于生成树的大规模生物数据聚类方法及系统 | |
EP3570190A1 (en) | Statement parsing method for database statement | |
CN112235344A (zh) | 一种面向分布式机器学习的稀疏通信模型的实现方法 | |
CN116627892B (zh) | 一种数据近存储计算方法、装置和存储介质 | |
CN100462956C (zh) | 用于在计算系统上加载程序的方法和系统 | |
CN111767304A (zh) | 一种跨数据库的数据查询方法、查询装置及可读介质 | |
JP5108011B2 (ja) | バス接続されたコンシューマとプロデューサとの間でのメッセージ・フローを削減するためのシステム、方法、およびコンピュータ・プログラム | |
CN116756150B (zh) | 一种Mpp数据库大表关联加速方法 | |
CN116775041B (zh) | 基于流计算和rete算法的实时决策引擎实现方法 | |
CN114328595B (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
CN108319604B (zh) | 一种hive中大小表关联的优化方法 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
Romero et al. | Bolt: Fast inference for random forests | |
CN116560984A (zh) | 一种基于调用依赖图的测试用例聚类分组方法 | |
CN116401277A (zh) | 数据处理方法、装置、系统、设备及介质 | |
CN104090895A (zh) | 获取基数的方法、装置、服务器及系统 | |
CN113326311A (zh) | 一种数据转换方法及装置 | |
US9281994B2 (en) | Processing algebraic expressions for keyed data sets | |
CN112000478A (zh) | 作业运行资源分配方法及装置 | |
Lu et al. | Improving mapreduce performance by using a new partitioner in yarn |
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 |