CN116795875A - 数据处理系统、方法及存储介质 - Google Patents

数据处理系统、方法及存储介质 Download PDF

Info

Publication number
CN116795875A
CN116795875A CN202310657831.5A CN202310657831A CN116795875A CN 116795875 A CN116795875 A CN 116795875A CN 202310657831 A CN202310657831 A CN 202310657831A CN 116795875 A CN116795875 A CN 116795875A
Authority
CN
China
Prior art keywords
target data
query
data block
data
target
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.)
Pending
Application number
CN202310657831.5A
Other languages
English (en)
Inventor
李峰
龚瑞楠
施云峰
张振祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202310657831.5A priority Critical patent/CN116795875A/zh
Publication of CN116795875A publication Critical patent/CN116795875A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种数据处理系统、方法及存储介质。在本申请实施例中,在利用并行处理模块等异构资源进行数据查询加速的方案中,主机侧的CPU可根据当前批次的目标数据块的查询结果,从目标数据块中获取满足查询条件的数据;还可根据目标数据块的查询结果,以目标数据块的数据量为基准,缩小下发给并行处理模块的下一批次的数据块的数据量,实现下发给并行处理模块的数据块大小的动态调整。其中,根据当前批次的目标数据块的查询结果,缩小数据块大小,可尽可能降低CPU侧软件从数据块中查找满足查询条件的工作量,使得CPU侧软件可快速获取满足查询条件的数据,提高数据查询效率。

Description

