首页 / 专利库 / 资料储存系统 / 数据库管理系统 / 到数据库加速器的并行计算卸载

数据库加速器的并行计算卸载

阅读:163发布:2020-05-11

专利汇可以提供数据库加速器的并行计算卸载专利检索,专利查询,专利分析的服务。并且本文中的 实施例 描述了用于在 数据库 加速 器(145)中准备和执行与数据库查询相关的任务的技术。在一个实施例中,数据库加速器(145)与主机CPU(115)分离。 数据库管理系统 (DBMS)(120)可以将与数据库查询相对应的任务卸载到数据库加速器(145)。DBMS(120)可以从数据库 请求 与该查询相关的数据,并且然后将该数据转换为适合于由数据库加速器(145)处理的一个或多个数据 块 (340)。在一个实施例中,数据库加速器(145)包含可以并行或同时处理数据的个体 硬件 处理单元(PU)(150)。为了同时处理数据,数据块(340)包括个体PU数据块(420),每个PU数据块旨在用于数据库加速器(145)中的相应PU(150)。,下面是数据库加速器的并行计算卸载专利的具体信息内容。

1.一种查询处理系统,包括:
主机中央处理单元(CPU),被配置为执行数据库管理系统(DBMS);以及
数据库加速器,与所述主机CPU分离,其中所述数据库加速器包括多个处理单元(PU),其中所述DBMS被配置为:
接收要在数据库上执行的查询;
从所述数据库取回与所述查询相对应的数据库表;
将所述数据库表重新格式化为数据,其中所述数据块包括多个PU数据块,每个PU数据块对应于所述多个PU中的一个PU;以及
向所述数据库加速器传输所述数据块,
其中所述数据库加速器被配置为:
使用所述多个PU并行地处理所述多个PU数据块;以及
从所述多个PU向所述DBMS转发结果。
2.根据权利要求1所述的查询处理系统,其中所述多个PU数据块中的每个PU数据块包括指示所述多个PU数据块中的每个PU数据块中的数据量的报头。
3.根据权利要求1所述的查询处理系统,其中所述数据库加速器包括组合器,所述组合器被配置为从所述多个PU中的每个PU接收个体结果,并且将所述个体结果组合成组合结果,所述组合结果被转发给所述DBMS。
4.根据权利要求1所述的查询处理系统,其中所述查询包括结构化查询语言(SQL)查询。
5.根据权利要求1所述的查询处理系统,其中所述数据库加速器被托管在一个或多个可编程集成电路上。
6.根据权利要求5所述的查询处理系统,其中所述DBMS包括可编程集成电路框架,所述可编程集成电路框架用作所述DBMS与所述一个或多个可编程集成电路之间的接口,其中所述可编程集成电路框架被配置为:将由所述DBMS发出的指令转换为能够由所述一个或多个可编程集成电路解释的命令。
7.根据权利要求5所述的查询处理系统,其中所述一个或多个可编程集成电路形成现场可编程阵列(FPGA)。
8.根据权利要求1所述的查询处理系统,其中所述数据库加速器被托管在一个或多个专用集成电路(ASIC)上。
9.一种数据库加速器,包括:
在一个或多个集成电路上实现的多个PU,其中所述数据库加速器被配置为从在单独的主机CPU上执行的DBMS接收数据块,其中所述数据块基于从数据库取回的数据库表,并且包括多个PU数据块,每个PU数据块对应于所述多个PU中的一个PU,
其中所述多个PU被配置为并行地处理所述多个PU数据块;以及
组合器,被配置为从所述多个PU中的每个PU接收个体结果,并且将所述个体结果组合成组合结果,所述组合结果被转发给所述DBMS。
10.根据权利要求9所述的数据库加速器,其中所述多个PU数据块中的每个PU数据块包括指示所述多个PU数据块中的每个PU数据块中的数据量的报头。
11.根据权利要求9所述的数据库加速器,其中所述数据库表是使用SQL查询从所述数据库取回的。
12.根据权利要求9所述的数据库加速器,其中所述一个或多个集成电路包括一个或多个可编程集成电路。
13.根据权利要求12所述的数据库加速器,其中所述数据库加速器被配置为与所述DBMS中的可编程集成电路框架通信,所述可编程集成电路框架用作所述DBMS与所述一个或多个可编程集成电路之间的接口,其中所述可编程集成电路框架被配置为将由所述DBMS发出的指令转换为能够由所述一个或多个可编程集成电路解释的命令。
14.根据权利要求12所述的数据库加速器,其中所述一个或多个可编程集成电路形成现场可编程门阵列(FPGA)。

