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

文档序号:19284363发布日期:2019-11-29 23:21阅读:194来源:国知局
一种数据查询方法、系统、电子设备及存储介质与流程

本申请涉及数据库技术领域,特别涉及一种数据查询方法、系统、一种存储介质及一种电子设备。



背景技术:

数据库技术是信息系统的一个核心技术,是一种计算机辅助管理数据的方法,在对数据库的多张表进行查询操作时,需要将需要查询的表单进行笛卡尔积运算,得到一个统一的表单,然后再执行查询操作。

传统的数据库基于cpu(centralprocessingunit,中央处理器)设计,在应对大规模、高并发数据库读写操作时,传统数据库存在查询延时高的问题,在使用cpu执行笛卡尔积操作时,并不能充分发挥数据并行特性对计算带来的提升。相关技术中,存在使用gpu数据库加速数据库查询操作的方案,但是上述相关技术在面对高维度笛卡儿积操作时,gpu流水线深度的不足,严重限制其性能,查询效率较低。

因此,如何提高数据库表单的查询效率是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种数据查询方法、系统、存储介质及一种电子设备,能够提高数据库表单的查询效率。

为解决上述技术问题,本申请提供一种数据查询方法,该数据查询方法包括:

当接收到数据库表单查询指令时,解析所述数据库表单查询指令,并根据解析结果确定目标数据矩阵和查找矩阵;

根据所述目标数据矩阵的大小将所述目标数据矩阵划分为n个矩阵分块;

对所述矩阵分块执行序列化操作,并将序列化后的矩阵分块传输至所述fpga对应的内存空间;

控制所述fpga并行计算每一所述矩阵分块与所述查询矩阵对应的结果矩阵,并将所述结果矩阵设置为所述数据库表单查询指令对应的查询结果。

可选的,所述根据解析结果确定目标数据矩阵包括:

根据所述解析结果确定目标表单,将所述目标表单的笛卡尔积设置为所述目标数据矩阵。

可选的,在控制所述fpga并行计算每一所述矩阵分块与所述查询矩阵对应的结果矩阵之前,还包括:

根据所述矩阵分块的维度设置所述fpga的流水线深度。

可选的,将序列化后的矩阵分块传输至所述fpga对应的内存空间包括:

通过pcie链路将所述序列化后的矩阵分块传输至所述fpga对应的内存空间。

可选的,在将所述结果矩阵设置为所述数据库表单查询指令对应的查询结果之后,还包括:

将所述查询结果通过rdma的方式发送至中央处理器。

可选的,还包括:

将所述查询结果和所述查找矩阵显示至人机交互界面。

本申请还提供了一种数据查询系统,该系统包括:

解析模块,用于当接收到数据库表单查询指令时,解析所述数据库表单查询指令,并根据解析结果确定目标数据矩阵和查找矩阵;

矩阵划分模块,用于根据所述目标数据矩阵的大小将所述目标数据矩阵划分为n个矩阵分块;

传输模块,用于对所述矩阵分块执行序列化操作,并将序列化后的矩阵分块传输至所述fpga对应的内存空间;

查询结果计算模块,用于控制所述fpga并行计算每一所述矩阵分块与所述查询矩阵对应的结果矩阵,并将所述结果矩阵设置为所述数据库表单查询指令对应的查询结果。

可选的,所述解析模块包括:

指令解析单元,用于当接收到数据库表单查询指令时,解析所述数据库表单查询指令,

数据矩阵确定模块,用于根据所述解析结果确定目标表单,将所述目标表单的笛卡尔积设置为所述目标数据矩阵。

本申请还提供了存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述数据查询方法执行的步骤。

本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述数据查询方法执行的步骤。

本申请提供了一种数据查询方法,包括当接收到数据库表单查询指令时,解析所述数据库表单查询指令,并根据解析结果确定目标数据矩阵和查找矩阵;根据所述目标数据矩阵的大小将所述目标数据矩阵划分为n个矩阵分块;对所述矩阵分块执行序列化操作,并将序列化后的矩阵分块传输至所述fpga对应的内存空间;控制所述fpga并行计算每一所述矩阵分块与所述查询矩阵对应的结果矩阵,并将所述结果矩阵设置为所述数据库表单查询指令对应的查询结果。

本申请在接收到数据库表单查询指令后,确定需要进行查找的目标数据矩阵和用于确定查询结果的查询矩阵。本申请首先将目标数据矩阵划分为n个矩阵分块,将划分后的矩阵分块传输至fpga的内存空间,进而利用fpga并行计算矩阵分块与所述查询矩阵对应的结果矩阵。由于fpga在数据并行与流水线深度上具有良好的计算能力,大幅提笛卡尔积的查询效率,能够提高数据库表单的查询效率。本申请同时还提供了一种数据查询系统、存储介质和一种电子设备,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种数据查询方法的流程图;

图2为本申请实施例所提供的一种数据库表单信息整合方法的示意图;

图3为本申请实施例所提供的另一种数据查询方法的流程图;

图4为本申请实施例所提供的一种笛卡尔积的运算方法示意图;

图5为本申请实施例所提供的一种3倍笛卡尔积的数据查找流程示意图;

图6为本申请实施例提供的一种fpga加速笛卡尔积查找的流程示意图;

图7为本申请实施例所提供的一种数据查询系统的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面请参见图1,图1为本申请实施例所提供的一种数据查询方法的流程图。

具体步骤可以包括:

s101:当接收到数据库表单查询指令时,解析所述数据库表单查询指令,并根据解析结果确定目标数据矩阵和查找矩阵;

其中,数据库表单查询指令可以为一种对多张数据库表单进行查询的指令,通过解析数据库表单查询指令可以得到需要进行查询操作的数据库表单和查询目标。需要说明的是,在进行数据库查询时,可以先将需要查询的表单进行笛卡尔积运算得到一个统一的表单然后再执行查询操作。本步骤中的目标数据矩阵可以为对所有需要进行查询操作的数据库表单的笛卡尔积运算结果。

作为一种可行的实施方式,本步骤中根据解析结果确定目标数据矩阵和查找矩阵的操作可以具体为:根据所述解析结果确定目标表单,将所述目标表单的笛卡尔积设置为所述目标数据矩阵。请参见图2,图2为本申请实施例所提供的一种数据库表单信息整合方法的示意图,本实施例可以采用图2所描述的方式将多张数据库表单整合为一张数据库表单。查询矩阵为进行数据库查询的约束条件。

s102:根据所述目标数据矩阵的大小将所述目标数据矩阵划分为n个矩阵分块;

其中,本实施例在得到目标数据矩阵的基础上,根据目标数据矩阵的大小将目标数据可矩阵划分为n个矩阵分块。作为一种可行的实施方式,可以将目标数据矩阵平均划分为n个矩阵分块。具体的,目标数据矩阵的大小与划分的矩阵分块数量n正相关。由于fpga具有良好的并处理能力,因此将目标数据矩阵划分为n个矩阵分块能够充分发挥fpga的性能。fpga(field-programmablegatearray),即现场可编程门阵列。

s103:对所述矩阵分块执行序列化操作,并将序列化后的矩阵分块传输至所述fpga对应的内存空间;

其中,把对象转换为字节序列的过程称为对象的序列化。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。本实施例中将矩阵分块转换为字节序列,并将转换后的字节序列传输至fpga对应的内存空间中。可以理解的是,在本实施例中也可以对查询矩阵执行序列化操作,并将序列化后的查询矩阵传输至所述fpga对应的内存空间。

s104:控制所述fpga并行计算每一所述矩阵分块与所述查询矩阵对应的结果矩阵,并将所述结果矩阵设置为所述数据库表单查询指令对应的查询结果。

其中,本步骤的目的在于利用fpga并行计算的能力,查询每一矩阵分块中与查询矩阵相对应的结果矩阵,并将查询到的结果矩阵设置为数据库表单查询指令对应的查询结果。本步骤中的查询是指根据约束条件,从(x,y)∈x×y的集合中找到目标值(x0,y0)。

本实施例在接收到数据库表单查询指令后,确定需要进行查找的目标数据矩阵和用于确定查询结果的查询矩阵。本实施例首先将目标数据矩阵划分为n个矩阵分块,将划分后的矩阵分块传输至fpga的内存空间,进而利用fpga并行计算矩阵分块与所述查询矩阵对应的结果矩阵。由于fpga在数据并行与流水线深度上具有良好的计算能力,大幅提笛卡尔积的查询效率,能够提高数据库表单的查询效率。

下面请参见图3,图3为本申请实施例所提供的另一种数据查询方法的流程图,本实施例可以包括以下操作:

s201:当接收到数据库表单查询指令时,解析所述数据库表单查询指令;

s202:根据所述解析结果确定目标表单,将所述目标表单的笛卡尔积设置为所述目标数据矩阵;

其中,笛卡尔积(cartesianproduct)是数学集合分支中的一个运算操作,该操作返回了一个由受操作集合乘积构成的集合。例如,集合a,b的笛卡尔积a×b集合为序列(a,b)构成的集合,其中a∈a,b∈b。使用集合公式为:

a×b={(a,b)|a∈aandb∈b}。

请参见图4,图4为本申请实施例所提供的一种笛卡尔积的运算方法示意图,图4中对行集合a={x,y,z}与列集合b={1,2,3}做笛卡尔积运算,可以得到表。通常对n维的集合做笛卡尔积也被称为“n倍笛卡尔积”(n-foldcartesianproduct),可以用n维数组表示,其中每个元素都是“n元组”(n-tuple),图4中的有序对是2元组。

s203:根据所述目标数据矩阵的大小将所述目标数据矩阵划分为n个矩阵分块;

s204:对所述矩阵分块执行序列化操作,并通过pcie链路将所述序列化后的矩阵分块传输至所述fpga对应的内存空间;

其中,pcie(pci-express,peripheralcomponentinterconnectexpress)是一种高速串行计算机扩展总线标准。

s205:根据所述矩阵分块的维度设置所述fpga的流水线深度;

其中,在本步骤之前可以存在确定矩阵分块的维度的操作,可以根据矩阵分块的维度确定fpga的流水线深度。