数据处理系统、方法及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理系统、方法及存储介质。
背景技术
数据库是一个按数据结构来存储和管理数据的计算机软件系统,经常需要为不同用户提供不同维度的数据。因此,数据查询是数据库中的一项基本功能。在一些现有方案中,查询引擎所在设备的中央处理器(Central Processing Unit,CPU)使用数据查询算子进行数据查询。这种CPU查询方式,查询速度较慢。为了提高数据查询速度,一些现有方案中,将数据库的数据查询功能卸载至可编程门阵列(Field-Programmable Gate Array,FPGA)等异构资源设备,由使用数据查询算子进行数据查询,实现了数据查询的硬件卸载,有助于提高数据查询速度。
本申请的研究者注意到,现有利用异构资源进行数查询的方案中,考虑到FPGA的内存相对较小但并行计算能力强,而CPU的内存相对较大但并行计算能力相对弱,一般采用CPU将待查询数据切分为固定数据大小的数据块;采用FPGA对数据库进行数据查询,之后由CPU根据查询结果,从待查询数据中查找到符合查询需求的原始数据。这种按照固定数据量切分数据块的方案,数据查询效率受到了一定限制。
发明内容
本申请的多个方面提供一种数据处理系统、方法及存储介质,用以实现数据块大小的动态调整,有助于提高数据查询效率。
本申请实施例提供一种数据处理系统,包括:主机及并行处理模块;所述主机与所述并行处理模块通信连接;所述主机包括:中央处理器CPU;
所述CPU,用于获取查询请求对应的待查询数据;按照数据块的形式,将所述待查询数据分批次下发至所述并行处理模块;以及,将所述查询请求包含的查询条件下发至所述并行处理模块;
所述并行处理模块,用于根据所述查询条件,对接收到的当前批次的目标数据块进行并行查询,以得到所述目标数据块的查询结果;将所述目标数据块的查询结果提供至所述CPU;
所述CPU,还用于根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据;并根据所述目标数据块的查询结果,以所述目标数据块的数据量为基准,缩小下发给所述并行处理模块的下一批次的数据块的数据量。
本申请实施例还提供一种数据处理方法,包括:
获取查询请求对应的待查询数据;
按照数据块的形式,将所述待查询数据分批次下发至并行处理模块;以及,将所述查询请求包含的查询条件下发至所述并行处理模块,以供所述并行处理模块根据所述查询条件,对接收到的当前批次的目标数据块进行并行查询,得到所述目标数据块的查询结果并返回;
根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据;
根据所述目标数据块的查询结果,以所述目标数据块的数据量为基准,缩小下发给所述并行处理模块的下一批次的数据块的数据量。
本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述数据处理方法中的步骤。
在本申请实施例中,在利用并行处理模块等异构资源进行数据查询加速的方案中,主机侧的CPU可根据当前批次的目标数据块的查询结果,从目标数据块中获取满足查询条件的数据;还可根据目标数据块的查询结果,以目标数据块的数据量为基准,缩小下发给并行处理模块的下一批次的数据块的数据量,实现下发给并行处理模块的数据块大小的动态调整。其中,根据当前批次的目标数据块的查询结果,缩小数据块大小,可尽可能降低CPU侧软件从数据块中查找满足查询条件的工作量,使得CPU侧软件可快速获取满足查询条件的数据,提高数据查询效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1和图2为本申请实施例提供的数据处理系统的结构示意图;
图3为本申请实施例提供的并行处理模块的管理模块对查询结果进行处理的过程示意图;
图4为本申请实施例提供的查询引擎获取满足查询条件的数据的过程示意图;
图5为本申请实施例提供的数据处理方法的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中,在利用并行处理模块等异构资源进行数据查询加速的方案中,主机侧的CPU可根据当前批次的目标数据块的查询结果,从目标数据块中获取满足查询条件的数据;还可根据目标数据块的查询结果,以目标数据块的数据量为基准,缩小下发给并行处理模块的下一批次的数据块的数据量,实现下发给并行处理模块的数据块大小的动态调整。其中,根据当前批次的目标数据块的查询结果,缩小数据块大小,可尽可能降低CPU侧软件从数据块中查找满足查询条件的工作量,使得CPU侧软件可快速获取满足查询条件的数据,提高数据查询效率。
以下结合附图,详细说明本申请各实施例提供的技术方案。
应注意到:相同的标号在下面的附图以及实施例中表示同一物体,因此,一旦某一物体在一个附图或实施例中被定义,则在随后的附图和实施例中不需要对其进行进一步讨论。
图1为本申请实施例提供的数据处理系统的结构示意图。结合图1,该数据处理系统包括:主机10和并行处理模块20。
在本实施例中,主机10是指任何具有计算、存储及通信功能的计算机设备。例如,主机10可以为服务器、电脑、手机等。在本实施例中,主机可包括:通用处理单元等。在本实施例中,不限定通用处理单元的数量。通用处理单元可以为至少1个,即1个或多个;每个通用处理单元可以为单核处理单元,也可为多核处理单元。
在本实施例中,通用处理单元一般为设置于主机10的主板的处理芯片,如主机的中央处理器(Central Processing Unit,CPU)101等,不能实现单机扩展。通用处理单元可以为任何具有处理计算能力的处理器件。通用处理单元可为串行处理单元,也可为并行处理单元。例如,通用处理单元可以为通用处理器,如CPU等。并行处理单元是指可并行计算处理的处理器件。例如,并行处理单元可以为图形处理单元(Graphics Processing Unit,GPU)或现场可编程门阵列(Field-Programmable Gate Array,FPGA)等。可选地,通用处理单元的内存大于并行处理单元的内存。图1中仅以通用处理单元为CPU为例进行图示,但不构成限定。
上述并行处理模块20是指任何具有并行计算和存储功能的设备或器件。并行处理模块20可为GPU或可编程硬件器件等。并行处理模块20可为独立的设备或器件,也可集成于主机10的其它组件中。例如,如图2所示,主机10还可安装有网卡30。其中,并行处理模块20可为独立的器件,也可集成于网卡30中。或者,并行处理模块20的功能也可由网卡30实现。
其中,可编程硬件器件可为电子器件搭建的硬件处理器,也可为采用硬件描述语言(Hardware Description Language,HDL)进行数据处理的硬件处理器。其中,硬件描述语言可以为超高速集成电路硬件描述语言(Very-High-Speed Integrated CircuitHardware Description Language,VHDL)、Verilog HDL、System Verilog或System C等。相应地,并行处理模块20可为FPGA、可编程阵列逻辑器件(Programmable Array Logic,PAL)、通用阵列逻辑器件(General Array Logic,GAL)、复杂可编程逻辑器件(ComplexProgrammable Logic Device,CPLD)等。或者,并行处理模块20也可为专用集成电路(Application Specific Integrated Circuit,ASIC)或数据处理单元(Data ProcessingUnit,DPU)等。其中,DPU是一种具有硬件加速功能的专用电子电路,用于以数据为中心的计算。
在本实施例中,并行处理模块20与主机10通信连接,确切地,并行处理模块块20与主机10的CPU 101通信连接。具体地,并行处理模块20与主机10可通过总线接口通信连接。其中,总线接口可为串行总线接口,如快捷外围部件互连(Peripheral ComponentInterconnect Express,PCIe)总线接口、外围部件互连(Peripheral ComponentInterconnect,PCI)总线接口、超级通道互联(Ultra Path Interconnect,UPI)总线接口、通用串行总线(Universal Serial Bus,USB)串行接口、RS485接口或RS232接口等。优选地,总线接口为PCIe接口,可提高并行处理模块20与主机10之间的数据传输速率。
主机10的总线接口可根据主机10的规格进行扩展,一般主机10的通信接口为多个。本申请实施例中的“多”均是指不止1个,即2个或2个以上。在并行处理模块20与主机10通过总线接口通信连接时,并行处理模块20可为1个或多个。多个并行处理模块20的实现形态可以相同,也可部分或全部不同。例如,在一些实施例中,多个并行处理模块20可全部为FPGA,或者全部为DPU、ASIC或GPU等。在另一些实施例中,多个并行处理模块20可部分为FPGA,部分为DPU、ASIC芯片或GPU等,但不限于此。
在一些实施例中,并行处理模块20及主机10可设置于不同的物理机,主机10及并行处理模块20之间可通过网络通信连接。例如,主机10及并行处理模块20可设置于不同的云服务器中,通过网络通信连接;等等。图1中仅以主机10与并行处理模块20设置于同一物理机上进行图示,但不构成限定。值得说明的是,上述数据处理系统可实现为计算设备,也可实现为分立的系统等。
在实际使用中,数据库一般计算和存储分离。存储节点用于存储数据,计算节点用于进行数据查询及数据查询过程中的计算操作等。数据查询过程中的计算操作可为聚合运算等。为了提高数据查询速度,一些数据库还设置缓存节点,可将一些查询频率较高的热数据存储在缓存节点上。存储节点一般使用磁盘存储数据,缓存节点一般使用内存或固态硬盘等存储数据。其中,缓存节点的数据读取速度高于存储节点。缓存节点和计算节点可实现为同一物理机,也可实现为不同的物理机。
在本实施例中,主机10可为计算节点所在物理机,也可为缓存节点所在物理机,或者为数据源的查询引擎所在的物理机等。数据源用于存储数据。数据源可为数据库或数据库所在服务器。数据库可为分析型数据库、关系型数据库或其它类型的数据库。在本实施例中,主机10部署有查询引擎,可获取针对数据源的查询请求。该查询请求可包括查询条件。查询条件用于限定查询范围,以及筛选出的最终数据的条件。对于列存储格式的数据源来说,查询条件以待查询列来限定查询范围。在一些实施例中,数据源以parquet等列式存储文件格式存储数据。
在本实施例中,主机10中的CPU 101可获取查询请求;并从查询请求中获取查询条件,之后,可根据查询条件,从数据源中读取待查询数据。
具体地,如图2所示,CPU 101可包括:计算引擎101a。计算引擎是指部署于应用层的软件功能模块或插件等,用于实现应用层的数据管理。计算引擎101a可接收查询请求,并从查询请求中获取查询条件,之后,可根据查询条件,从数据源中读取待查询数据。
在一些实施例中,数据源以列存储文件格式存储数据,则可根据查询条件,从数据源中读取查询请求对应的待查询列,作为待查询数据。即,CPU 101(计算引擎101a)从数据源中读取查询条件限定的待查询列,作为待查询数据。进一步,CPU 101可将待查询数据存储至主机10的内存102的连续内存空间。
由于内存存储格式与数据源存储格式不同,CPU 101(具体为计算引擎101a)还可将待查询数据(即待查询列)转换为内存支持的列存储格式。内存支持的列存储格式可为Arrow格式。Arrow为内存支持的一种列存储格式。相应地,CPU 101可将具有内存支持的列存储格式(如Arrow格式)的待查询列,存储至主机10的内存102的连续内存空间。
在本实施例中,为了对主机10的CPU进行减压,降低CPU到达性能瓶颈的概率,主机10可通过虚拟化技术将并行处理模块20映射为主机的虚拟设备;并通过映射出的虚拟设备,将卸载数据处理功能至并行处理模块20。并行处理模块20由于较强的并行计算能力,可提高数据处理速度。
在本实施例中,并行处理模块20包括:内存201。一般并行处理模块20的内存201的容量小于主机10的内存102的容量。为了节约内存资源,内存201和内存102均以连续内存空间存储数据。
由于并行处理模块20的内存201的容量小于主机10的内存102的容量,因此,在使用并行处理模块20进行异构加速时,CPU 101可将待查询数据切分为多个数据块,并按照数据块的形式,将待查询数据分批次下发至并行处理模块20。CPU 101可一次性将待查询数据切分为多个数据块。或者,CPU 101也可每批次从剩余的未下发的待查询数据中,切分出一个数据块下发至并行处理模块20。
CPU 101每批次下发的数据块的数据量可以相同,也可不同。具体由本申请实施例提供的数据处理方式决定。在本实施例中,CPU 101还可将查询请求包含的查询条件下发至并行处理模块20。其中,CPU 101可在每批次下发数据块时,将查询条件一并下发至并行处理模块20。为了降低数据下发时数据带宽的占用,CPU 101可在第一批次下发数据块时,将查询条件一并下发至并行处理模块20。并行处理模块20可存储查询条件,用于各批次的数据块的查询。当然,CPU 101也可先下发查询条件至并行处理模块20,再分批次下发数据块至并行处理模块20。
具体地,如图2所示,主机10的CPU 101部署有直接内存访问(Direct MemoryAccess,DMA)驱动103;并行处理模块20部署有DMA引擎203。DMA驱动103是指用于驱动DMA引擎203动作的软件功能模块或插件等。在本实施例中,CPU 101在各批次下发数据块时,可调用DMA驱动103驱动DMA引擎203动作。DMA驱动103可向DMA引擎203下发数据查询指令,该数据查询指令可携带该DMA引擎203待读取的数据块的起始内存地址及待读取的数据块的长度。其中,待读取的数据块即为当前批次对应的目标数据块。
进一步,DMA引擎203可响应数据查询指令,根据待读取的数据块的起始内存地址偏移及待读取的数据块的长度,从内存102存储的待查询数据中,采用DMA方式将待读取的数据块(即目标数据块)读取至并行处理模块20的内存中。目标数据块在并行处理模块20的内存201的内存空间是连续的。待读取的数据块即为当前批次读取的目标数据块。
对于并行处理模块20,可根据查询条件,对接收到的当前批次的目标数据块进行并行查询。可选地,并行处理模块20可采用异步的方式,对读取的目标数据块进行并行数据查询,即并行处理模块20无需等待当然数据块数据查询完成,即可读取下一数据块,有助于提高数据查询速度。
在本实施例中,并行处理模块20还包括:1个或多个计算单元202。多个是指2个或2个以上。计算单元(Compute Unit,CU)202是衡量并行处理模块20的计算能力的元单位,为并行计算单元,提供并行计算能力。计算单元202可为由电子器件搭建的硬件处理器,也可为由硬件描述语言编码得到的计算单元。为了提高并行处理模块20的并行计算能力,一般并行处理模块20包括多个计算单元202。
对于并行处理模块20包括多个计算单元202的实施例,并行处理模块20还可将当前批次接收到的目标数据块,切分为多个数据子块;并将多个数据子块分发给该并行处理模块20中的多个计算单元202。多个计算单元202可根据查询条件,并行对数据子块进行查询,以得到多个数据子块的查询结果,即目标数据块的查询结果。关于并行处理模块20对目标数据块进行数据查询的具体实施方式,将在下文实施例中进行描述,在此暂不赘述。
并行处理模块20在得到目标数据块的查询结果之后,可将查询结果提供至主机10的CPU 101。具体地,并行处理模块20中的DMA引擎203,可采用DMA方式将目标数据块的查询结果从并行处理模块20的内存201中,读取至主机10的内存102中,实现将查询结果提供至CPU 101。
查询结果可反映目标数据块哪些数据是满足查询条件的数据。因此,CPU 101可根据目标数据块的查询结果,从目标数据块中获取满足查询条件的数据。该操作可由计算引擎101a完成。
在利用异构资源(即并行处理模块)进行数据查询的方案中,若数据块的数据量过大,会导致并行数据模块20返回的查询结果过多,导致CPU 101根据查询结果查找到符合查询需求的原始数据的时间较长;而若数据块的数据量过小,会增加CPU 101和并行处理模块20之间数据传输次数,降低CPU 101和并行处理模块20的传输带宽。
为了解决该问题,本申请实施例考虑到目标数据块的查询结果可反映目标数据块哪些数据是满足查询条件的,自然可根据查询结果,确定目标数据块中满足查询条件的数据的数据量。若每个批次下发的数据块的数据量相同,当前批次的目标数据块中满足查询条件的数据的数据量,在一定程度上可反映下一批次下发的数据块中满足查询条件的数据的数据量。基于此,在本实施例中,CPU 101还可根据目标数据块的查询结果,以目标数据块的数据量为基准,缩小下发给并行处理模块20的下一批次的数据块的数据量。即根据目标数据块的查询结果,对目标数据块的数据量进行缩小,并将缩小后的数据量,作为下发给并行处理模块20的下一批次的数据块的数据量。
在本申请实施例中,在利用并行处理模块等异构资源进行数据查询加速的方案中,主机侧的CPU可根据当前批次的目标数据块的查询结果,从目标数据块中获取满足查询条件的数据;还可根据目标数据块的查询结果,以目标数据块的数据量为基准,缩小下发给并行处理模块的下一批次的数据块的数据量,实现下发给并行处理模块的数据块大小的动态调整。其中,根据当前批次的目标数据块的查询结果,缩小数据块大小,可尽可能降低CPU侧软件从数据块中查找满足查询条件的工作量,使得CPU侧软件可快速获取满足查询条件的数据,提高数据查询效率。
下面对本申请实施例根据目标数据块的查询结果,缩小数据块大小的具体实施方式进行示例性说明。
在一些实施例中,可根据目标数据块的查询结果,从目标数据块中获取满足查询条件的数据;并根据目标数据块中满足查询条件的数据的数量,以目标数据块的数据量为基准,缩小下发给并行处理模块20的下一批次的数据块的数据量。
由于CPU 101侧软件查找数据块中满足查询条件的数据目的是优先让每批次并行处理模块20返回的查询结果中,满足查询条件的数据为0。因此,若目标数据块中满足查询条件的数据的数量大于0,则以目标数据块的数据量为基准缩小数据块的数据量,以得到下发给并行处理模块20的下一批次的数据块的数据量。具体地,以目标数据块的数据量为基准,采用渐进式方式缩小数据块的数据量。这样可防止直接将数据块的数据量调整的过小,而增加主机CPU和并行处理模块之间的数据传输次数的问题,有助于降低数据传输对主机CPU和并行处理模块的传输带宽的影响。
在本申请实施例中,不限定以目标数据块的数据量为基准,采用渐进式方式缩小数据块的数据量的具体实施方式。在一些实施例中,可按照逐批次降低设定的梯度的方式,缩小数据块的数据量。设定的梯度是指数据量梯度。每个批次降低的梯度可以相同,也可不同。相应地,可在目标数据块的数据量的基础上降低设定的梯度,得到下发给并行处理模块20的下一批次的数据块的数据量。或者,可按照逐批次降低设定的比例的方式,缩小数据块的数据量。设定的比例是指占当前批次下发的目标数据块的数据量的比例,如10%等。每个批次降低的比例可以相同,也可不同。相应地,可在目标数据块的数据量的基础上降低设定的比例,以得到下发给并行处理模块20的下一批次的数据块的数据量。为了防止盲目下调下发给并行处理模块20的下一批次的数据块的数据量,还可设置数据块的数据量范围,即设置数据块的数据量上限和数据量下限。其中,数据块的数据量的上限可由并行处理模块20的数据处理能力和并行处理模块20的内存容量决定。并行处理模块20的数据处理能力是指并行处理模块20最大可处理的数据量。优选地,数据量的上限小于或等于并行处理模块20的数据处理能力和并行处理模块20的内存容量中的较小值。数据块的数据量下限可由CPU 101和并行处理模块20之间的传输带宽性能决定。一般地,数据块的数据量上限可为220kB,数据块的数据量下限可为212kB。即数据块的大小在[212kB,220kB]之间。
一般地,针对多个下发批次中的第一批次,第一批次下发的数据块的数据量为设定的数据量上限,如220kB。当然,若已目标标数据块的数据量为基准缩小数据块的数据量之后,数据块的数据量小于设定的数据量下限,可将设定的数据量下限(如212kB),作为下发给并行处理模块20的下一批次的数据块的数据量。
上述实施例示出的以目标数据块的数据量为基准,缩小数据块的数据量的具体实施方式,仅为示例性说明,并不构成限定。
由于主机的内存102的空间是有限的,而且CPU 101可能无法确定并行处理模块20完成各批次的数据块的查询的先后顺序,因此,为了防止数据块的查询结果在内存102的存储混乱导致查询出错,CPU 101一般预先为数据块的查询结果分配内存区域。待查询数据的内存位置相邻的数据块,其查询结果也是相邻的。
CPU 101可根据预先为数据块的查询结果分配的内存空间的大小,预测数据块中满足查询条件的数据的数量N。例如,可根据预先为数据块的查询结果分配的内存空间的大小,确定数据块中满足查询条件的数据的数据量;并根据数据块中满足查询条件的数据的数据量及数据的单位数据量,预测数据块中满足查询条件的数据的数量N。CPU 101预测出的数据块中满足查询条件的数据的数量N,可作为预先设定的数据块中满足查询条件的数据的目标数量N,即数据块中满足查询条件的数据的数量的上限值。因此,数据块中满足查询条件的数据的目标数量N,是由预先为数据块的查询结果分配的内存空间决定的。
结合图1和图2,上述确定目标数量N的操作,具体可由CPU 101中的计算引擎101a执行。目标数量N表示预期的满足查询条件的结果数量。在一些实施例中,计算引擎101a可将目标数量N下发至并行处理模块的管理模块101b。
其中,管理模块101b为运行在主机的CPU 101中的,对并行处理模块20进行管理的软件功能模块。管理模块101b可用于驱动并行处理模块20,管理CPU 101和并行处理模块20之间的数据搬移、对并行处理模块20进行内存管理及调度等。
在本实施例中,计算引擎101a可将数据查询指令下发至管理模块101b,管理模块101b可将数据查询指令转发至并行处理模块20。该数据查询指令可包括:当前批次下发的目标数据块的起始内存地址和目标数据块的长度(即目标数据块的数据量)。当然,在一些实施例中,数据查询指令还可包括:查询请求包含的查询条件。
并行处理模块20中的DMA引擎203,可采用DMA方式根据目标数据块的起始内存地址和目标数据块的长度,从主机10的内存102中读取目标数据块至并行处理模块20的内存201中。进一步,并行处理模块20可根据查询条件,对目标数据块进行并行数据查询,以得到目标数据块的查询结果。在本申请实施例中,不限定并行处理模块20对目标数据块进行查询的具体实施方式。在一些实施例中,并行处理模块20可根据查询条件,确定数据查询算子。数据查询算子是指数据查询操作的算子,通常由查询条件中的关键字决定。数据查询算子包括但不局限于:条件过滤(Filter)算子、范围查询(Range)算子、扫描操作(Scan)算子及用于完成连接操作的所有算子(即Join算子)等。其中,Filter算子包含过滤条件,用于限定筛选数据的规则。Range算子包含查询范围,用于判断数据是否在给定的范围内。Scan算子用于执行扫描操作。Join算子是用于完成连接操作的所有算子的统称,Join算子本身包含了连接条件。
在确定出数据查询算子之后,并行处理模块20可根据数据查询算子,对目标数据块进行并行查询,以得到目标数据块的初始查询结果。在一些实施例中,目标数据块的初始查询结果可实现为位图(Bitmap)结果。位图结果是利用二进制位值标记的目标数据块中的各字符是否符合查询条件的结果。二进制位值是指1和0。在一些实施例中,1表示符合查询条件;0表示不符合查询条件。在另一些实施例中,也可0表示符合查询条件,1表示不符合查询条件。
其中,数据查询算子不同,并行处理模块20对目标数据块进行并行查询的实施方式不同。在一些实施例中,数据查询算子为条件过滤(Filter)算子。相应地,并行处理模块20从查询条件中,获取条件过滤算子对应的过滤条件;之后,可利用字符串匹配算法,并行对目标数据块与过滤条件进行字符匹配;并利用二进制位值标记目标数据块中的各字符的匹配结果,以得到目标数据块的位图结果。二进制位值为0或1。其中,字符串匹配算法不同,二进制位值不同。
在本申请实施例中,不限定字符串匹配算法的具体实现形式。可选地,字符串匹配算法可为移位与(Shift-and)算法、移位或(Shift-or)算法、Sunday算法或Rabin-Karp算法等。其中,移位与算法利用二进制1标记目标数据块中的各字符的匹配结果,即1表示与过滤条件匹配;0表示不匹配。移位或算法利用二进制0标记目标数据块中的各字符的匹配结果,即0表示与过滤条件匹配;1表示不匹配。
下面以移位与(Shift-and)算法为例,对目标数据块的数据查询过程进行示例性说明。Shift-and算法的总体思路是把模式串(即过滤条件对应的字符串)预处理成一种特殊编码形式,然后根据这种编码形式去逐位匹配文本串(目标数据子块)。
首先对过滤条件对应的字符串进行预处理,利用二进制数位进行编码。可根据过滤条件对应的字符串中的字符在字符串的位次,将该字符编码为位数与字符串位数相同的二进制数。其中,字符所在的数位置1,其它数位置0。例如,如果过滤条件对应的字符串为“abac”,a出现在第0位和第2位,则a的编码信息为:二进制为0101,同样的,b出现在第1位,则b的编码信息为:0010;c出现在第3位,c的编码信息为:1000。
进一步,针对目标数据块中的每一位字符,定义一个对应的状态码数字D,D的第i位为1,则表示以这一位字符为末尾时,目标数据块与过滤条件对应的字符串的0到i位完全匹配。例如过滤条件对应的字符串为“acbace”,目标数据块为“...acbaef..”中的第二个“a”字符,以这个“a”字符作为结尾时,其可能和过滤条件对应的字符串的第0位完全匹配,也可能和过滤条件对应的字符串的前4位(即第0位-第3位)完全匹配,所以“...acbaef..”中的第二个“a”字符的状态码D=20+23=9。
初始状态D=0。假设之前的状态码D已经确定,例如上面的例子D=20+23=9,那么对于一个新的目标数据块而言,已知过滤条件的字符串的前1位或前4位能被完全匹配,那么就检查目标数据块text[i]和过滤条件的字符串的第1位或第4位是不是能完全匹配。新的状态码应等于(D<<1)&(code[text[i]])。其中,D<<1表示将原状态码左移“<<”一位;code[text[i]表示目标字符串的第i位的字符对应的二进制编码。“&”表示按位与。在上面的例子中,i=1,或i=4。若检查的是检查目标数据块和过滤条件的字符串的第1位是否匹配,则i=1;若检查的是目标数据块和过滤条件的字符串的第4位是否匹配,则i=4。
还有一种情况,若code[text[i]]正好等于1,即text[i]字符正好是过滤条件对应字符串的第0位,那么新的D的二进制第0位也应该是1。综合上面两种情况,新的状态码D=((D<<1)∣1)&(code[text[i]])。其中,“∣”表示按位或。若匹配到某一位发现状态码D的二进制第j位是1(j为过滤条件对应的字符串的长度),则说明过滤条件被完全匹配,即匹配成功。
上述仅以移位与(Shif-and)为例,对目标数据块和过滤条件的字符匹配过程进行示例性说明,但不构成限定。移位或(Shift-or)算法与Shif-and算法原理相同,不同的是移位或(Shift-or)算法将Shift-and中核心的“与”运算改为“或”运算,可以节省“D<<1|1”这一个附加的“或1”运算。即移位或(Shift-or)算法中,新的状态码D=D<<1|(code[text[i]])。相较于Shift-and算法,减少了一次位运算(即“或1”运算)。Shift-or算法使用二进制0表示字符匹配。
对于利用字符串匹配算法对目标数据块和过滤条件进行字符匹配的实施例,目标数据块的查询结果为二进制字符串。二进制字符串的长度与目标数据块相等。对于移位与(Shift-and)算法,若目标数据块的查询结果的第i位为1,表示目标数据块的前i位与过滤条件匹配。对于移位或(Shift-or)算法,若目标数据块的查询结果的第i位为0,表示目标数据块的前i位与过滤条件匹配。
在另一些实施例中,数据查询算子可实现为范围查询(Range)算子。相应地,并行处理模块20可从查询条件中,获取范围查询算子对应的查询范围;之后,并行判断目标数据块的字符是否处于查询范围内;并利用二进制位值标记目标数据块中各字符的判断结果,以得到目标数据块的位图结果,作为目标数据块的初始查询结果。可选地,可对目标数据块中处于查询范围内的字符标记为1,不处于查询范围内的字符标记为0。或者,也可对目标数据块中处于查询范围内的字符标记为0,不处于查询范围内的字符标记为1等。
上述仅以并行处理模块20对其当前批次分配的目标数据块的查询过程为例进行了示例性说明。并行处理模块20对各批次分配到的数据块的查询过程相同或相似,均可参见上述实施例的相关内容。
在一些实施例中,并行处理模块20还可在对目标数据块进行并行查询过程中,对目标数据块中满足查询条件的目标数据进行计数,以得到目标数据的数量C。这样,可省去上述实施例中CPU 101对目标数据块中满足查询条件的数据进行数据量计算的过程,可进一步降低CPU 101的软件开销。
由于目标数据的数量C,仅能说明目标数据块中满足查询条件的目标数据的数量,并不能反映目标数据块中哪些数据是满足查询条件的。因此,在一些实施例中,还可将目标数据的数量C及目标数据块的初始查询结果(如位图结果),作为目标数据块的查询结果;并将该查询结果提供给CPU 101。
由于CPU 101根据初始查询结果(如位图结果),在目标数据块中查找满足查询条件的工作量较大,数据查询效率较低。在另一些实施例中,并行处理模块20还可在目标数据块进行并行查询过程中,获取目标数据块中满足查询条件的目标数据的索引;之后,将目标数据的数量C及目标数据的索引,作为目标数据块的查询结果;并将查询结果提供给CPU101。
在实际应用中,由于位图结果(Bitmap)存储的方式是二进制位值,数据量为比特(Bit)量级的;而数据的索引的数据量为字节(Byte)量级的。例如,整数(int)型的索引为4字节;长整型(long)型的索引是8字节,字符串(String)型的索引为几十甚至上百字节。为了节约主机内存空间,一般根据上述预测出的目标数据块中满足查询条件的数据的目标数量N,在目标数据块的查询结果的内存空间中,预先为目标数据的索引设置内存空间。其中,预先为目标数据的索引设置的内存空间可等于单个索引的数据量乘以N。在该实施例中,若目标数据块中满足查询条件的数量C大于预先设置的目标数量N,则会导致目标数据的索引由于内存空间不足,导致主机10的内存102中存储的索引不完整,从而导致无法根据索引,从目标数据块中查找到所有满足查询条件的数据。
为了解决该问题,可将目标数据的数量C、目标数据的索引及目标数据块的初始查询结果(如位图结果),一并作为目标数据块的查询结果;并将该目标数据块的查询结果提供给CPU 101。
具体地,并行处理模块20中的DMA引擎203,可采用DMA方式将目标数据的数量C、目标数据的索引及目标数据块的初始查询结果,从并行处理模块20的内存中读取至主机10中预先为目标数据块的查询结果分配的内存空间。
进一步,CPU 101可根据目标数据块的查询结果及预先设置的满足查询条件的数据的目标数量,从目标数据块中,获取满足查询条件的数据。
在一些实施例中,目标数据块的查询结果包括:目标数据的数量C、目标数据的索引及目标数据块的位图结果。并行处理模块20提供给CPU 101的查询结果可包括:目标数据的数量C、目标数据的索引及目标数据块的初始查询结果(如位图结果)中的至少一种。
在一些实施例中,并行处理模块20提供给CPU 101的查询结果可包括:目标数据的数量C、目标数据的索引及目标数据块的初始查询结果(如位图结果)。相应地,CPU 101可在目标数据的数量C大于0,且小于目标数量N的情况下,根据目标数据的索引,从目标数据块中获取满足查询条件的数据。这主要是因为在目标数据的数量C大于0,且小于目标数量N时,主机的内存101存储的索引是目标数据块中所有满足查询条件的数据的索引;可根据目标数据的索引,从目标数据块中获取满足查询条件的所有数据。而且,利用索引查找数据,比利用位图结果查找数据的工作量较小,相较于直接使用位图结果查找数据可提高数据查询效率。
由于目标数据块中满足查询条件的数量C大于预先设置的目标数量N,则会由于内存空间不足,导致主机10的内存102中存储的索引不完整(即主机10的内存102未存储所有目标数据的索引),从而导致无法根据索引,从目标数据块中查找到所有满足查询条件的数据。为了解决该问题,在本实施例中,CPU 101在目标数据的数量C大于或等于目标数量N的情况下,可根据目标数据块的位图结果,从目标数据块中筛选出满足查询条件的数据。具体地,CPU 101可利用位图结果中,利用位值标记的待查询数据中各字符,与查询条件的匹配结果,从目标数据块中筛选出满足查询条件的数据。进一步,CPU 101还可将满足查询条件的数据提供给发出查询请求的设备等等。
具体地,结合图3和图4,CPU 101中运行的管理模块101b,可读取并行处理模块20返回的查询结果;并判断目标数据的数量C是否等于0;若目标数据的数量C等于0,则将目标数据的数量C=0的结果通知CPU 101中运行的计算引擎101a。计算引擎101a接收目标数据的数量C=0的结果,并根据查询结果,确定下发至并行处理模块20的下一批次的数据块的数据量;之后,将下一批次的数据块下发至并行处理模块20。
接着结合图3和图4,若目标数据的数量C大于0,且小于N,则管理模块101b通知计算引擎101a读取目标数据的索引。计算引擎101a接收目标数据的索引的结果通知,并响应该结果通知,从内存102中读取目标数据的索引;并根据目标数据的索引,从目标数据块中读取满足查询条件的数据。
若目标数据的数量C大于或等于目标数量N,则管理模块101b通知计算引擎101a读取目标数据的位图结果。计算引擎101a读取目标数据的位图结果的结果通知,并响应该结果通知,从内存102中读取目标数据的位图结果;并根据目标数据的位图结果,从目标数据块中读取满足查询条件的数据。
在另一些实施例中,为了降低目标数据块的查询结果对主机内存的占用,还可由并行处理模块20对读取至主机内存中的是哪类查询结果进行判断。具体地,CPU 101可将上述目标数据块中满足查询条件的数据的目标数量N,下发至并行处理模块20。具体地,CPU101可将目标数量N封装至数据查询指令,并通过DMA驱动103将数据查询指令下发至DMA引擎203。该数据查询指令可包括:当前批次下发的目标数据块的起始内存地址和目标数据块的长度(即目标数据块的数据量)及目标数据块中满足查询条件的数据的目标数量N等。当然,在一些实施例中,数据查询指令还可包括:查询请求包含的查询条件。
基于并行处理模块20接收到的目标数量N,并行处理模块20可判断目标数据的数量C是否大于0,并且是否小于目标数量N;若判断结果为目标数据的数量C是否大于0,且小于目标数量N,则并行处理模块20将目标数据的索引从并行处理模块20,读取至主机的内存102。相应地,CPU 101可根据目标数据的索引,从目标数据块中获取满足查询条件的数据。这主要是因为在目标数据的数量C大于0,且小于目标数量N时,主机的内存101存储的索引是目标数据块中所有满足查询条件的索引;可根据目标数据的索引,从目标数据块中获取满足查询条件的所有数据。而且,利用索引查找数据,比利用位图结果查找数据的工作量较小,相较于直接使用位图结果查找数据可提高数据查询效率。
相应地,并行处理模块20可在目标数据的数量C大于目标数量N的情况下,将目标数据块的位图结果,从并行处理模块20读取至主机的内存102。相应地,CPU 102可根据位图结果,从目标数据块中筛选出满足查询条件的数据。这样,可减少并行处理模块与主机之间的数据传输量,还可节约主机的内存空间。
除了上述数据处理系统之外,本申请实施例还提供数据处理方法,下面对本申请实施例提供的数据处理方法进行示例性说明。
图5为本申请实施例提供的数据处理方法的流程示意图。如图5所示,该方法主要包括:
501、获取查询请求对应的待查询数据。
502、按照数据块的形式,将待查询数据分批次下发至并行处理模块;以及,将查询请求包含的查询条件下发至并行处理模块,以供并行处理模块根据查询条件,对接收到的当前批次的目标数据块进行并行查询,得到目标数据块的查询结果并返回。
503、根据目标数据块的查询结果,从目标数据块中获取满足查询条件的数据。
504、根据目标数据块的查询结果,以目标数据块的数据量为基准,缩小下发给并行处理模块的下一批次的数据块的数据量。
本实施例提供的数据处理方法,主要适用于主机,确切地说是适用于主机中的处理器。主机中的处理器一般为CPU。关于主机和并行处理模块的实现形态及通信方式,可参见上述实施例的相关内容,在此不再赘述。
在本实施例中,对于主机,在步骤501中,可获取查询请求对应的待查询数据。具体地,可获取查询请求;并从查询请求中获取查询条件,之后,可根据查询条件,从数据源中读取待查询数据。
在一些实施例中,数据源以列存储文件格式存储数据,则可根据查询条件,从数据源中读取查询请求对应的待查询列,作为待查询数据。即,从数据源中读取过滤条件限定的待查询列,作为待查询数据。进一步,可将待查询数据存储至主机的内存的连续内存空间。
由于内存存储格式与数据源存储格式不同,还可将待查询数据(即待查询列)转换为内存支持的列存储格式。内存支持的列存储格式可为Arrow格式。Arrow为内存支持的一种列存储格式。相应地,可将具有内存支持的列存储格式(如Arrow格式)的待查询列,存储至主机10的内存102的连续内存空间。
在本实施例中,为了对主机的CPU进行减压,降低CPU到达性能瓶颈的概率,主机可通过虚拟化技术将并行处理模块映射为主机的虚拟设备;并通过映射出的虚拟设备,将卸载数据处理功能至并行处理模块。并行处理模块由于较强的并行计算能力,可提高数据处理速度。
由于并行处理模块的内存的容量小于主机的内存的容量,因此,在使用并行处理模块进行异构加速时,可将待查询数据切分为多个数据块,并在步骤502中,按照数据块的形式,将待查询数据分批次下发至并行处理模块。可选地,可一次性将待查询数据切分为多个数据块。或者,也可每批次从剩余的未下发的待查询数据中,切分出一个数据块下发至并行处理模块。
其中,每批次下发的数据块的数据量可以相同,也可不同。具体由本申请实施例提供的数据处理方式决定。在本实施例中,在步骤502中,还可将查询请求包含的查询条件下发至并行处理模块。其中,可在每批次下发数据块时,将查询条件一并下发至并行处理模块。为了降低数据下发时数据带宽的占用,可在第一批次下发数据块时,将查询条件一并下发至并行处理模块。并行处理模块可存储查询条件,用于各批次的数据块的查询。当然,也可先下发查询条件至并行处理模块,再分批次下发数据块至并行处理模块。关于向并行处理模块下发数据块的具体实现方式,可参见上述系统实施例的相关内容,在此不再赘述。
对于并行处理模块,可根据查询条件,对接收到的当前批次的目标数据块进行并行查询。可选地,并行处理模块可采用异步的方式,对读取的目标数据块进行并行数据查询,即并行处理模块无需等待当然数据块数据查询完成,即可读取下一数据块,有助于提高数据查询速度。
在本实施例中,并行处理模块还包括:1个或多个计算单元。多个是指2个或2个以上。为了提高并行处理模块的并行计算能力,一般并行处理模块包括多个计算单元。
对于并行处理模块包括多个计算单元的实施例,并行处理模块还可将当前批次接收到的目标数据块,切分为多个数据子块;并将多个数据子块分发给该并行处理模块中的多个计算单元。多个计算单元可根据查询条件,并行对数据子块进行查询,以得到多个数据子块的查询结果,即目标数据块的查询结果。关于并行处理模块对目标数据块进行数据查询的具体实施方式,可参见上述实施例的相关内容,在此不再赘述。
并行处理模块在得到目标数据块的查询结果之后,可将查询结果返回至主机的CPU。其具体实现方式可参见上述系统实施例的相关内容,在此不再赘述。
查询结果可反映目标数据块哪些数据是满足查询条件的数据。因此,在步骤503中,可根据目标数据块的查询结果,从目标数据块中获取满足查询条件的数据。
在利用异构资源(即并行处理模块)进行数据查询的方案中,若数据块的数据量过大,会导致并行数据模块返回的查询结果过多,导致CPU根据查询结果查找到符合查询需求的原始数据的时间较长;而若数据块的数据量过小,会增加CPU和并行处理模块之间数据传输次数,降低CPU和并行处理模块的传输带宽。
为了解决该问题,本申请实施例考虑到目标数据块的查询结果可反映目标数据块哪些数据是满足查询条件的,自然可根据查询结果,确定目标数据块中满足查询条件的数据的数据量。若每个批次下发的数据块的数据量相同,当前批次的目标数据块中满足查询条件的数据的数据量,在一定程度上可反映下一批次下发的数据块中满足查询条件的数据的数据量。基于此,在步骤504中,还可根据目标数据块的查询结果,以目标数据块的数据量为基准,缩小下发给并行处理模块的下一批次的数据块的数据量。
在本申请实施例中,在利用并行处理模块等异构资源进行数据查询加速的方案中,主机侧的CPU可根据当前批次的目标数据块的查询结果,从目标数据块中获取满足查询条件的数据;还可根据目标数据块的查询结果,以目标数据块的数据量为基准,缩小下发给并行处理模块的下一批次的数据块的数据量,实现下发给并行处理模块的数据块大小的动态调整。其中,根据当前批次的目标数据块的查询结果,缩小数据块大小,可尽可能降低CPU侧软件从数据块中查找满足查询条件的工作量,使得CPU侧软件可快速获取满足查询条件的数据,提高数据查询效率。
下面对本申请实施例根据目标数据块的查询结果,缩小数据块大小的具体实施方式进行示例性说明。
在一些实施例中,可根据目标数据块的查询结果,从目标数据块中获取满足查询条件的数据;并根据目标数据块中满足查询条件的数据的数量,以目标数据块的数据量为基准,调整下发给并行处理模块的下一批次的数据块的数据量。
由于CPU侧软件查找数据块中满足查询条件的数据目的是优先让每批次并行处理模块返回的查询结果中,满足查询条件的数据为0。因此,若目标数据块中满足查询条件的数据的数量大于0,则可以目标数据块的数据量为基准缩小数据块的数据量,以得到下发给并行处理模块的下一批次的数据块的数据量。具体地,可以目标数据块的数据量为基准,采用渐进式方式缩小数据块的数据量。这样可防止直接将数据块的数据量调整的过小,而增加主机CPU和并行处理模块之间的数据传输次数的问题,有助于降低数据传输对主机CPU和并行处理模块的传输带宽的影响。
在本申请实施例中,不限定以目标数据块的数据量为基准,采用渐进式方式缩小数据块的数据量的具体实施方式。在一些实施例中,可在目标数据块的数据量的基础上降低设定的梯度,以得到下发给并行处理模块的下一批次的数据块的数据量。或者,在目标数据块的数据量的基础上降低设定的比例,以得到下发给并行处理模块的下一批次的数据块的数据量。为了防止盲目下调下发给并行处理模块的下一批次的数据块的数据量,还可设置数据块的数据量范围,即设置数据块的数据量上限和数据量下限。关于数据块的数据量上限和数据量下限的确定方式,可参见上述系统实施例的相关内容,在此不再赘述。一般地,针对多个下发批次中的第一批次,第一批次下发的数据块的数据量为设定的数据量上限。当然,若已目标标数据块的数据量为基准缩小数据块的数据量之后,数据块的数据量小于设定的数据量下限,可将设定的数据量下限,作为下发给并行处理模块的下一批次的数据块的数据量。
上述实施例示出的以目标数据块的数据量为基准,缩小数据块的数据量的具体实施方式,仅为示例性说明,并不构成限定。
由于主机的内存的空间是有限的,而且CPU可能无法确定并行处理模块完成各批次的数据块的查询的先后顺序,因此,为了防止数据块的查询结果在内存的存储混乱导致查询出错,CPU一般预先为数据块的查询结果分配内存区域。待查询数据的内存位置相邻的数据块,其查询结果也是相邻的。
CPU可根据预先为数据块的查询结果分配的内存空间的大小,预测数据块中满足查询条件的数据的目标数量N。数据块中满足查询条件的数据的目标数量N,是由预先为数据块的查询结果分配的内存空间决定的。
并行处理模块中的DMA引擎,可采用DMA方式根据目标数据块的起始内存地址和目标数据块的长度,从主机的内存中读取目标数据块至并行处理模块的内存中。进一步,并行处理模块可根据查询条件,对目标数据块进行并行数据查询,以得到目标数据块的查询结果。在本申请实施例中,不限定并行处理模块对目标数据块进行查询的具体实施方式。在一些实施例中,并行处理模块可根据查询条件,确定数据查询算子。数据查询算子是指数据查询操作的算子,通常由查询条件中的关键字决定。
在确定出数据查询算子之后,并行处理模块可根据数据查询算子,对目标数据块进行并行查询,以得到目标数据块的初始查询结果。在一些实施例中,目标数据块的初始查询结果可实现为位图(Bitmap)结果。位图结果是利用二进制位值标记的目标数据块中的各字符是否符合查询条件的结果。二进制位值是指1和0。在一些实施例中,1表示符合查询条件;0表示不符合查询条件。在另一些实施例中,也可0表示符合查询条件,1表示不符合查询条件。关于并行处理模块对目标数据块进行并行查询的具体实施方式,可参见上述系统实施例的相关内容,在此不再赘述。
在一些实施例中,并行处理模块还可在对目标数据块进行并行查询过程中,对目标数据块中满足查询条件的目标数据进行计数,以得到目标数据的数量C。这样,可省去上述实施例中CPU对目标数据块中满足查询条件的数据进行数据量计算的过程,可进一步降低CPU 101的软件开销。
由于目标数据的数量C,仅能说明目标数据块中满足查询条件的目标数据的数量,并不能反映目标数据块中哪些数据是满足查询条件的。因此,在一些实施例中,还可将目标数据的数量C及目标数据块的初始查询结果(如位图结果),作为目标数据块的查询结果;并将该查询结果提供给CPU。
由于CPU根据初始查询结果(如位图结果),在目标数据块中查找满足查询条件的工作量较大,数据查询效率较低。在另一些实施例中,并行处理模块还可在目标数据块进行并行查询过程中,获取目标数据块中满足查询条件的目标数据的索引;之后,将目标数据的数量C及目标数据的索引,作为目标数据块的查询结果;并将查询结果提供给CPU。
在实际应用中,由于位图结果(Bitmap)存储的方式是二进制位值,数据量为比特(Bit)量级的;而数据的索引的数据量为字节(Byte)量级的。为了节约主机内存空间,一般根据上述预测出的目标数据块中满足查询条件的数据的目标数量N,在目标数据块的查询结果的内存空间中,预先为目标数据的索引设置内存空间。其中,预先为目标数据的索引设置的内存空间可等于单个索引的数据量乘以N。在该实施例中,若目标数据块中满足查询条件的数量C大于预先设置的目标数量N,则会导致目标数据的索引由于内存空间不足,导致主机的内存中存储的索引不完整,从而导致无法根据索引,从目标数据块中查找到所有满足查询条件的数据。
为了解决该问题,可将目标数据的数量C、目标数据的索引及目标数据块的初始查询结果(如位图结果),一并作为目标数据块的查询结果;并将该目标数据块的查询结果提供给CPU。
具体地,并行处理模块中的DMA引擎,可采用DMA方式将目标数据的数量C、目标数据的索引及目标数据块的初始查询结果,从并行处理模块的内存中读取至主机中预先为目标数据块的查询结果分配的内存空间。
相应地,上述步骤503可实现为:根据目标数据块的查询结果及预先设置的满足查询条件的数据的目标数量,从目标数据块中,获取满足查询条件的数据。
在一些实施例中,目标数据块的查询结果包括:目标数据的数量C、目标数据的索引及目标数据块的位图结果。并行处理模块提供给CPU的查询结果可包括:目标数据的数量C、目标数据的索引及目标数据块的初始查询结果(如位图结果)中的至少一种。
在一些实施例中,并行处理模块提供给CPU的查询结果可包括:目标数据的数量C、目标数据的索引及目标数据块的初始查询结果(如位图结果)。相应地,可在目标数据的数量C大于0,且小于目标数量N的情况下,根据目标数据的索引,从目标数据块中获取满足查询条件的数据。这主要是因为在目标数据的数量C大于0,且小于目标数量N时,主机的内存101存储的索引是目标数据块中所有满足查询条件的索引;可根据目标数据的索引,从目标数据块中获取满足查询条件的所有数据。而且,利用索引查找数据,比利用位图结果查找数据的工作量较小,相较于直接使用位图结果查找数据可提高数据查询效率。
由于目标数据块中满足查询条件的数量C大于预先设置的目标数量N,则会导致目标数据的索引由于内存空间不足,导致主机的内存中存储的索引不完整,从而导致无法根据索引,从目标数据块中查找到所有满足查询条件的数据。为了解决该问题,在本实施例中,CPU在目标数据的数量C大于或等于目标数量N的情况下,可根据目标数据块的位图结果,从目标数据块中筛选出满足查询条件的数据。具体地,CPU可利用位图结果中,利用位值标记的待查询数据中各字符,与查询条件的匹配结果,从目标数据块中筛选出满足查询条件的数据。进一步,CPU还可将满足查询条件的数据提供给发出查询请求的设备等等。
在另一些实施例中,为了降低目标数据块的查询结果对主机内存的占用,还可由并行处理模块对读取至主机内存中的是哪类查询结果进行判断。具体地,CPU可将上述目标数据块中满足查询条件的数据的目标数量N,下发至并行处理模块。
基于并行处理模块接收到的目标数量N,并行处理模块可判断目标数据的数量C是否大于0,并且是否小于目标数量N;若判断结果为目标数据的数量C大于0,且小于目标数量N,则并行处理模块将目标数据的索引从并行处理模块,读取至主机的内存。相应地,CPU可根据目标数据的索引,从目标数据块中获取满足查询条件的数据。这主要是因为在目标数据的数量C大于0,且小于目标数量N时,主机的内存存储的索引是目标数据块中所有满足查询条件的索引;可根据目标数据的索引,从目标数据块中获取满足查询条件的所有数据。而且,利用索引查找数据,比利用位图结果查找数据的工作量较小,相较于直接使用位图结果查找数据可提高数据查询效率。
相应地,并行处理模块可在目标数据的数量C大于或等于目标数量N的情况下,将目标数据块的位图结果,从并行处理模块读取至主机的内存。相应地,CPU可根据位图结果,从目标数据块中筛选出满足查询条件的数据。这样,可减少并行处理模块与主机之间的数据传输量,还可节约主机的内存空间。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤501和502的执行主体可以为设备A;又比如,步骤501的执行主体可以为设备A,步骤502的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如501、502等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
相应地,本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,当计算机指令被一个或多个处理器执行时,致使一个或多个处理器执行上述数据处理方法中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
还需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(或系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(如CPU等)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(Random-Access Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(Flash RAM)。内存是计算机可读介质的示例。
计算机的存储介质为可读存储介质,也可称为可读介质。可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-Change Memory,PRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(Digital Video Disc,DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(Transitory Media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上内容仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (14)

1.一种数据处理系统,其特征在于,包括:主机及并行处理模块;所述主机与所述并行处理模块通信连接;所述主机包括:中央处理器CPU;
所述CPU,用于获取查询请求对应的待查询数据;按照数据块的形式,将所述待查询数据分批次下发至所述并行处理模块;以及,将所述查询请求包含的查询条件下发至所述并行处理模块;
所述并行处理模块,用于根据所述查询条件,对接收到的当前批次的目标数据块进行并行查询,以得到所述目标数据块的查询结果;将所述目标数据块的查询结果提供至所述CPU;
所述CPU,还用于根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据;并根据所述目标数据块的查询结果,以所述目标数据块的数据量为基准,缩小下发给所述并行处理模块的下一批次的数据块的数据量。
2.根据权利要求1所述的系统,其特征在于,所述并行处理模块,在根据所述查询条件,对接收到的当前批次的目标数据块进行并行查询时,具体用于:
根据所述查询条件,确定数据查询算子;根据所述数据查询算子,对所述目标数据块进行并行查询,以得到初始查询结果;
在对所述目标数据块进行并行查询过程中,对所述目标数据块中满足所述查询条件的目标数据进行计数,以得到所述目标数据的数量;以及,获取所述目标数据的索引;
将所述目标数据的数量、所述初始查询结果及所述目标数据的索引中的至少一种,作为所述目标数据块的查询结果。
3.根据权利要求2所述的系统,其特征在于,所述目标数据块的查询结果包括:所述目标数据的数量;所述并行处理模块,还用于:将所述查询结果从所述并行处理模块,读取至所述主机的内存中;
所述CPU在根据所述目标数据块的查询结果及预先设置的满足所述查询条件的数据的目标数量,以所述目标数据块的数据量为基准,缩小下发给所述并行处理模块的下一批次的数据块的数据量,包括:
从所述主机的内存中读取所述目标数据的数量;若所述目标数据的数量大于0,则以所述目标数据块的数据量为基准缩小数据块的数据量,以得到所述下发给所述并行处理模块的下一批次的数据块的数据量。
4.根据权利要求3所述的系统,其特征在于,所述CPU在根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据时,具体用于:
根据所述目标数据块的查询结果及预先设置的满足所述查询条件的数据的目标数量,从所述目标数据块中,获取满足所述查询条件的数据。
5.根据权利要求4所述的系统,其特征在于,所述初始查询结果为位图结果;所述位图结果是利用二进制位值标记的所述目标数据块中的各字符是否符合所述查询条件的结果;所述目标数据块的查询结果还包括:所述位图结果和所述目标数据的索引;
所述并行处理模块,在将所述查询结果从所述并行处理模块,读取至所述主机的内存中时,具体用于:将所述目标数据的数量、所述目标数据的索引及所述位图结果,从所述并行处理模块,读取至所述主机中预先为所述目标数据块设置的内存空间;其中,所述目标数据的索引的内存空间是由所述目标数量决定的;
所述CPU在根据所述目标数据块的查询结果及预先设置的满足所述查询条件的数据的目标数量,从所述目标数据块中,获取满足所述查询条件的数据时,具体用于:
在所述目标数据的数量大于0,且小于所述目标数量的情况下,根据所述目标数据的索引,从所述目标数据块中获取满足所述查询条件的数据;
在所述目标数据的数量大于或等于所述目标数量的情况下,根据所述位图结果,从所述目标数据块中筛选出满足所述查询条件的数据。
6.根据权利要求4所述的系统,其特征在于,所述目标数据块的查询结果还包括:所述初始查询结果和所述目标数据的索引;所述初始查询结果为位图结果;所述位图结果是利用二进制位值标记的所述目标数据块中的各字符是否符合所述查询条件的结果;
所述并行处理模块在将所述查询结果从所述并行处理模块,读取至所述主机的内存中时,具体用于:
在所述目标数据的数量大于0,且小于所述目标数量的情况下,将所述目标数据的索引从所述并行处理模块,读取至所述主机的内存;
相应地,所述CPU在根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据时,具体用于:根据所述目标数据的索引,从所述目标数据块中获取满足所述查询条件的数据;其中,所述目标数据的索引的内存空间是由所述目标数量决定的;
或者,
所述并行处理模块在将所述查询结果从所述并行处理模块,读取至所述主机的内存中时,具体用于:
在所述目标数据的数量大于或等于所述目标数量的情况下,将所述目标数据块的位图结果,从所述并行处理模块读取至所述主机的内存;
相应地,所述CPU在根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据时,具体用于:根据所述位图结果,从所述目标数据块中筛选出满足所述查询条件的数据。
7.一种数据处理方法,其特征在于,包括:
获取查询请求对应的待查询数据;
按照数据块的形式,将所述待查询数据分批次下发至并行处理模块;以及,将所述查询请求包含的查询条件下发至所述并行处理模块,以供所述并行处理模块根据所述查询条件,对接收到的当前批次的目标数据块进行并行查询,得到所述目标数据块的查询结果并返回;
根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据;
根据所述目标数据块的查询结果,以所述目标数据块的数据量为基准,缩小下发给所述并行处理模块的下一批次的数据块的数据量。
8.根据权利要求7所述的方法,其特征在于,所述目标数据块的查询结果被所述并行处理模块读取至主机的内存;所述目标数据块的查询结果包括:所述目标数据块中满足所述查询条件的目标数据的数量;所述目标数据的数量为所述并行处理模块在对所述目标数据块进行并行查询过程中计数得到的;
所述根据所述目标数据块的查询结果,以所述目标数据块的数据量为基准,缩小下发给所述并行处理模块的下一批次的数据块的数据量,包括:
从所述主机的内存中读取所述目标数据的数量;
若所述目标数据的数量大于0,则以所述目标数据块的数据量为基准缩小数据块的数据量,以得到所述下发给所述并行处理模块的下一批次的数据块的数据量。
9.根据权利要求8所述的方法,其特征在于,还包括:
若以所述目标数据块的数据量为基准缩小数据块的数据量之后,数据块的数据量小于设定的数据量下限,则将所述设定的数据量下限,作为所述下发给所述并行处理模块的下一批次的数据块的数据量;
若所述当前批次为第一批次,则将设定的数据量上限作为所述目标数据块的数据量。
10.根据权利要求8所述的方法,其特征在于,所述根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据,包括:
根据所述目标数据块的查询结果及预先设置的满足所述查询条件的数据的目标数量,从所述目标数据块中,获取满足所述查询条件的数据。
11.根据权利要求10所述的方法,其特征在于,所述目标数据块的查询结果还包括:所述目标数据块的位图结果和所述目标数据的索引;所述目标数据块的位图结果是所述并行处理模块根据所述查询条件包含的数据查询算子,对所述目标数据块进行并行查询得到的;所述位图结果是利用二进制位值标记的所述目标数据块中的各字符是否符合所述查询条件的结果;其中,所述目标数据的数量、所述目标数据的索引及所述位图结果,被所述并行处理模块读取至所述主机中预先为所述目标数据块设置的内存空间;其中,所述目标数据的索引的内存空间是由所述目标数量决定的;
所述根据所述目标数据块的查询结果及预先设置的满足所述查询条件的数据的目标数量,从所述目标数据块中,获取满足所述查询条件的数据,包括:
在所述目标数据的数量大于0,且小于所述目标数量的情况下,根据所述目标数据的索引,从所述目标数据块中获取满足所述查询条件的数据;
在所述目标数据的数量大于或等于所述目标数量的情况下,根据所述位图结果,从所述目标数据块中筛选出满足所述查询条件的数据。
12.根据权利要求10所述的方法,其特征在于,所述目标数据块的查询结果还包括:所述目标数据块的位图结果和所述目标数据的索引;所述目标数据块的位图结果是所述并行处理模块根据所述查询条件包含的数据查询算子,对所述目标数据块进行并行查询得到的;所述位图结果是利用二进制位值标记的所述目标数据块中的各字符是否符合所述查询条件的结果;其中,所述并行处理模块在所述目标数据的数量大于0,且小于所述目标数量的情况下,将所述目标数据的索引从所述并行处理模块,读取至所述主机的内存;
所述根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据,包括:
根据所述目标数据的索引,从所述目标数据块中获取满足所述查询条件的数据;其中,所述目标数据的索引的内存空间是由所述目标数量决定的。
13.根据权利要求12所述的方法,其特征在于,所述并行处理模块在所述目标数据的数量大于或等于所述目标数量的情况下,将所述目标数据块的位图结果,从所述并行处理模块读取至所述主机的内存;
所述根据所述目标数据块的查询结果,从所述目标数据块中获取满足所述查询条件的数据,包括:
根据所述位图结果,从所述目标数据块中筛选出满足所述查询条件的数据。
14.一种存储有计算机指令的计算机可读存储介质,其特征在于,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行权利要求7-13任一项所述方法中的步骤。
CN202310657831.5A 2023-06-05 2023-06-05 数据处理系统、方法及存储介质 Pending CN116795875A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310657831.5A CN116795875A (zh) 2023-06-05 2023-06-05 数据处理系统、方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310657831.5A CN116795875A (zh) 2023-06-05 2023-06-05 数据处理系统、方法及存储介质

Publications (1)

Publication Number Publication Date
CN116795875A true CN116795875A (zh) 2023-09-22

Family

ID=88033729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310657831.5A Pending CN116795875A (zh) 2023-06-05 2023-06-05 数据处理系统、方法及存储介质

Country Status (1)

Country Link
CN (1) CN116795875A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117331970A (zh) * 2023-10-31 2024-01-02 中科驭数(北京)科技有限公司 数据查询方法、装置、计算机存储介质及加速卡
CN117493622A (zh) * 2023-12-28 2024-02-02 苏州元脑智能科技有限公司 基于现场可编程阵列器件的字符串的查询方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117331970A (zh) * 2023-10-31 2024-01-02 中科驭数(北京)科技有限公司 数据查询方法、装置、计算机存储介质及加速卡
CN117493622A (zh) * 2023-12-28 2024-02-02 苏州元脑智能科技有限公司 基于现场可编程阵列器件的字符串的查询方法和装置
CN117493622B (zh) * 2023-12-28 2024-03-29 苏州元脑智能科技有限公司 基于现场可编程阵列器件的字符串的查询方法和装置

Similar Documents

Publication Publication Date Title
CN116795875A (zh) 数据处理系统、方法及存储介质
CN109145158B (zh) 一种布隆过滤器中数据的处理方法以及布隆过滤器
CN106776967B (zh) 基于时序聚合算法的海量小文件实时存储方法及装置
CN108710639B (zh) 一种基于Ceph的海量小文件存取优化方法
CN110275983B (zh) 交通监控数据的检索方法及装置
CN110874417B (zh) 数据检索的方法和装置
CN103150260A (zh) 重复数据删除方法和装置
CN111104426B (zh) 一种数据查询方法及系统
WO2023143095A1 (en) Method and system for data query
US11190620B2 (en) Methods and electronic devices for data transmission and reception
CN111083933A (zh) 数据存储及获取方法和装置
CN113726341B (zh) 一种数据处理方法、装置、电子设备及存储介质
US9760836B2 (en) Data typing with probabilistic maps having imbalanced error costs
CN115129621A (zh) 一种内存管理方法、设备、介质及内存管理模块
CN113010455A (zh) 数据处理方法、装置和电子设备
CN106537321B (zh) 存取文件的方法、装置和存储系统
CN114860722A (zh) 基于人工智能的数据分片方法、装置、设备及介质
CN113419792A (zh) 一种事件处理方法、装置、终端设备和存储介质
CN114064706A (zh) 数据存储方法、装置及服务器
CN117667994A (zh) 数据处理系统、方法及并行处理模块
CN111159438B (zh) 一种数据的存储和检索方法、电子设备及存储介质
CN112818710A (zh) 一种异步网络机器翻译请求的处理方法、装置
CN112269947A (zh) 空间文本数据的缓存方法、装置、电子设备及存储介质
CN113411364A (zh) 资源获取方法、装置及服务器
Slechta et al. Optimizing query execution for variable-aligned length compression of bitmap indices

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