说明书全文

数据库加速器的并行计算卸载

技术领域

[0001] 本公开的示例总体上涉及数据库加速器,并且具体地涉及在数据库加速器中准备和执行与数据库查询相关的数据

背景技术

[0002] 随着要分析的数据量的增长,实时分析变得越来越密集。这导致大规模的计算节点扩展,这是昂贵的,并且有时是不可行的。随着数据库大小的增加,查询和分析存储在数据库中的数据变得更加复杂且耗时。通常,数据库管理系统(DBMS)使用一个或多个CPU对数据库执行客户端查询。但是,CPU可以并行处理的数据量是有限的。发明内容
[0003] 描述了用于操作数据库加速器的技术。一个示例是一种查询处理系统,该查询处理系统包括被配置为执行数据库管理系统(DBMS)的主机中央处理单元(CPU)和与主机CPU分离的数据库加速器,其中数据库加速器包括多个处理单元(PU)。DBMS被配置为接收要在数据库上执行的查询,从数据库取回与该查询相对应的数据库表,将该数据库表重新格式化为数据块,其中该数据块包括多个PU数据块(每个PU数据块对应于多个PU中的一个PU),并且向数据库加速器传输数据块。数据库加速器被配置为使用多个PU并行地处理多个PU数据块,并且从PU向DBMS转发结果。
[0004] 在一些实施例中,多个PU数据块中的每个可以包括指示多个PU数据块中的每个PU数据块中的数据量的报头。
[0005] 在一些实施例中,数据库加速器可以包括组合器,该组合器被配置为从多个PU中的每个PU接收个体结果并且将个体结果组合成组合结果,该组合结果被转发给DBMS。
[0006] 在一些实施例中,查询可以包括结构化查询语言(SQL)查询。
[0007] 在一些实施例中,数据库加速器可以被托管在一个或多个可编程集成电路上。
[0008] 在一些实施例中,DBMS可以包括用作DBMS与一个或多个可编程集成电路之间的接口的可编程集成电路框架。可编程集成电路框架可以被配置为将由DBMS发出的指令转换为可以由一个或多个可编程集成电路解释的命令。
[0009] 在一些实施例中,一个或多个可编程集成电路可以形成现场可编程阵列(FPGA)。
[0010] 在一些实施例中,数据库加速器可以被托管在一个或多个专用集成电路(ASIC)上。
[0011] 另一示例是一种数据库加速器,该数据库加速器包括在一个或多个集成电路上实现的多个PU,其中数据库加速器被配置为从在单独的主机CPU上执行的DBMS接收数据块,并且其中该数据块基于从数据库取回的数据库表并且包括多个PU数据块,每个PU数据块对应于多个PU中的一个PU。此外,多个PU被配置为并行地处理多个PU数据块。数据库加速器还包括组合器,该组合器被配置为从多个PU中的每个PU接收个体结果并且将个体结果组合成组合结果,该组合结果被转发给DBMS。
[0012] 在一些实施例中,多个PU数据块中的每个PU数据块可以包括指示多个PU数据块中的每个PU数据块中的数据量的报头。
[0013] 在一些实施例中,可以使用SQL查询从数据库取回数据库表。
[0014] 在一些实施例中,一个或多个集成电路可以包括一个或多个可编程集成电路。
[0015] 在一些实施例中,数据库加速器可以被配置为与DBMS中的可编程集成电路框架通信,可编程集成电路框架用作DBMS与一个或多个可编程集成电路之间的接口。可编程集成电路框架可以被配置为将由DBMS发出的指令转换为可以由一个或多个可编程集成电路解释的命令。
[0016] 在一些实施例中,一个或多个可编程集成电路可以形成现场可编程门阵列(FPGA)。
[0017] 另一示例是一种存储指令的非暂态计算机可读存储介质,该指令当在一个或多个处理设备上执行时执行用于DBMS的操作。该操作包括:接收要在数据库上执行的查询;从数据库取回与该查询相对应的数据库表;将该数据库表重新格式化为数据块,其中该数据块包括多个PU数据块(每个PU数据块对应于数据库加速器中的多个PU之一),其中数据库加速器与托管DBMS的CPU分离,向数据库加速器传输数据块,并且接收由于多个PU并行地处理数据块而产生的结果。
[0018] 在一些实施例中,多个PU数据块中的每个PU数据块可以包括指示多个PU数据块中的每个PU数据块中的数据量的报头。
[0019] 在一些实施例中,查询可以包括SQL查询。
[0020] 在一些实施例中,向数据库加速器传输数据块可以包括将由DBMS发出的指令转换为可以由数据库加速器使用可编程集成电路框架解释的命令。可编程集成电路框架可以用作DBMS与实现数据库加速器的一个或多个可编程集成电路之间的接口。
[0021] 在一些实施例中,一个或多个可编程集成电路可以形成现场可编程门阵列(FPGA)。
[0022] 在一些实施例中,DBMS可以包括库,该库包括用于在CPU与一个或多个可编程集成电路之间移动数据块的功能。附图说明
[0023] 为了可以详细地理解上述特征的方式,可以通过参考示例实现来进行上面简要概述的更具体的描述,其中一些示例实现在附图中示出。但是,应当注意,附图仅示出了典型的示例实现,因此不应当被视为对其范围的限制。
[0024] 图1示出了根据一个示例的包括数据库加速器的数据中心
[0025] 图2是根据一个示例的用于使用数据库加速器来执行查询的流程图
[0026] 图3示出了根据一个示例的用于将查询卸载到数据库加速器的DBMS。
[0027] 图4示出了根据一个示例的将数据库表转换为针对并行计算而定制的数据块。
[0028] 图5示出了根据一个示例的在数据库加速器中执行并行任务。
[0029] 为了便于理解,在可能的情况下使用相同的附图标记来表示图中共有的相同元素。可以想到,一个示例的元素可以有益地并入其他示例中。

