CN107122490B - 一种分组查询中聚合函数的数据处理方法及*** - Google Patents
一种分组查询中聚合函数的数据处理方法及*** Download PDFInfo
- Publication number
- CN107122490B CN107122490B CN201710351866.0A CN201710351866A CN107122490B CN 107122490 B CN107122490 B CN 107122490B CN 201710351866 A CN201710351866 A CN 201710351866A CN 107122490 B CN107122490 B CN 107122490B
- Authority
- CN
- China
- Prior art keywords
- data
- query
- aggregation function
- fpga
- calculation
- 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
- 230000002776 aggregation Effects 0.000 title claims abstract description 134
- 238000004220 aggregation Methods 0.000 title claims abstract description 134
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 230000006870 function Effects 0.000 claims abstract description 135
- 238000004364 calculation method Methods 0.000 claims abstract description 78
- 238000012545 processing Methods 0.000 claims abstract description 39
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 35
- 238000005457 optimization Methods 0.000 claims abstract description 11
- 239000013598 vector Substances 0.000 claims description 66
- 230000004931 aggregating effect Effects 0.000 claims description 2
- 238000009826 distribution Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 abstract description 15
- 230000001133 acceleration Effects 0.000 abstract description 6
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
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/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种分组查询中聚合函数的数据处理方法及***,包括主CPU将待查询数据文件划分成数据块,并将所述数据块分配到多个计算节点;各计算节点CPU分别将所述数据块传输给FPGA,所述FPGA与所述计算节点CPU通过PCIe接口对应连接;所述FPGA获取所述数据块,按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算,并通过所述计算节点CPU向所述主CPU返回计算结果;计算算法采用Opencl语言并行优化实现,并移植在所述FPGA上;主CPU合并所述计算结果,得到最终的查询结果。本申请通过FPGA并行加速提高了计算节点的处理能力,进而提高了分组查询聚合函数的计算速度。
Description
技术领域
本申请涉及大数据处理领域,特别涉及一种分组查询中聚合函数的数据处理方法及***。
背景技术
近年来,随着信息技术的发展,大数据处理技术作为新时代的高科技产物已经广泛应用在各行各业中。
大数据处理中采用了分布式处理技术,可以将不同地点的不同类型指令集和体系架构的计算节点使用通信网络连接起来,构成分布式处理***。在主控制单元的统一控制管理下,各个计算节点协调地完成数据处理任务。
分组查询计算是一项常见的数据处理任务,可以将同类别的处理对象划分为一组进行计算,得到目标聚合函数值,使得数据中的信息更加一目了然。Spark大数据处理***作为大数据处理领域中最为热门的快速通用计算平台,可以支持外接设备使用SQL语句进行分组查询计算操作。
随着数据存储规模和计算规模的不断增大,数据库的SQL分组查询计算操作面临着巨大的挑战。由于在当今信息***时代,数据逐渐呈现出海量、类型多、价值密度低等特点,导致数据库的SQL分组查询计算操作的处理量和复杂度大大增加。相对于数据爆发式的增长速度,现有技术中计算节点的计算能力是有限的,因而处理时间也大大增加。因此,如何有效提高分组查询计算操作的速度,以适应当前社会的发展需求,已经成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的在于提供一种分组查询中聚合函数的数据处理方法及***,以提高大数据平台进行分组查询聚合函数计算操作的速度。
为解决上述技术问题,本申请提供一种分组查询中聚合函数的数据处理方法,包括:
主CPU将待查询数据文件划分成数据块,并将所述数据块分配到多个计算节点;
各计算节点CPU分别将所述数据块传输给FPGA,所述FPGA与所述计算节点CPU通过PCIe接口对应连接;
所述FPGA获取所述数据块,按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算,并通过所述计算节点CPU向所述主CPU返回计算结果;所述分组查询中聚合函数的计算算法的代码采用Opencl语言并行优化实现,并移植和部署在所述FPGA上;
所述主CPU合并所述计算结果,得到最终的查询结果。
可选地,在所述主CPU将待查询数据文件划分成数据块之前,还包括:
所述主CPU解析查询语句;
依据所述查询语句加载所述待查询数据文件。
可选地,所述FPGA获取所述数据块包括:
所述FPGA在本地内存申请空间;
从DDR中将所述数据块加载到所述空间得到数据列。
可选地,所述FPGA按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算包括:
在数据向量中加载所述数据列中的数据;
判断所述数据向量中的数据是否满足SQL分组查询计算中聚合函数的查询条件;若是,执行所述SQL分组查询聚合函数的计算操作,并将结果向量中相应位的数据由第一标志位改写为第二标志位;
根据所述聚合函数的查询条件合并所述结果向量得到计算结果。
可选地,所述FPGA按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算包括:
以unroll循环展开的方式按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算。
本申请还提供了一种分组查询中聚合函数的数据处理***,包括:
主CPU:用于将待查询数据文件划分成数据块,并将所述数据块分配到多个计算节点;接收并合并各个FPGA进行SQL分组查询聚合函数计算的计算结果,得到最终的查询结果,其中,所述FPGA与所述计算节点CPU通过PCIe接口对应连接;
计算节点CPU:用于将分配得到的所述数据块传输给所述FPGA,并向所述主CPU传递所述FPGA返回的所述计算结果;
所述FPGA:用于获取所述数据块,按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算,并通过所述计算节点CPU向所述主CPU返回所述计算结果;所述分组查询中聚合函数的计算算法的代码采用Opencl语言并行优化实现,并移植和部署在所述FPGA上。
可选地,所述主CPU还用于:
解析查询语句;依据所述查询语句加载所述待查询数据文件。
可选地,所述FPGA在获取所述数据块时,具体用于:
在本地内存申请空间;并从DDR中将所述数据块加载到所述空间得到数据列。
可选地,所述FPGA在按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算时,具体用于:
在数据向量中加载所述数据列中的数据;判断所述数据向量中的数据是否满足SQL分组查询中聚合函数的查询条件;若是,执行所述SQL分组查询聚合函数的计算操作,并将结果向量相应位的数据由第一标志位改写为第二标志位;根据所述聚合函数的查询条件合并所述结果向量得到计算结果。
可选地,所述FPGA在按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算时具体用于:
以unroll循环展开的方式按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算。
本申请所提供的分组查询中聚合函数的数据处理方法中,主CPU将待查询数据文件划分成数据块,并将所述数据块分配到多个计算节点;各计算节点CPU分别将所述数据块传输给FPGA,所述FPGA与所述计算节点CPU通过PCIe接口对应连接;所述FPGA获取所述数据块,按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算,并通过所述计算节点CPU向所述主CPU返回计算结果;所述分组查询中聚合函数的计算算法的代码采用Opencl语言并行优化实现,并移植和部署在所述FPGA上;所述主CPU合并所述计算结果,得到最终的查询结果。
可见,相比于现有技术,本申请所提供的分组查询中聚合函数的数据处理方法,通过设置与各个计算节点CPU采用PCIe接口对应连接的FPGA,构成了异构并行加速计算***,利用FPGA硬件并行的特点,在FPGA上利用Opencl高级综合语言进行分组查询聚合函数计算算法的并行优化实现,,以便于提高对分块之后的数据进行分组查询计算的计算速度。通过各个FPGA有效地提高单个计算节点的计算能力和计算速度,进而可以快速获得整个待查询数据文件的查询结果,提高分组查询计算的速度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。
图1为本申请所提供的分组查询中聚合函数的数据处理方法的硬件场景示意图;
图2为本申请所提供的分组查询中聚合函数的数据处理方法的流程图;
图3为图2中FPGA对数据块进行SQL分组查询聚合函数计算的流程图;
图4为FPGA对两个数据列进行SQL分组查询聚合函数计算的流程图;
图5为本申请所提供的一种分组查询中聚合函数的数据处理***的结构框图。
具体实施方式
为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请所提供的分组查询中聚合函数的数据处理方法的硬件场景示意图,包括主服务器101、子服务器102、FPGA(Field Programmable Gate Array,现场可编程门阵列)103。
主服务器101的主CPU通过响应主机端程序,可以完成相应的数据库操作,实现人机交互。子服务器102的CPU,即计算节点CPU,与FGPA103通过PCIe接口对应连接,构成了计算节点,具有单独对数据进行处理的能力。不同计算节点中的子服务器102通过通信网络连接起来,并受到主服务器101的主CPU的统一控制和管理。
请参考图2,图2为本申请所提供的分组查询中聚合函数的数据处理方法的流程图。该方法具体包括以下步骤:
步骤201:主CPU将待查询数据文件划分成数据块。
主CPU是在整个大数据处理***中管理各种数据操作进程的控制中心。当对数据库进行分组查询操作时,由于数据规模一般都比较大,因此主CPU首先将待查询数据文件划分成数据块,以便于后续的查询操作的进行。
具体地,所述待查询数据文件可以是主CPU在接收到查询语句之后,依据所述查询语句从指定存储区加载得到的。
步骤202:主CPU将数据块分配到多个计算节点。
主CPU将各个数据块通过通信网络分别分配到多个计算节点中,以便各个计算节点分别对各自的数据块进行并行处理。
步骤203:各计算节点CPU分别将数据块传输给FPGA。
如前所述,本申请所提供的分组查询中聚合函数的数据处理方法中,FPGA与计算节点中的计算节点CPU通过PCIe接口对应连接,可以实现数据的传输通信。计算节点CPU在接收到主CPU分配的数据块之后,即可将数据块通过数据接口传输给FPGA,以便FPGA对该数据块进行处理,执行分组查询操作。
步骤204:FPGA获取数据块。
具体地,当FPGA在获取计算节点传输的数据块时,首先在其本地内存中申请足够的存储空间,然后可以从DDR(Double Data Rate,双倍速率同步动态随机存储器)中将计算节点CPU传输来的数据块加载到所申请到的存储空间中,得到数据列,以便在后续步骤中针对数据列进行并行分组查询中聚合函数的计算。
值得一提的是,将数据块存储在FPGA的本地内存中,可以减少计算节点通信网络中全局内存的访问和使用,进而提升计算节点的计算性能,提高分组查询计算的速度。
步骤205:FPGA按照分组查询中聚合函数的计算算法对数据块进行SQL分组查询聚合函数的计算。
由于FPGA可以实现异构加速计算,因此可以将分组查询中聚合函数的计算算法的代码采用Opencl高级综合语言并行优化实现,并高效移植和部署到各个FPGA上,以便利用FPGA对数据块进行SQL分组查询聚合函数的计算。在分布式***框架下,各个FPGA分别按照分组查询中聚合函数的计算算法对其获取到的数据块进行SQL分组查询聚合函数的计算,得到该数据块的计算结果。利用FPGA的硬件并行的优势,可以大大提升各个计算节点处理数据的速度,实现异构并行加速。
需要说明的是,这里所述的SQL分组查询中聚合函数的计算具体可以为分组求和、分组求算数平均值、分组求最值等,可分别使用相应的聚合函数,通过Opencl编程语言在FPGA中实现,本申请实施例对SQL分组查询聚合函数计算的具体内容并不做限定。
步骤206:FPGA通过计算节点CPU向主CPU返回计算结果。
每个计算节点中的FPGA,将其在步骤205中得到的计算结果经PCIe接口传输给对应的计算节点CPU,计算节点CPU再进一步将该计算结果经通信网络返回给主CPU。
步骤207:主CPU合并计算结果,得到最终的查询结果。
在分布式***框架下,主CPU接收到的来自各个计算节点的计算结果,分别对应着分配到各个计算节点的数据块,因此,主CPU可以将各个计算结果进行合并,得到待查询数据文件的最终的查询结果。
可见,本申请所提供的分组查询中聚合函数的数据处理方法利用FPGA构成了异构并行加速计算***。之所以采用FPGA进行数据库分组查询聚合函数的异构计算,是因为FPGA具有硬件并行的优势,在每个时钟周期内相比较CPU可以执行较多的处理任务,为满足应用需求提供快速的响应时间;此外,它还具有动态可重构、稳定性良好、低功耗等优点,因此,非常适合作为异构计算中的加速器件。采用FPGA作为硬件加速器件,利用其硬件并行的优势进行异构加速计算,可以大大提高大数据处理框架中单个节点的计算能力,降低其数据中心的功耗,同时还可以减少因计算集群的快速扩张带来的网络传输开销。因此,通过将分组查询聚合函数的计算算法采用Opencl高级综合语言在FPGA上进行并行优化实现,并在各个计算节点中分别使用FPGA进行计算,可以有效提高对整个待查询数据文件的分组查询聚合函数计算的速度。
请参考图3,图3为图2中FPGA对数据块进行SQL分组查询聚合函数的计算的流程图,可以包括以下步骤:
步骤301:在数据向量中加载数据列中的数据。
FPGA在获取数据块得到数据列之后,针对每个数据列,可以定义一个数据向量,然后将该数据列中的数据加载到该数据向量中。每个数据列的数据向量的数据位数与该数据列的数据位数相一致。
步骤302:判断数据向量中的数据是否满足SQL分组查询中聚合函数的查询条件;若是,进入步骤303。
对每个数据向量中的每个数据进行判断:判断该位数据是否满足SQL分组查询中聚合函数的查询条件;若是,则进入步骤303以完成相应的后续操作。当然,FPGA针对每个数据向量中的每个数据的判断是并行完成的,可以有效提高数据的处理速度。
步骤303:执行SQL分组查询聚合函数的计算操作,并将结果向量中相应位的数据由第一标志位改写为第二标志位。
如前所述,SQL分组查询聚合函数的计算具体可以为多种内容,并通过相应的聚合函数得以实现。FPGA根据SQL分组查询中的聚合函数,对经步骤302判断为符合查询条件的数据,执行SQL分组查询聚合函数的计算操作。同时,为了区分和表示该位数据是否符合查询条件,可以将结果向量中的相应位的数据由第一标志位改写为第二标志位。
其中,结果向量、数据向量和数据列均是一一对应的关系,即结果向量中的数据,表示的是对应的数据向量或数据列中的相应位的数据是否符合聚合函数的查询条件。为了区分和表示,结果向量中的所有数据可以默认初始化为第一标志位;当判断数据向量中相应位的数据符合聚合函数的查询条件时,可以将结果向量中相应位的数据改写为第二标志位。具体的,可以将第一标志位设置为0,将第二标志位设置为1;或者将第一标志位设置为1,将第二标志位设置为0,本申请对此并不做限定。
需要说明的是,本步骤中,可以先执行SQL分组查询聚合函数的计算操作,在将结果向量中相应位数据由第一标志位改写为第二标志位,也可以先将结果向量中相应位数据由第一标志位改写为第二标志位,再执行SQL分组查询聚合函数的计算操作,本申请实施例对两者的先后顺序并不做限定,可依据具体情况和编程习惯进行选择。
值得一提的是,在本申请实施例中,在具体进行SQL分组查询聚合函数的计算时,优选以unroll循环展开的方式对数据进行处理,即所述分组查询中聚合函数的计算算法优选以unroll循环展开的方式编写代码进行实现,以进一步增加FPGA在每个时钟周期内的工作量,从而缩短整个算法运行的时间,进一步提高分组查询聚合函数的计算速度。
步骤304:根据聚合函数的查询条件合并结果向量得到计算结果。
针对经过步骤303得到的多个数据列各自对应的结果向量,FPGA根据聚合函数的查询条件对其进行合并,得到该计算节点的数据块的计算结果,以便于后续步骤的完成。
下面,以待查询的数据列为两个的情况为例,具体介绍FPGA进行SQL分组查询计算的过程,其流程图如图4所示,包括以下步骤:
步骤401:在数据向量1中加载数据列1的数据;在数据向量2中加载数据列2的数据。
以待查询的数据列为两个的情况为例,可以将所述的两个数据列分别命名为数据列1和数据列2,各自对应的数据向量分别命名为数据向量1和数据向量2,并将两个数据列分别加载到各自对应的数据向量中。容易理解的是,数据向量1与数据列1数据位数相同;数据向量2与数据列2数据位数相同。
步骤402:以unroll循环展开方式判断数据向量1和数据向量2中的每位数据是否满足聚合函数的查询条件;若是,进入步骤403。
对数据向量1和数据向量2中的每位数据并行进行判断,若满足聚合函数的查询操作,则进入步骤403。
并且,本实施例中步骤402中的判断操作以及后续步骤403和404中针对判断结果所执行的一系列操作采用unroll循环展开的方式进行,可以进一步提升数据处理的速度。
步骤403:执行SQL分组查询聚合函数的计算操作,并将结果向量1或结果向量2中相应位的数据由0改写为1。
同样可以理解的是,结果向量1与数据列1数据位数相同;而结果向量2与数据列2数据位数相同。
这里将前文所述的结果向量的数据的第一标志位设置为0、第二标志位设置为1,当然也可采用其他设置方式,这里不再赘述。若数据向量1中的数据经过步骤402判断为符合聚合函数查询条件时,即将结果向量1中相应位的数据由0改写为1;同理,若数据向量2中的数据被判断为符合聚合函数的查询条件时,则将结果向量2中相应位的数据由0改写为1。
步骤404:根据聚合函数的查询条件合并结果向量1和结果向量2,得到计算结果。
将经过步骤403处理后的结果向量1和结果向量2进行合并,即可得到该计算节点所有数据的计算结果,从而以便于返回该计算结果以完成接下来的步骤。
下面对本发明实施例提供的分组查询中聚合函数的数据处理***进行介绍。下文描述的分组查询中聚合函数的数据处理***与上文描述的分组查询中聚合函数的数据处理方法可相互对应参照。
请参阅图5,图5为本申请所提供的一种分组查询中聚合函数的数据处理***的结构框图;包括主CPU501、计算节点CPU502、FPGA503。
主CPU501通过通信网络和多个计算节点CPU502连接,通过主机端程序可以控制各个计算节点间的数据传输和程序调度。计算节点具体是由计算节点CPU502和FPGA503所构成的,并且计算节点CPU502和FPGA503之间采用PCIe高速接口实现连接。每个FPGA503上均移植和部署了分组查询中聚合函数的计算算法的Opencl语言并行优化代码。每个计算节点均具有单独存储和处理数据的能力,多个计算节点在主CPU501的统一控制和管理下,构成了异构并行加速计算***。
主CPU501用于将待查询数据文件划分成数据块,并将所述数据块分配到多个计算节点。具体地,在将待查询数据文件划分成数据块之前,主CPU501还用于解析程序中的查询语句,并依据所述查询语句从指定存储区中加载待查询数据文件。当FPGA503返回计算结果后,主CPU501对来自不同计算节点的FPGA503的不同计算结果进行合并,得到待查询数据文件完整的最终查询结果。
计算节点CPU502从通信网络中接收到来自主CPU501的数据块后,将该数据块传输给FPGA503,以便FPGA503对该数据块执行SQL分组查询聚合函数的计算操作得到计算结果,从而向主CPU501传递FPGA503返回的计算结果。
FPGA503作为本申请提供的分组查询中聚合函数的数据处理***中的硬件加速器件,在从计算节点CPU502获取到数据块之后,用于按照分组查询中聚合函数的计算算法对该数据块进行SQL分组查询聚合函数的计算,以获得该数据块的计算结果,并通过计算节点CPU502向主CPU501返回计算结果。如前所述,所述分组查询聚合函数的计算算法采用Opencl高级综合语言并行优化实现,并高效移植和部署到各个FPGA上,以便利用FPGA对数据块进行SQL分组查询聚合函数的计算。并且,所述分组查询中聚合函数的计算算法优选以unroll循环展开的方式编写代码进行实现,以便在FPGA进行SQL分组查询聚合函数的计算时,进一步增加FPGA在每个时钟周期内的工作量,从而提高分组查询聚合函数的计算速度。
其中,当FPGA503从计算节点CPU502获取数据块时,具体用于在本地内存申请空间,并从DDR中将计算节点502传输的数据块加载到申请的空间得到数据列。而当FPGA503进行SQL分组查询聚合函数的计算时,其首先在数据向量中加载数据列中的数据;然后判断所述数据向量中的数据是否满足SQL分组查询计算中聚合函数的查询条件;若是,执行所述SQL分组查询聚合函数的计算操作,并将结果向量相应位的数据由第一标志位改写为第二标志位;最后根据所述聚合函数的查询条件合并所述结果向量得到计算结果。
可见,本申请所提供的分组查询中聚合函数的数据处理***,通过在每个计算节点中设置FPGA503,并在FPGA503上移植和部署了分组查询中聚合函数计算算法的Opencl语言并行优化代码,构成了异构并行加速计算***,因而可以利用FPGA503的硬件并行特点,加速单个计算节点的处理进程,进而实现对整个待查询文件进行分组查询聚合函数的数据处理进程的加速。
本申请中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的***而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的分组查询中聚合函数的数据处理方法及***进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (6)
1.一种分组查询中聚合函数的数据处理方法,其特征在于,包括以下步骤:
主服务器的主CPU将待查询数据文件划分成数据块,并将所述数据块分配到多个计算节点;
各计算节点CPU分别将所述数据块传输给FPGA,所述FPGA与所述计算节点CPU通过PCIe接口对应连接;
所述FPGA获取所述数据块,按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算,并通过所述计算节点CPU向所述主CPU返回计算结果;所述分组查询中聚合函数的计算算法的代码采用Opencl语言并行优化实现,并移植和部署在所述FPGA上;
所述主CPU合并所述计算结果,得到最终的查询结果;
其中,所述FPGA获取所述数据块包括:所述FPGA在本地内存申请空间;从DDR中将所述数据块加载到所述空间得到数据列;
并且,所述FPGA按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算包括:
在数据向量中加载所述数据列中的数据;
判断所述数据向量中的数据是否满足SQL分组查询中聚合函数的查询条件;若是,执行SQL分组查询聚合函数的计算操作,并将结果向量中相应位的数据由第一标志位改写为第二标志位;
根据所述聚合函数的查询条件合并所述结果向量得到计算结果。
2.根据权利要求1所述的分组查询中聚合函数的数据处理方法,其特征在于,在所述主CPU将待查询数据文件划分成数据块之前,还包括:
所述主CPU解析查询语句;
依据所述查询语句加载所述待查询数据文件。
3.根据权利要求1所述的分组查询中聚合函数的数据处理方法,其特征在于,所述FPGA按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算包括:
以unroll循环展开的方式按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算。
4.一种分组查询中聚合函数的数据处理***,其特征在于,包括:
主服务器的主CPU:用于将待查询数据文件划分成数据块,并将所述数据块分配到多个计算节点;接收并合并各个FPGA进行SQL分组查询聚合函数计算的计算结果,得到最终的查询结果,其中,所述FPGA与所述计算节点CPU通过PCIe接口对应连接;
计算节点CPU:用于将分配得到的所述数据块传输给所述FPGA,并向所述主CPU传递所述FPGA返回的所述计算结果;
所述FPGA:用于获取所述数据块,按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算,并通过所述计算节点CPU向所述主CPU返回所述计算结果;所述分组查询中聚合函数的计算算法的代码采用Opencl语言并行优化实现,并移植和部署在所述FPGA上;
其中,所述FPGA具体用于:在本地内存申请空间;并从DDR中将所述数据块加载到所述空间得到数据列;
所述FPGA具体用于:
在数据向量中加载所述数据列中的数据;判断所述数据向量中的数据是否满足SQL分组查询中聚合函数的查询条件;若是,执行SQL分组查询聚合函数的计算操作,并将结果向量相应位的数据由第一标志位改写为第二标志位;根据所述聚合函数的查询条件合并所述结果向量得到计算结果。
5.根据权利要求4所述分组查询中聚合函数的数据处理***,其特征在于,所述主CPU还用于:
解析查询语句;依据所述查询语句加载所述待查询数据文件。
6.根据权利要求4所述分组查询中聚合函数的数据处理***,其特征在于,所述FPGA具体用于:
以unroll循环展开的方式按照分组查询中聚合函数的计算算法对所述数据块进行SQL分组查询聚合函数的计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710351866.0A CN107122490B (zh) | 2017-05-18 | 2017-05-18 | 一种分组查询中聚合函数的数据处理方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710351866.0A CN107122490B (zh) | 2017-05-18 | 2017-05-18 | 一种分组查询中聚合函数的数据处理方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122490A CN107122490A (zh) | 2017-09-01 |
CN107122490B true CN107122490B (zh) | 2021-01-29 |
Family
ID=59727519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710351866.0A Active CN107122490B (zh) | 2017-05-18 | 2017-05-18 | 一种分组查询中聚合函数的数据处理方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122490B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107612682A (zh) * | 2017-09-25 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于sha512算法的数据处理方法、装置及*** |
CN107612681A (zh) * | 2017-09-25 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于sm3算法的数据处理方法、装置及*** |
CN107704268A (zh) * | 2017-09-27 | 2018-02-16 | 郑州云海信息技术有限公司 | Md5哈希函数计算方法、***及计算机可读存储介质 |
CN108108472B (zh) * | 2018-01-02 | 2022-05-31 | 联想(北京)有限公司 | 数据处理方法以及服务器 |
CN108984470A (zh) * | 2018-06-19 | 2018-12-11 | 四川斐讯信息技术有限公司 | 一种fpga矿机算力的提升***及方法 |
CN110209631A (zh) * | 2019-05-10 | 2019-09-06 | 普华诚信信息技术有限公司 | 大数据处理方法及其处理*** |
CN111614651A (zh) * | 2020-05-14 | 2020-09-01 | 南京艾科朗克信息科技有限公司 | 一种基于fpga的低延迟tds协议解析的方法 |
CN111858038A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | Fpga板卡内存数据的读取方法、装置及介质 |
CN112328620A (zh) * | 2020-11-05 | 2021-02-05 | 浪潮云信息技术股份公司 | 一种分布式数据库查询加速方法 |
CN116305192B (zh) * | 2023-02-07 | 2023-11-14 | 成都海泰方圆科技有限公司 | 数据文件的处理方法、装置、电子设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8214788B2 (en) * | 2008-03-08 | 2012-07-03 | Mentor Graphics Corporation | High-frequency VLSI interconnect and intentional inductor impedance extraction in the presence of a multi-layer conductive substrate |
CN103631911B (zh) * | 2013-11-27 | 2017-11-03 | 中国人民大学 | 基于数组存储和向量处理的olap查询处理方法 |
CN105159610B (zh) * | 2015-09-01 | 2018-03-09 | 浪潮(北京)电子信息产业有限公司 | 大规模数据处理***及方法 |
CN106547627A (zh) * | 2016-11-24 | 2017-03-29 | 郑州云海信息技术有限公司 | 一种Spark MLlib数据处理加速的方法及*** |
CN106598738A (zh) * | 2016-12-13 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种计算机集群***及其并行计算方法 |
-
2017
- 2017-05-18 CN CN201710351866.0A patent/CN107122490B/zh active Active
Non-Patent Citations (1)
Title |
---|
OpenCL程序优化;黄乐天等;《FPGA异构计算 基于OpenCL的开发方法》;西安电子科技大学出版社;20150731;第77-81页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107122490A (zh) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122490B (zh) | 一种分组查询中聚合函数的数据处理方法及*** | |
US10606654B2 (en) | Data processing method and apparatus | |
CN107437110B (zh) | 卷积神经网络的分块卷积优化方法及装置 | |
US9152669B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using stationary tables | |
CN104615488A (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
CN105550274B (zh) | 双副本并行数据库的查询方法和装置 | |
US10120717B2 (en) | Method for optimizing the size of a data subset of a processing space for improved execution performance | |
CN112236760B (zh) | 一种图数据的更新方法、***、计算机可读存储介质及设备 | |
CN106776455B (zh) | 一种单机多gpu通信的方法及装置 | |
US20190228009A1 (en) | Information processing system and information processing method | |
US11023825B2 (en) | Platform as a service cloud server and machine learning data processing method thereof | |
CN117311998B (zh) | 一种大模型部署方法及*** | |
CN111414961A (zh) | 一种基于任务并行的细粒度分布式深度森林训练方法 | |
CN111610977B (zh) | 一种编译方法和相关装置 | |
CN111858656A (zh) | 一种基于分布式架构的静态数据的查询方法和设备 | |
CN108334532A (zh) | 一种基于Spark的Eclat并行化方法、***及装置 | |
CN114860460B (zh) | 一种数据库加速的方法、装置、计算机设备 | |
CN115982230A (zh) | 数据库的跨数据源查询方法、***、设备及存储介质 | |
CN111737347B (zh) | 在Spark平台顺序切分数据的方法及装置 | |
CN116010093A (zh) | 数据处理方法、装置、计算机设备和可读存储介质 | |
US11966783B1 (en) | Real time scheduling using expected application resource usage | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
CN113157806A (zh) | 网格数据分布式存储服务***、方法、装置、设备及介质 | |
CN116244059A (zh) | 算子调优方法、装置、电子设备及存储介质 | |
CN111338776B (zh) | 调度方法及相关装置 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20201202 Address after: 215100 No. 1 Guanpu Road, Guoxiang Street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd. Address before: 450018 Henan province Zheng Dong New District of Zhengzhou City Xinyi Road No. 278 16 floor room 1601 Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |