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

一种数据查询方法、装置、电子设备及存储介质与流程

2022-04-13 12:41:46 来源:中国专利 TAG:


1.本技术涉及数据库应用技术领域,尤其涉及一种数据查询方法、装置、电子设备及存储介质。


背景技术:

2.目前,数据库在大数据环境下进行数据分析时能够起到重要的作用,对信息化系统的整体性能提升有较大帮助。但是传统数据库在数据查询方面的执行效率不高,而且cpu也优先处理事务性负载,数据库系统整体性能受到数据查询效率较低的阻碍。
3.为了提高数据查询效率,通常将数据库的查询功能卸载到fpga板卡上执行,此时需要对用户的查询语句转换成fpga能够一步步执行处理的硬件语言码流。常用的转换方案是按照栈的处理方式,将用户查询语句转换成相应的fpga可执行码流。
4.但是,在通过栈方式将sql语句转换为fpga可执行码流时,该fpga可执行码流中的每个执行步骤都与前序的执行结果存在较强的相关性,导致整个fpga可执行码流只能以串行的形式执行,降低了fpga的数据查询效率。


技术实现要素:

5.本技术提供一种数据查询方法、装置、电子设备及存储介质,以解决现有技术降低了fpga的数据查询效率等缺陷。
6.本技术第一个方面提供一种数据查询方法,应用于包括fpga的数据查询系统,所述方法包括:
7.获取待执行的数据查询语句;
8.根据所述数据查询语句的逻辑信息,将所述数据查询语句转换为执行计划树;
9.以所述执行计划树中的比较运算操作节点为执行子树的根节点,将所述执行计划树拆分为多个所述执行子树;
10.根据所述fpga的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,以建立所述硬件计算单元与执行子树之间的对应关系;
11.根据所述硬件计算单元与执行子树之间的对应关系及各所述执行子树之间的逻辑关系,生成所述数据查询语句对应的fpga可执行码流;
12.将所述fpga可执行码流发送至所述fpga,以使所述fpga能够基于各所述硬件计算单元并行地执行各执行子树对应的计算逻辑,得到所述数据查询语句的数据查询结果。
13.可选的,所述根据所述fpga的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
14.根据所述fpga的硬件计算单元的个数和所有所述执行子树包含的操作节点的总数,确定所述硬件计算单元的平均工作量;
15.根据所述硬件计算单元的平均工作量和各所述执行子树包含的操作节点的个数,
为各所述硬件计算单元分配待执行的执行子树。
16.可选的,当所述fpga包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,所述根据所述硬件计算单元的平均工作量和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
17.根据各所述执行子树包含的操作节点的个数,对所述执行子树进行排序;
18.将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;
19.将所述第一目标执行子树分配到所述第一硬件计算单元;
20.当所述第一目标执行子树包含的操作节点的个数小于所述第一硬件计算单元的平均工作量时;
21.根据剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树,并将所有所述第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
22.可选的,所述根据剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树,包括:
23.计算所述第一目标执行子树包含的操作节点的个数与所述第一硬件计算单元的平均工作量之间的操作节点数量差;
24.根据所述操作节点数量差和所述各所述剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树。
25.可选的,还包括:
26.获取各所述执行子树的操作类型;
27.根据各所述执行子树的操作类型,对所述执行子树进行分类;
28.所述根据所述fpga的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,包括:
29.按照所述操作类型对所述硬件计算单元进行分类,以确定各所述操作类型的硬件计算单元的个数;
30.针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
31.可选的,所述操作数据类型可分为int类型、float类型、date类型等不同类型。
32.可选的,fpga可执行码流包括指令头、与各所述执行子树对应的非逻辑运算指令组和逻辑指令组;
33.所述指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各所述硬件计算单元的操作类型;
34.所述非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;
35.所述逻辑指令组包括逻辑操作指令。
36.本技术第二个方面提供一种数据查询装置,应用于包括fpga的数据查询系统,所述装置包括:
37.获取模块,用于获取待执行的数据查询语句;
38.转换模块,用于根据所述数据查询语句的逻辑信息,将所述数据查询语句转换为
执行计划树;
39.拆分模块,用于以所述执行计划树中的比较运算操作节点为执行子树的根节点,将所述执行计划树拆分为多个所述执行子树;
40.分配模块,用于根据所述fpga的硬件计算单元的个数和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树,以建立所述硬件计算单元与执行子树之间的对应关系;
41.生成模块,用于根据所述硬件计算单元与执行子树之间的对应关系及各所述执行子树之间的逻辑关系,生成所述数据查询语句对应的fpga可执行码流;
42.查询模块,用于将所述fpga可执行码流发送至所述fpga,以使所述fpga能够基于各所述硬件计算单元并行地执行各执行子树对应的计算逻辑,得到所述数据查询语句的数据查询结果。
43.可选的,所述分配模块,具体用于:
44.根据所述fpga的硬件计算单元的个数和所有所述执行子树包含的操作节点的总数,确定所述硬件计算单元的平均工作量;
45.根据所述硬件计算单元的平均工作量和各所述执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
46.可选的,当所述fpga包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,所述分配模块,具体用于:
47.根据各所述执行子树包含的操作节点的个数,对所述执行子树进行排序;
48.将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;
49.将所述第一目标执行子树分配到所述第一硬件计算单元;
50.当所述第一目标执行子树包含的操作节点的个数小于所述第一硬件计算单元的平均工作量时;
51.根据剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树,并将所有所述第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
52.可选的,所述分配模块,具体用于:
53.计算所述第一目标执行子树包含的操作节点的个数与所述第一硬件计算单元的平均工作量之间的操作节点数量差;
54.根据所述操作节点数量差和所述各所述剩余执行子树包含的操作节点的个数,从所述剩余执行子树中筛选若干个第二目标执行子树。
55.可选的,所述装置,还包括:
56.分类模块,用于获取各所述执行子树的操作类型;
57.根据各所述执行子树的操作类型,对所述执行子树进行分类;
58.所述分配模块,具体用于:
59.按照所述操作类型对所述硬件计算单元进行分类,以确定各所述操作类型的硬件计算单元的个数;
60.针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各所述硬件计算单元分配待执行的执行子树。
61.可选的,所述操作类型至少分为int类型、float类型和date类型三种。
62.可选的,fpga可执行码流包括指令头、与各所述执行子树对应的非逻辑运算指令组和逻辑指令组;
63.所述指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各所述硬件计算单元的操作类型;
64.所述非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;
65.所述逻辑指令组包括逻辑操作指令。
66.本技术第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
67.所述存储器存储计算机执行指令;
68.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能的设计所述的方法。
69.本技术第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能的设计所述的方法。
70.本技术技术方案,具有如下优点:
71.本技术提供一种数据查询方法、装置、电子设备及存储介质,该方法包括:获取待执行的数据查询语句;根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;根据fpga的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系;根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的fpga可执行码流;将fpga可执行码流发送至fpga,以使fpga能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。上述方案提供的方法,通过以比较运算为执行子树划分单位,并将这些执行子树分配到不同的硬件计算单元,硬件计算单元能够独自去执行分配到的执行子树,且硬件计算单元内部能否并行地去执行子树的运算逻辑,提高了fpga的数据查询效率。
附图说明
72.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
73.图1为本技术实施例基于的数据查询系统的结构示意图;
74.图2为本技术实施例提供的数据查询方法的流程示意图;
75.图3为本技术实施例提供的示例性的执行计划树的结构示意图;
76.图4为本技术实施例提供的示例性的fpga可执行码流的结构示意图;
77.图5为本技术实施例提供的示例性的数据查询方法的流程示意图;
78.图6为本技术实施例提供的数据查询装置的结构示意图;
79.图7为本技术实施例提供的示例性的数据查询系统的结构示意图;
80.图8为本技术实施例提供的电子设备的结构示意图。
81.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
82.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
83.此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
84.为了提高数据查询效率,通常将数据库的查询功能卸载到fpga板卡上执行,此时需要对用户的查询语句转换成fpga能够一步步执行处理的硬件语言码流。常用的转换方案是按照栈的处理方式,将用户查询语句转换成相应的fpga可执行码流。但是,在通过栈方式将sql语句转换为fpga可执行码流时,该fpga可执行码流中的每个执行步骤都与前序的执行结果存在较强的相关性,导致整个fpga可执行码流只能以串行的形式执行,降低了fpga的数据查询效率。
85.针对上述问题,本技术实施例提供的数据查询方法、装置、电子设备及存储介质,通过获取待执行的数据查询语句;根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;根据fpga的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系;根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的fpga可执行码流;将fpga可执行码流发送至fpga,以使fpga能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。上述方案提供的方法,通过以比较运算为执行子树划分单位,并将这些执行子树分配到不同的硬件计算单元,硬件计算单元能够独自去执行分配到的执行子树,且硬件计算单元内部能否并行地去执行子树的运算逻辑,提高了fpga的数据查询效率。
86.下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
87.首先,对本技术所基于的数据查询系统的结构进行说明:
88.本技术实施例提供的数据查询方法、装置、电子设备及存储介质,适用于查询数据库中的数据。如图1所示,为本技术实施例基于的数据查询系统的结构示意图,主要包括数据库、fpga及用于查询数据的数据查询装置。具体地,数据查询装置采集用户输入的待执行的数据查询语句,将该数据查询语句转换为fpga可执行码流,并将转换后的fpga可执行码流发送到fpga,fpga通过执行该fpga可执行码流,从数据库中查询对应的数据,并将查询到的数据反馈到数据查询装置。
89.本技术实施例提供了一种数据查询方法,用于通过处理数据查询语句来从数据库中查询数据。本技术实施例的执行主体为电子设备,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于查询数据的电子设备。
90.如图2所示,为本技术实施例提供的数据查询方法的流程示意图,该方法包括:
91.步骤201,获取待执行的数据查询语句。
92.步骤202,根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树。
93.其中,逻辑信息分为与(and)或(or)逻辑。
94.具体地,可以以与或逻辑为根节点,将将数据查询语句转换为执行计划树。
95.示例性的,当数据库查询语句为“select name,from test,where((a b) (c-d))>((a*c)-(a b)*(c-d)and((a*c)<(b*d)”时,得到的执行计划树如图3所示,图3为本技术实施例提供的示例性的执行计划树的结构示意图。
96.步骤203,以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树。
97.其中,比较运算操作节点指“>”、“<”和逻辑运算非。
98.示例性的,如图3所示,可以将第二层中的两个比较运算操作节点确定为执行子树的根节点,以将该执行计划树拆分为两个执行子树。
99.步骤204,根据fpga的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系。
100.需要说明的是,一个fpga包括多个硬件计算单元,以为fpga提供并行计算能力。
101.具体地,由于一条数据查询语句可以被划分为多个执行子树,一个fpga又包括多个硬件计算单元,为了充分利用fpga的计算资源,可以预先根据fpga的硬件计算单元的个数和各执行子树包含的操作节点的个数,建立硬件计算单元与执行子树之间的对应关系,以便于后续负载分配。
102.步骤205,根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的fpga可执行码流。
103.其中,如图4所示,为本技术实施例提供的示例性的fpga可执行码流的结构示意图,所生成的fpga可执行码流包括指令头、与各执行子树对应的非逻辑运算指令组和逻辑指令组;指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各硬件计算单元的操作类型;非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;逻辑指令组包括逻辑操作指令。其中,操作类型至少分为int类型、float类型和date类型三种,计算单元eu即为硬件计算单元。
104.具体地,可以首先将逻辑运算作为一个单独的运算部件,它的输入来自比较运算、非运算、自身的计算结果(逻辑运算的输入是固定的,比如是8输入,当用户输入的表达式超过8逻辑时,可以进行两次逻辑运算,后一次计算的需要用到前一次计算的结果)。然后以每个比较运算、非运算作为一个独立的运算部件,它的内部可以并行的去执行四则运算,然后再进行了比较/非运算,最后将运算结果输出给逻辑运算部件。
105.步骤206,将fpga可执行码流发送至fpga,以使fpga能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。
106.具体地,fpga在接收到fpga可执行码流后,根据fpga可执行码流,控制各硬件计算单元执行相应的执行子树的计算逻辑,在得到各个执行子树的计算结果后,按照该数据查询语句对应的逻辑指令(如与或逻辑),得到最终的数据查询结果。
107.在上述实施例的基础上,为了确保fpga内部负载均衡,作为一种可实施的方式,在一实施例中,述根据fpga的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,包括:
108.步骤2041,根据fpga的硬件计算单元的个数和所有执行子树包含的操作节点的总数,确定硬件计算单元的平均工作量;
109.步骤2042,根据硬件计算单元的平均工作量和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树。
110.示例性的,如图3所示,左侧“>”比较运算操作节点对应的执行子树包括九个操作节点,右侧“<”比较运算操作节点对应的执行子树包括三个操作节点。
111.具体地,通过用执行子树包含的操作节点的总数除以fpga的硬件计算单元的个数,可以得到硬件计算单元的平均工作量,其中,平均工作量表示平均需要执行的操作节点。然后以硬件计算单元的平均工作量为任务分为标准,根据各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以保障硬件计算单元负载均衡。
112.进一步地,在一实施例中,当fpga包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,可以根据各执行子树包含的操作节点的个数,对执行子树进行排序;将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;将第一目标执行子树分配到第一硬件计算单元;当第一目标执行子树包含的操作节点的个数小于第一硬件计算单元的平均工作量时;根据剩余执行子树包含的操作节点的个数,从剩余执行子树中筛选若干个第二目标执行子树,并将所有第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
113.示例性的,假设当前fpga上存在第一硬件计算单元和第二硬件计算单元两个硬件计算单元,根据用户输入的数据查询语句生成的执行计划树遍历得到5个执行子树(1-5),包含的操作节点数分别为1、2、3、4和5。那么可以得到确定执行子树包含的操作节点的总数为15,两个计算单元平均每个工作量为7.5个操作节点的计算。在为硬件计算单元进行执行子树的分配时,可以先将最长(包含操作节点的个数最多)的执行子树5(第一目标执行子树)分配到第一硬件计算单元,再遍历剩下剩余执行子树,以确定剩余执行子树包含的操作节点的个数,因此可以将树2确定为第二目标执行子树,以刚好凑成7个节点(向下取整)。最后,将其余执行子树(树1、树3和树4)都分配到第二硬件计算单元。此时生成的fpga可执行码流:第一硬件计算单元需要去执行执行子树2和执行子树5,第二硬件计算单元需要去执行执行子树1、执行子树3和执行子树4。
114.具体地,在一实施例中,可以计算第一目标执行子树包含的操作节点的个数与第一硬件计算单元的平均工作量之间的操作节点数量差;根据操作节点数量差和各剩余执行子树包含的操作节点的个数,从剩余执行子树中筛选若干个第二目标执行子树。
115.示例性的,继续以上述实施例提供的例子为例,在确定将执行子树5分配到第一硬件计算单元后,可以确定第一硬件计算单元当前的操作节点数量差为7.5-5=2.5,而剩余执行子树中的执行子树2的操作节点个数为2,接近2.5,因此可以将执行子树2确定为第二
目标执行子树。
116.具体地,在一实施例中,由于数据库中的数据分为int类型、float类型和date类型三种,相应的,执行子树的操作类型也分为int类型、float类型和date类型三种,为了进一步充分利用fpga的计算资源,可以获取各执行子树的操作类型;根据各执行子树的操作类型,对执行子树进行分类。例如分为int类型、float类型和date类型三类。
117.相应地,在一实施例中,可以按照操作类型对硬件计算单元进行分类,以确定各操作类型的硬件计算单元的个数;针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树。
118.示例性的,假设当前fpga上存在第一硬件计算单元和第二硬件计算单元两个int类型的硬件计算单元,则可以进一步根据int类型的执行子树包含的操作节点的个数,分别为第一硬件计算单元和第二硬件计算单元分配待执行的执行子树。
119.为了便于本领域技术人员更好地了解本技术实施例提供的数据查询方法,针对硬件计算单元和执行子树之间对应关系的建立过程,可以参考如下内容:
120.1.计算获得某一类型操作节点总数为a。
121.2.通过节点总数a/硬件计算单元个数b得到平均每个硬件计算单元需要执行的操作节点数c(可能存在小数部分),其中,小于等于c的整数d(向下取整)以及大于等于c的整数e(向上取整)。
122.3.从该类型执行子树树集合中取出最长的执行子树分配到一个空闲的硬件计算单元中,若最长的执行子树节点数大于等于整数e,则重新计算剩余硬件计算单元需要计算的平均节点数。
123.4.若该硬件计算单元分配的执行子树的操作节点个数大于等于整数d,跳回步骤3继续执行。
124.5.若该硬件计算单元分配的执行子树(第一目标执行子树)的操作节点个数小于整数d,则遍历该类型剩余执行子树集合,试图获取到一个新的执行子树(第二目标执行子树),满足新子树的操作节点个数 该硬件计算单元中执行的执行子树的操作节点的总数刚好等于d或者e。
125.6.若遍历完都没有新的子树满足新子树的操作节点个数 该硬件计算单元执行队列中的树节点总数刚好等于d或者e,则将执行子树集合中最短的执行子树放入到该硬件计算单元队列中。
126.7.若此时硬件计算单元执行队列中的操作节点总数》=d,则跳回步骤3继续执行若此时硬件计算单元执行队列中的操作节点总数《d,跳回步骤5继续执行。
127.8.重复以上步骤直到该类型执行子树集合的所有执行子树都分配到对应的硬件计算单元执行队列中。
128.示例性的,如图5所示,为本技术实施例提供的示例性的数据查询方法的流程示意图,具体为本技术实施例提供的数据查询方法的具体实现流程。首先创建一条总链,从postgresql生成的执行节点树获得a个树的根节点;据值a创建树根节点,并添加到总链中;创建一条逻辑链,其链节点为逻辑操作节点;按照硬件计算单元个数创建对应的计算单元执行链,然后for循环递归遍历a个树的根节点;根据递归遍历函数输出累加统计逻辑节点
个数m和非逻辑节点个数n,当a的值不为1时,向逻辑链尾部添加一个新的and逻辑操作节点,其输入为a个根节点的运算结果,然后再整理递归遍历出的总链,以将每个树链的操作数类型向最大位宽操作数类型转换对齐,并将树链按照操作节点个数进行升序排序,然后再按照上述实施例提供的硬件计算单元和执行子树之间对应关系的建立过程,将总链拆分到各个计算单元执行链,最后按照计算单元执行链和逻辑链生成发送给fpga的码流。
129.本技术实施例提供的数据查询方法,通过获取待执行的数据查询语句;根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;根据fpga的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系;根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的fpga可执行码流;将fpga可执行码流发送至fpga,以使fpga能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。上述方案提供的方法,通过以比较运算为执行子树划分单位,并将这些执行子树分配到不同的硬件计算单元,硬件计算单元能够独自去执行分配到的执行子树,且硬件计算单元内部能否并行地去执行子树的运算逻辑,提高了fpga的数据查询效率。并且,通过按照本技术实施例提供的硬件计算单元任务分配逻辑,将执行子树分配到硬件计算单元,在提高fpga计算资源利用率的同时,保证了fpga内部达到负载均衡状态。
130.本技术实施例提供了一种数据查询装置,用于执行上述实施例提供的数据查询方法。
131.如图6所示,为本技术实施例提供的数据查询装置的结构示意图。该数据查询装置60包括:获取模块601、转换模块602、拆分模块603、分配模块604、生成模块605和查询模块606。
132.其中,获取模块,用于获取待执行的数据查询语句;转换模块,用于根据数据查询语句的逻辑信息,将数据查询语句转换为执行计划树;拆分模块,用于以执行计划树中的比较运算操作节点为执行子树的根节点,将执行计划树拆分为多个执行子树;分配模块,用于根据fpga的硬件计算单元的个数和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树,以建立硬件计算单元与执行子树之间的对应关系;生成模块,用于根据硬件计算单元与执行子树之间的对应关系及各执行子树之间的逻辑关系,生成数据查询语句对应的fpga可执行码流;查询模块,用于将fpga可执行码流发送至fpga,以使fpga能够基于各硬件计算单元并行地执行各执行子树对应的计算逻辑,得到数据查询语句的数据查询结果。
133.具体地,在一实施例中,分配模块,具体用于:
134.根据fpga的硬件计算单元的个数和所有执行子树包含的操作节点的总数,确定硬件计算单元的平均工作量;
135.根据硬件计算单元的平均工作量和各执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树。
136.具体地,在一实施例中,当fpga包括第一硬件计算单元和第二硬件计算单元两个硬件计算单元时,分配模块,具体用于:
137.根据各执行子树包含的操作节点的个数,对执行子树进行排序;
138.将包含操作节点的个数最多的执行子树,确定为第一目标执行子树;
139.将第一目标执行子树分配到第一硬件计算单元;
140.当第一目标执行子树包含的操作节点的个数小于第一硬件计算单元的平均工作量时;
141.根据剩余执行子树包含的操作节点的个数,从剩余执行子树中筛选若干个第二目标执行子树,并将所有第二目标执行子树分配到第一硬件计算单元,将其余执行子树分配到第二硬件计算单元。
142.具体地,在一实施例中,分配模块,具体用于:
143.计算第一目标执行子树包含的操作节点的个数与第一硬件计算单元的平均工作量之间的操作节点数量差;
144.根据操作节点数量差和各剩余执行子树包含的操作节点的个数,从剩余执行子树中筛选若干个第二目标执行子树。
145.具体地,在一实施例中,该装置,还包括:
146.分类模块,用于获取各执行子树的操作类型;
147.根据各执行子树的操作类型,对执行子树进行分类;
148.分配模块,具体用于:
149.按照操作类型对硬件计算单元进行分类,以确定各操作类型的硬件计算单元的个数;
150.针对每种操作类型,根据该操作类型的硬件计算单元的个数和该操作类型的执行子树包含的操作节点的个数,为各硬件计算单元分配待执行的执行子树。
151.具体地,在一实施例中,操作类型至少分为int类型、float类型和date类型三种。
152.具体地,在一实施例中,fpga可执行码流包括指令头、与各执行子树对应的非逻辑运算指令组和逻辑指令组;
153.指令头包括非逻辑运算指令组个数、逻辑指令组个数、使用的硬件计算单元的个数和各硬件计算单元的操作类型;
154.非逻辑运算指令组包括对应的执行子树所分配的每个硬件计算单元的执行指令;
155.逻辑指令组包括逻辑操作指令。
156.示例性的,如图7所示,为本技术实施例提供的示例性的数据查询系统的结构示意图,以对postgresql数据库进行数据查询为例,postgresql数据库基于插件的方式执行用户自定义的查询方法,本技术实施例通过以postgresql插件的形式将fpga加速器(数据查询装置)加入其中,实现了cpu fpga异构加速平台,其中,cpu与fpga之间物理通道采用pcie高速数据通信接口连接。
157.关于本实施例中的数据查询装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
158.本技术实施例提供的数据查询装置,用于执行上述实施例提供的数据查询方法,其实现方式与原理相同,不再赘述。
159.本技术实施例提供了一种电子设备,用于执行上述实施例提供的数据查询方法。
160.如图8所示,为本技术实施例提供的电子设备的结构示意图。该电子设备80包括:
至少一个处理器81和存储器82;
161.存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的数据查询方法。
162.本技术实施例提供的一种电子设备,用于执行上述实施例提供的数据查询方法,其实现方式与原理相同,不再赘述。
163.本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的数据查询方法。
164.本技术实施例的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的数据查询方法的计算机执行指令,其实现方式与原理相同,不再赘述。
165.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
166.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
167.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
168.上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
169.本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
170.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

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

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

相关文献