具体实施方式

[0030] 在下文中参考附图描述各种特征。应当注意,附图可以按比例绘制或者可以不按比例绘制,并且在整个附图中,相似结构或功能的元素由相似的附图标记表示。应当注意,附图仅旨在促进对特征的描述。它们不旨在作为说明书的详尽描述或对权利要求的范围的限制。另外,所示出的示例不必具有所示的所有方面或优点。结合特定示例描述的方面或优点不必限于该示例,而是可以在任何其他示例中实践,即使未如此示出或者未明确描述。
[0031] 本文中的实施例描述了用于在数据库加速器中准备和执行与数据库查询相关的任务的技术。在一个实施例中,数据库加速器与主机CPU分离。例如,数据库加速器可以使用可编程集成电路(例如,现场可编程门阵列(FPGA))或非可编程集成电路(例如,专用集成电路(ASIC))来实现。在任何情况下,数据库加速器通信地耦合到执行数据库管理系统(DBMS)的主机CPU。
[0032] DBMS可以将与数据库查询相对应的任务卸载到数据库加速器。DBMS可以从数据库请求与查询相关的数据,并且然后将该数据转换为适合于由数据库加速器处理的数据块。在一个实施例中,数据库加速器包含可以并行或同时处理数据的各个硬件处理单元(PU)。
但是,为了同时处理数据,DBMS可以将从数据库取回的数据库表转换为包括个体PU数据块的数据块,每个PU数据块旨在用于数据库加速器中的相应PU。
[0033] 数据库加速器中的PU并行地执行PU数据块。例如,PU可以如由客户端查询(例如,结构化查询语言(SQL)查询)所指示地分析数据,并且然后返回个体结果。数据库加速器组合个体结果,并且将组合结果返回给DBMS。进而,在将查询结果传输给客户端之前,DBMS可以将从数据库加速器接收的结果与其他数据合并。以这种方式,DBMS可以利用由数据库加速器中的PU执行的并行化来执行数据库查询。
[0034] 图1示出了根据一个示例的包括数据库加速器145的数据中心100(例如,查询处理系统)。数据中心100包括数据库105A和105B以及计算节点110。在一个实施例中,数据库105是关系数据库,其中可以通过SQL查询来访问数据库105中存储的数据。然而,本文中的实施例不限于关系数据库。
[0035] 计算节点110包括经由PCIe连接130通信地耦合的主机CPU 115和FPGA 140。主机CPU 115执行DBMS 120(例如,在主机CPU 115上执行的软件应用),DBMS 120可以将与执行和分析客户端查询相关的任务卸载到数据库加速器145。在一个实施例中,DBMS 120是关系DBMS(RDBMS)。尽管未示出,但是DBMS 120接收要在数据库105上执行的查询(例如,客户端查询)。例如,查询可以是搜索、排序、字数统计或查询6,查询6指示DBMS 120从数据库105取回数据,处理数据,并且然后将结果返回给传输查询的客户端。此外,DBMS 120可以生成更新后的数据,更新后的数据然后被存储在数据库105中。
[0036] 代替使用主机CPU 115来执行查询,DBMS 120将与查询相对应的任务(或工作量)的至少一部分卸载到FPGA 140中的数据库加速器145。在一个实施例中,数据库加速器145可以执行与查询相关联的任务的一部分,而主机CPU 115执行其余任务。DBMS 120可以将从数据库加速器145获取的结果与由主机CPU 115生成的结果进行合并。
[0037] FPGA 140包括被配置为实现数据库加速器145的一个或多个可编程集成电路(未示出)中的可编程逻辑。使用FPGA的一个优点是,可以使用硬件描述语言将其可编程逻辑配置到可以并行地操作的PU150中。也就是说,FPGA 140可能更适合于并行地执行大量任务(或线程)。尽管示出了FPGA 140,但是在另一实施例中,数据库加速器145可以在诸如ASIC等非可编程集成电路上实现。如果使用ASIC,则ASIC可以被设计为包括用于并行地执行任务的PU 150。这样,本文中描述的实施例不限于在可编程集成电路中实现的数据库加速器145。
[0038] 为了与FPGA 140共享数据,DBMS 120包含加速器库125,该加速器库125包括用于在主机CPU 115与FPGA 140之间移动数据的功能。在一个实施例中,加速器库125包括将从数据库105接收到的数据转换为可以由数据库加速器145并行处理的格式的转换功能(在本文中称为“转换”)。例如,从数据库105接收到的数据可以组织成其中数据按行和列布置的数据库表或数据库页面。使用排队计算功能,DBMS 120可以将数据库表转换为可以分配给数据库加速器145中的各个PU 150的格式。除了排队计算功能,加速器库125还可以包括用于写入、读取和合并传输到数据库加速器145和从数据库加速器145接收的数据的其他命令。
[0039] PCIe连接130允许主机CPU 115和FPGA 140共享数据,但是,可以使用任何高速连接。在一个实施例中,DBMS 120可以执行直接存储器访问(DMA)以往返于数据库加速器145传输数据。
[0040] 在一个实施例中,计算节点110是诸如服务器等计算设备。在另一实施例中,计算节点110是刀片服务器。备选地,计算节点110可以是计算设备中的单独的组件。例如,计算节点110可以是其上安装有主机CPU 115和FPGA 140的公共基板,例如母板或现场可更换单元(FRU)。在另一种布置中,主机CPU 115可以设置在母板上,而FPGA 140可以插入母板中的扩展槽中。因此,FPGA 140可以被添加到计算节点110,以便增加主机CPU 115执行数据库查询的能。在另一示例中,主机CPU 115和FPGA 140可以封装在一起。
[0041] 在一个实施例中,客户查询被提交给数据中心100并且被分配给DBMS 120。例如,数据中心100可以是将客户端数据存储在数据库105中的计算环境的一部分。如下面将更详细地描述的,DBMS 120确定应当将多少(如果有的话)客户端查询卸载到数据库加速器145。DBMS 120从数据库105取回相关数据,在数据库加速器145的帮助下分析数据,并且将结果传输回客户端。尽管数据库105和计算节点110被示出为在数据中心100中共址,但是在其他实施例中,数据库105可以放置在与计算节点110不同的地理位置
[0042] 图2是根据一个示例的用于使用数据库加速器来执行查询的方法200的流程图。为了清楚起见,与图3并行地描述方法200中的框,图3提供了DBMS 120和数据库加速器145的功能和组件的更详细的说明。
[0043] 在框205,DBMS 120接收客户端查询以读取、分析或更新存储在数据库中的数据。客户查询可以源自一个人(例如,执行工资核算的会计或想要标识具有共同属性的雇员的人力资源经理)或源自软件应用。在一个实施例中,客户端查询是SQL查询。
[0044] DBMS 120使用客户端查询将数据库查询传输到数据库105。如图3所示,DBMS 120包括允许DBMS 120将对数据的请求传输到数据库105的数据库接口310。例如,DBMS 120可以包括与数据库105相对应的索引,该索引指示在数据库105中在何处存储了什么数据。DBMS 120可以使用该索引来标识与客户端查询相关的数据并且然后从数据库105请求该数据。响应于请求或查询,数据库105经由数据库接口310向DBMS 120返回数据库表305或数据库页面。在一个实施例中,数据库表305将数据按行和列布置。
[0045] 在框215,DBMS 120将数据库表305重新格式化为数据块340,每个数据块340具有与数据库加速器145中的PU 365相对应的多个PU数据块。在一个实施例中,与由数据库表305使用的格式相比,数据块340具有更适合于并行处理的格式。数据块340的特定格式在本公开中稍后描述。
[0046] 如图3所示,DBMS 120使用来自加速器库的排队计算功能325来对数据块340进行重新格式化和排队。在该示例中,排队计算功能325使用数据库表305(其可以存储在数据库接口310中的缓冲器315中)来生成数据块340。DBMS 120可以使用不同的排队计算功能325来为由图3所示的不同的竖直队列表示的不同查询生成数据块340。在一个示例中,不同的竖直查询表示不同的线程。在DBMS 120中执行不同的线程可以避免使主机CPU过载。
[0047] 在一个实施例中,多个数据块340对应于同一查询。例如,为了执行查询6,DBMS 120可以多次调用排队计算功能325,以便生成由数据库加速器145处理的多个数据块340。
[0048] 数据块340可以包括一个或多个数据库表305。例如,数据块340可以在单个数据库表305中包含全部数据或数据的子集,或者数据块340可以包含来自多个数据库表305的数据。在另一示例中,单个数据库表305可以被划分为多个数据块340,在这种情况下,如图3所示,数据块340在DBMS 120中排队,以等待由数据库加速器145进行处理。在一个实施例中,排队的数据块340被一个接一个地发送到数据库加速器145。
[0049] 在将数据块340传输到数据库加速器145之前,DBMS可以对数据块340执行写入回调功能330。写入回调功能330可以是加速器库的一部分,并且可以在使用DMA将数据块340传输到数据库加速器145之前执行。写入回调功能330用于在数据库加速器145处理块340之前将数据写到数据块340。例如,DBMS 120可以已经从客户端接收到更新后的数据作为查询的一部分,并且因此,在由数据库加速器145中的PU 365分析块之前,首先将更新后的数据写入数据块340。
[0050] 在框220,DBMS 120将数据框340传输到数据库加速器145。DBMS 120包括用作DBMS 120与FPGA 140之间的接口的FPGA框架345。在一个实施例中,FPGA框架345将由DBMS 120发出的命令和指令转换为可以由FPGA 140解释的命令。FPGA框架345(例如,可编程集成电路框架)可以使用开发环境进行配置,该开发环境使用应用代码(例如,OpenCL、C、C++等)来使得主机CPU(例如,基于x86的平台)能够与FPGA 140通信。例如,FPGA框架345允许将FPGA用作加速器,例如数据库加速器145。用于生成FPGA框架345的开发环境的一个非限制性示例是Xilinx的SDx开发环境,它支持OpenCL、C和C++内核。FPGA框架345以及图1中的加速器库
125使得DBMS 120能够将任务卸载到FPGA 140和数据库加速器145,这类似于主机CPU将任务卸载到诸如图形加速器或加密加速器等其他加速器。
[0051] 在框225,数据库加速器145根据查询使用PU 365并行地处理数据块340中的相应PU数据块。数据块340在数据库加速器145中的解析器360处接收。解析器360可以将数据块340划分为单独的PU数据块,单独的PU数据块然后被转发给相应PU 365。如图所示,PU365可以包含相应的存储器元件(例如,BRAM 370)以用于存储PU数据块以及数据块的处理结果。
[0052] 除了传输数据块340,DBMS 120还可以向数据库加速器145传输指示PU 365应当如何根据接收到的客户端查询来处理数据块340的指令。例如,如果查询是单词计数查询,则DBMS 120将要计数的、由客户端指定的特定单词传输到数据库加速器145。然后,单词被发送到PU 365,PU 365遍历其相应PU数据块以标识该单词的任何出现。在另一示例中,如果查询是排序,则DBMS 120提供用于对数据块340进行排序的参数,PU 365随后使用这些参数来重新布置数据块340。以这种方式,DBMS 120可以向数据库加速器145提供要分析的数据以及用于分析数据的指令或参数。
[0053] DBMS 120包括确定何时使用FPGA框架345将数据传输到FPGA140的事件管理器320。例如,事件管理器320可以监测包含数据块340的队列并且确定数据块340(或块)应当何时被传输到数据库加速器145。
[0054] PU 365根据由查询和/或DBMS 120定义的参数来分析其相应块。如上所述,PU 365是单独的硬件元件,并且因此可以并行执行。例如,PU 365A可以在PU 365B分析PU 365B的PU数据块的同时分析PU365A的对应的PU数据块。尽管在图3中仅示出了几个PU 365,但是FPGA 140可以被配置为使得数据库加速器145具有数十个或数百个PU 365,每个PU 365可以独立于其他PU 365进行操作,使得数据块340可以并行处理。
[0055] PU 365将分析或处理PU数据块的结果转发给组合器375。在框230,组合器375组合由PU输出的结果。例如,对于排序查询,每个PU 365对其个体PU数据块进行排序,并且然后组合器375可以将排序的数据块组合成连续的数据块。对于单词计数或搜索查询,组合器375可以标识总单词计数或者组合搜索结果以标识数据块340中找到搜索项的所有位置。
[0056] 当数据库加速器145完成对接收到的数据块340的处理时,FPGA140通知事件管理器320,该事件管理器320执行读取回调功能335,该读取回调功能335使用FPGA框架345指示FPGA 140传输由数据库加速器145获取的结果。在框235,FPGA 140响应于读取的回调功能335而将组合结果传输到主机CPU和DBMS 120。
[0057] 在一个实施例中,尽管未示出,但是DBMS 120可以调用其他功能以重新格式化从数据库加速器145接收的组合结果。例如,如果数据将被存储在数据库105中(例如,数据库加速器145改变或重新布置数据),则DBMS 120可以将数据格式化为由数据库表305使用的格式。
[0058] 在框240,DBMS 120合并从数据库加速器145接收的结果。例如,DBMS 120可以已经将数据库表305划分成多个数据块340,这些数据块被数据库化的加速器145顺序地处理。由于处理数据块340的结果是从数据库加速器145接收的,所以DBMS 120中的合并器355可以将顺序地处理个体数据块340的结果合并为与数据库表305相对应的组合结果集,而不仅仅是个体数据块340。此外,合并器355还可以将从数据库加速器145返回的结果与由本地查询管理器350提供的结果合并。例如,DBMS 120可以使用本地查询管理器350执行与查询相关的某个任务,并且使用数据库加速器145执行同一查询的其他任务。合并器355可以合并使用查询管理器350在主机CPU上本地生成的结果和由数据库加速器145生成的结果。但是,在其他实施例中,与查询相关联的所有任务都可以由数据库加速器145执行。在这种情况下,合并器355将不需要合并由数据库加速器145提供的结果与本地结果。
[0059] 在框245,DBMS 120将查询结果380转发给客户端。查询结果380可以包括单词计数、搜索结果、以特定方式对数据进行排序的结果等。在一个实施例中,DBMS 120还可以响应于查询而更新存储在数据库105中的数据。例如,尽管未在图3中示出,但是DBMS 120可以使用数据库接口310来将更新后的数据库表305传输给数据库105。在另一示例中,DBMS 120可以响应于查询而删除或移动存储在数据库105中的数据。在另一实施例中,DBMS 120可以响应于客户端查询而在数据库105中存储、删除或移动数据,而不向客户端返回任何结果。例如,客户端查询可以是用于改变或更新数据库105中存储的数据的指令,该指令不需要将结果返回给客户端。尽管如此,DBMS 120仍然可以使用数据库加速器145来例如更新存储在数据库105中的数据,即使由数据库加速器145提供的结果存储在数据库105中而不是被传递给客户端。
[0060] 尽管方法200示出了使用PU 365并行地处理单个数据块340,但是在其他实施例中,数据库加速器145可以并行地处理多个数据块340。例如,一半PU 365可以处理一个数据块340,而另一半PU 365可以处理不同的数据块340。此外,在一个实施例中,FPGA 140可以包括可以独立操作的多个数据库加速器145。因此,加速器中的一个加速器可以处理图3所示的竖直队列(或线程)之一的数据块中的一个数据块,而另一加速器可以并行地处理来自另一竖直队列的数据块。
[0061] 图4示出了根据一个示例的将数据库表305转换为针对并行计算而定制的多个数据块340。例如,实现数据库加速器的FPGA中的存储器可以比托管DBMS的CPU的存储器小得多,后者可以对应于数据库表305的大小。例如,数据库表305的大小可以为256-512GB,而FPGA的存储器限制为2-8GB。因此,将数据库表305划分为数据块340可以允许FPGA更有效地处理表305中的数据。
[0062] 在一个实施例中,数据库表305表示存储在关系数据库中的数据。在查询数据库时,DBMS可以提供其想要从数据库取回的行、列或表的列表。图4仅示出了数据库表305的一个示例,其中数据被布置成可以由数据库提供给DBMS的列405和行410。在一个实施例中,数据块340可以通过组合和选择适当的行来包括来自多个数据库表305的数据的部分。当在诸如联接等其他数据库操作中引用多个表时,使用来自多个数据库表305的所选择的数据的部分生成数据块340可以很有用。
[0063] 如上所述,用于在数据库中存储或布置数据的格式对于使用并行操作的数据库加速器中的PU来进行数据分析可能不是理想的选择。这样,图4示出了执行转换400,其中表305中的数据被重新格式化为数据块340。在一个实施例中,转换400是由DBMS使用加速器库中的功能(例如,排队计算功能)来执行的。然而,在另一实施例中,转换400可以通过数据库加速器中的逻辑(例如,用FPGA中的硬件)执行。
[0064] 在图4中,数据块340包括相应PU数据块420,如上所述,相应PU数据块420可以由数据库加速器中的相应PU处理。在一个实施例中,数据块340可以包括用于数据库加速器中的每个PU的相应的PU数据块420,尽管这不是必需的。例如,当由数据库加速器处理数据块340时,一些PU可以是空闲的,或者不具有对应的PU数据块420的PU可以用于执行与查询相关的其他任务。
[0065] 每个PU数据块420包括报头425和数据435。在一个实施例中,报头425指示在特定PU数据块420中的数据435的行数。例如,PU数据块420可以不具有相同数量的数据435,在这种情况下,DBMS120可以通过更新报头425中的行指示符430来指示PU数据块420中有多少数据。
[0066] 数据435包含布置在数据库表305中的数据。换言之,数据435是存储在表305中的列405和行410的数据。但是,DBMS 120可以在PU数据块420中不同地存储数据435。例如,数据435可以不以PU数据块420中的行和列的形式布置,而是通过某种其他方式布置。
[0067] 通过将数据库表305重新格式化为包含相应PU数据块420的数据块340,可以通过数据库加速器中的PU来分析数据435。此外,通过划分数据库表305中的数据,PU可以接收可以被并行地分析的数据的相应块(例如,PU数据块420)。在一个实施例中,PU可以处理PU数据块420,而无需等待来自其他PU的结果。换言之,分析PU数据块420可以是独立的操作,使得PU可以并行地操作而无需等待来自另一PU的结果。
[0068] 尽管未在图4中示出,但是在将由数据库加速器中的PU生成的结果转发给客户端或数据库时,DBMS可以执行另一转换。例如,如果客户端查询指示DBMS更新存储在数据库中的数据(并且使用数据库加速器来更新数据),则DBMS可以将从数据库加速器返回的数据格式化为类似于数据库表305的格式,使得可以将数据存储在关系数据库中。
[0069] 图5示出了根据一个示例的用于在数据库加速器145中执行并行任务的系统500。系统500包括通信地耦合到数据库加速器145的双倍数据速率(DDR)存储器505。DDR存储器
505包括由DBMS准备的数据块340。在一个实施例中,DDR存储器505响应于来自事件管理器或DBMS的命令而将数据块340传输给数据库加速器145中的读取缓冲器570。(多个)数据块
340然后被分离为与数据库加速器145中的相应PU(未示出)相对应的相应PU流515。将数据块340分离为PU流515利用了数据库加速器145中的PU的并行化。PU可以独立地处理或分析其相应PU流515,而与其他PU处理其PU流515无关。因此,可以由数据库加速器145并行地处理PU流515。
[0070] 一旦被处理,数据库加速器就可以调用GET_PU_RESULT功能520以取回由于处理PU流515而产生的结果。例如,如果查询是单词计数查询,则PU遍历PU流515以标识由客户端指定的、要进行计数的特定单词。通过调用GET_PU_RESULT功能520,数据库加速器可以确定由每个PU标识的单词的出现数目。
[0071] 组合器375接收由于调用GET_PU_RESULT功能520而产生的结果,并且组合结果。以这种方式,来自PU的结果可以被合并成数据库加速器145的组合结果530,组合结果530被存储在输出缓冲器525中。在一个实施例中,输出缓冲器525响应于来自事件管理器的指令而将组合结果转发给DBMS 120。例如,事件管理器可以监测数据库加速器145,以确定何时所有PU已经完成对一个或多个特定数据块340的处理。一旦完成,事件管理器就指示数据库加速器145将组合结果530转发给DBMS 120。
[0072] 在一个实施例中,用于在数据库加速器145内处理和传输数据的功能可以从诸如C、C++、Open CL等软件代码中模拟,而不是直接从硬件描述语言(HDL)或寄存器传输级别(RTL)代码生成功能。例如,高级综合(HLS)应用可以使用软件代码来配置可编程电路(例如,FPGA),而无需程序员手动创建RTL代码。此外,HLS应用可以包括用于处理抽象概念的库,诸如不同的数据类型(例如,整数、浮点等)、流数据结构、高级数学公式(例如,正弦、余弦、平方根等)、或数字信号处理(例如,卷积、幅度调制、解码器等)。
[0073] 在一个实施例中,HLS应用用于生成图5所示的流环境。例如,数据块340的一部分可以被馈送到具有不同的读取和写入数据宽度的PU流515中,该数据宽度可以被设计为保持每个PU以最大效率并行操作。此外,在将数据块340从DDR存储器505传输到读取缓冲器510时的DDR突发长度可以足够长以减小DDR效率低下。宽的DDR宽度利用优化的PU资源使用和处理周期数来使效率最大化。在一个实施例中,可以通过条带化的读取缓冲器来减少将块RAM用作读取缓冲器510和输出缓冲器525。
[0074] 在一个实施例中,对于SQL查询,可以针对FPGA上的单个内核或计算单元组合由于并行地执行PU而产生的结果。例如,与在主机CPU上执行查询6操作相比,具有2MB的数据块大小和32KB的PU块大小的一个查询6处理单元可以以大于25倍的执行时间改进来执行。随着数据库加速器145中的PU数目的增加,还可以改善执行时间。
[0075] 已经出于说明的目的给出了本发明的各种实施例的描述,但是这些描述并不旨在是穷举性的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,很多修改和变化对于本领域普通技术人员将是很清楚的。选择本文中使用的术语是为了最好地解释实施例的原理、对市场上的技术的实际应用或技术改进,或者使得本领域普通技术人员能够理解本文中公开的实施例。
[0076] 在前面,参考了本公开中提出的实施例。然而,本公开的范围不限于特定描述的实施例。相反,可以构想本文中描述的特征和元素的任何组合(而不管是否与不同的实施例相关)以实现和实践所构想的实施例。此外,尽管本文中公开的实施例可以实现优于其他可能的解决方案或优于现有技术的优点,但是通过给定实施例是否实现特定优点并不限制本公开的范围。因此,本文中描述的方面、特征、实施例和优点仅是示例性的,而不被认为是所附权利要求的要素或限制,除非在权利要求中明确叙述。同样,对“本发明”的引用不应当被解释为本文中公开的任何发明主题的概括,并且不应当被视为所附权利要求的要素或限制,除非在权利要求中明确叙述。
[0077] 本文中描述的方面可以采取以下形式:完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)、或结合了软件和硬件方面的实施例,这些方面在本文中通常全部可以被称为“模块”或“系统”。
[0078] 本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于引起处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(媒质)。
[0079] 计算机可读存储介质可以是可以保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括:便携式计算机磁盘、硬盘随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、记忆棒、软盘、机械编码设备(诸如其上记录有指令的凹槽中的打孔卡或凸起结构)、以及前述各项的任何合适的组合。如本文中使用的,计算机可读存储介质不应当被理解为暂态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线传输的电信号
[0080] 可以经由例如因特网、局域网、广域网和/或无线网络等网络将本文中描述的计算机可读程序指令从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0081] 用于执行本发明的操作的计算机可读程序指令可以是汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者用一种或多种编程语言(包括诸如Smalltalk、C++等面向对象的编程语言、以及诸如“C”编程语言或类似编程语言等常规过程编程语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上,部分地在用户的计算机上,作为独立软件包执行,部分地在用户的计算机上并且部分地在远程计算机上,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以与外部计算机建立连接(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路系统、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路系统可以通过利用计算机可读程序指令的状态信息个性化电子电路系统来执行计算机可读程序指令,以执行本发明的方面。
[0082] 本文中参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述了本发明的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令来实现。
[0083] 可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得这些指令在经由计算机或其他可编程数据处理装置的处理器执行时创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指导计算机、可编程数据处理装置和/或其他设备以特定方式起作用,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
[0084] 也可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上,以引起一系列操作步骤在计算机、其他可编程装置或其他设备上被执行以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
[0085] 附图中的流程图和框图示出了根据本发明的各个实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示指令的模块、片段或部分,其包括用于实现(多个)指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还应当注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或者执行特殊用途的硬件和计算机指令的组合的特殊用途的基于硬件的系统来实现。
[0086] 尽管前述内容针对特定示例,但是在不脱离其基本范围的情况下,可以设计其他示例和另外的示例,并且其范围由所附权利要求确定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