s206:控制所述fpga并行计算每一所述矩阵分块与所述查询矩阵对应的结果矩阵,并将所述结果矩阵设置为所述数据库表单查询指令对应的查询结果。

其中,fpga对笛卡尔积的操作不局限于数据查找上,通过fpga与nvm技术结合,还可以使用fpga快速完成笛卡儿积的生成、排序、降维、查找等操作。

s207:将所述查询结果通过rdma的方式发送至中央处理器;

其中,rdma(remotedirectmemoryaccess)指远程直接数据存取。

s208:将所述查询结果和所述查找矩阵显示至人机交互界面。

其中,本实施例在得到查询结果之后,可以将查询结果显示至人机交互界面,进一步还可以将查询矩阵显示至人机交互界面,并在人机交互界面显示查询查询结果与查询矩阵的对应关系。

下面通过在实际应用中的实施例说明上述实施例描述的流程。

对于一个n维的笛卡尔积,设数据矩阵为wm×n,查找矩阵为fl×n,则结果矩阵ol×m为查找矩阵与数据矩阵的左积:

ol×m=fl×n·wm×n;

其中,m为数据举证中含有的数据条数,n代表每条数据的维度,l指需要查询的数据条数,输出矩阵返回查询的结果:

根据结果矩阵ol×m判断,得到笛卡尔积查询结果,矩阵行为数据矩阵中包含的结果,矩阵列为需要查询的条目。相应条目在数据矩阵中查得数据则返回值大于0,如公式中o(0,0)=5,则表示在数据矩阵中的第一条包含所需查询的数据,根据索引信息,读取数据库中该位置的值即可获得所需的数据,若查询结果为0,则在数据矩阵中没有所需的数据。请参见图5,图5为本申请实施例所提供的一种3倍笛卡尔积的数据查找流程示意图。

在使用fpga进行快速查找时,首先根据数据矩阵尺寸大小,在cpu端开启多条线程,将数据矩阵分块,再逐块从数据库按块读取到内存中,并将其序列化。序列化的数据按序读入fpga指定内存中,同理,查找矩阵同样需要经序列化后写入fpga指定内存中。fpga按照对其的数据长度,依照查找的数据条数l进行数据并行,按照维度要求n加深流水线深度。基于以上设计,充分发挥fpga在数据与流水线深度并行的优势,查询的结果按顺序经fpga加速器mac组成网络包发回cpu,使用将pcie与mac分别进行数据读入与返回的操作,将有效发挥各通信接口的带宽,同时,计算结果不再经内存存取,而是直接组成网络包通过mac,使用rdma(remotedirectmemoryaccess,远程直接数据存取)协议写入cpu内存中,降低了传输路径延迟,请参见图6,图6为本申请实施例提供的一种fpga加速笛卡尔积查找的流程示意图。本实施例基于fpga构建笛卡尔积的快速检索方法,使用fpga加速卡通过数据与深度并行实现笛卡儿积查找加速,提高吞吐的设计,使用pcie与mac分别执行fpga设备读入与写入cpu内存来提高数据传输带宽,节省数据在fpga内存搬移流程,降低系统延迟的方法。

请参见图7,图7为本申请实施例所提供的一种数据查询系统的结构示意图;

该系统可以包括:

解析模块100,用于当接收到数据库表单查询指令时,解析所述数据库表单查询指令,并根据解析结果确定目标数据矩阵和查找矩阵;

矩阵划分模块200,用于根据所述目标数据矩阵的大小将所述目标数据矩阵划分为n个矩阵分块;

传输模块300,用于对所述矩阵分块执行序列化操作,并将序列化后的矩阵分块传输至所述fpga对应的内存空间;

查询结果计算模块400,用于控制所述fpga并行计算每一所述矩阵分块与所述查询矩阵对应的结果矩阵,并将所述结果矩阵设置为所述数据库表单查询指令对应的查询结果。

本实施例在接收到数据库表单查询指令后,确定需要进行查找的目标数据矩阵和用于确定查询结果的查询矩阵。本实施例首先将目标数据矩阵划分为n个矩阵分块,将划分后的矩阵分块传输至fpga的内存空间,进而利用fpga并行计算矩阵分块与所述查询矩阵对应的结果矩阵。由于fpga在数据并行与流水线深度上具有良好的计算能力,大幅提笛卡尔积的查询效率,能够提高数据库表单的查询效率。

进一步的,所述解析模块100包括:

指令解析单元,用于当接收到数据库表单查询指令时,解析所述数据库表单查询指令,

数据矩阵确定模块,用于根据所述解析结果确定目标表单,将所述目标表单的笛卡尔积设置为所述目标数据矩阵。

进一步的,还包括:

参数设置模块,用于根据所述矩阵分块的维度设置所述fpga的流水线深度。

进一步的,传输模块具体为用于通过pcie链路将所述序列化后的矩阵分块传输至所述fpga对应的内存空间的模块。

进一步的,还包括:

结果发生模块,用于将所述查询结果通过rdma的方式发送至中央处理器。

进一步的,还包括:

显示模块,用于将所述查询结果和所述查找矩阵显示至人机交互界面。

由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本申请还提供了存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1