首页> 中国专利> 使用可编程逻辑器件(PLD)来提供数据库加速的系统和方法

使用可编程逻辑器件(PLD)来提供数据库加速的系统和方法

摘要

本公开涉及使用可编程逻辑器件(PLD)来加速数据库操作的计算机实现的系统和方法。在一个实现方式中,一种加速数据库的方法可以包括以下步骤:传送第一硬件配置指令集,以使至少一个可编程逻辑器件(PLD)的第一部分从一个或更多个片上存储器检索数据库元素;传送第二硬件配置指令集,以使至少一个PLD的第二部分执行一个或更多个数据库操作;传送第三硬件配置指令集,以使至少一个PLD的第三部分基于到来的数据库查询的至少一部分内容来将查询定向至至少一个PLD的第一部分或第二部分;传送数据库至至少一个PLD;接收针对数据库执行的查询并将查询发送至至少一个PLD;以及响应于查询,从至少一个PLD接收结果。

著录项

  • 公开/公告号CN113168372A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201980079093.2

  • 申请日2019-01-10

  • 分类号G06F12/00(20060101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人刘爱勤;王小东

  • 地址 英属开曼群岛大开曼

  • 入库时间 2023-06-19 11:55:48

说明书

技术领域

本公开总体上涉及数据库操作和可编程逻辑器件的领域。更具体地并且非限制性地,本公开涉及使用可编程逻辑器件来加速数据库的计算机实现的系统和方法。本文公开的系统和方法可以用于各种应用,诸如关系数据库(例如,结构化查询语言(SQL)数据库等)、图形数据库(例如,ArangoDB查询语言(AQL)数据库、另一NoSQL数据库等)或任何其它数据库结构。

背景技术

针对数据库操作,现场可编程门阵列(FPGA)和其它可编程逻辑器件(PLD)通常比常规处理硬件(诸如中央处理单元(CPU)、图形处理单元(GPU)等)更高效。然而,使用FPGA和其它PLD来加速数据库通常仅包括特定的数据库操作,从而限制了加速系统的灵活性。例如,许多加速系统只能处理部分复杂查询,如果能够处理的话。

此外,使用FPGA和其它PLD来加速数据库通常是专门针对行存(row-oriented)数据库或列存(column-oriented)数据库来设计的。因此,这样的加速系统不能跨不同数据库定向来使用。

发明内容

在一些实施方式中,一种使用至少一个可编程逻辑器件(PLD)来加速数据库的系统可以包括:至少一个存储器,所述至少一个存储器被配置成存储指令;以及至少一个处理器,所述至少一个处理器被配置成执行所述指令以使所述系统执行操作。所述操作可以包括:传送第一硬件配置指令集,以使所述至少一个PLD的第一部分从一个或更多个片上存储器检索(retrieval)数据库元素(element);传送第二硬件配置指令集,以使所述至少一个PLD的第二部分执行一个或更多个数据库操作;传送第三硬件配置指令集,以使所述至少一个PLD的第三部分基于到来的数据库查询的至少一部分内容来将所述查询定向至所述至少一个PLD的所述第一部分或所述第二部分;传送数据库至所述至少一个PLD;接收针对所述数据库执行的查询并将所述查询发送至所述至少一个PLD,以针对所传送的数据库执行所述查询;以及响应于所述查询,从所述至少一个PLD接收结果。

在一些实施方式中,一种使用至少一个可编程逻辑器件(PLD)来加速数据库的方法可以包括以下步骤:传送第一硬件配置指令集,以使所述至少一个PLD的第一部分从一个或更多个片上存储器检索数据库元素;传送第二硬件配置指令集,以使所述至少一个PLD的第二部分执行一个或更多个数据库操作;传送第三硬件配置指令集,以使所述至少一个PLD的第三部分基于到来的数据库查询的至少一部分内容来将所述查询定向至所述至少一个PLD的所述第一部分或所述第二部分;传送数据库至所述至少一个PLD;接收针对所述数据库执行的查询并将所述查询发送至所述至少一个PLD,以针对所传送的数据库执行所述查询;以及响应于所述查询,从所述至少一个PLD接收结果。

在一些实施方式中,一种非暂时性计算机可读存储介质可以存储有指令集,所述指令集可由一个或更多个处理器执行,以使所述一个或更多个处理器执行使用至少一个可编程逻辑器件(PLD)来加速数据库的方法。所述方法可以包括以下步骤:传送第一硬件配置指令集,以使所述至少一个PLD的第一部分从一个或更多个片上存储器检索数据库元素;传送第二硬件配置指令集,以使所述至少一个PLD的第二部分执行一个或更多个数据库操作;传送第三硬件配置指令集,以使所述至少一个PLD的第三部分基于到来的数据库查询的至少一部分内容来将所述查询定向至所述至少一个PLD的所述第一部分或所述第二部分;传送数据库至所述至少一个PLD;接收针对所述数据库执行的查询并将所述查询发送至所述至少一个PLD,以针对所传送的数据库执行所述查询;以及响应于所述查询,从所述至少一个PLD接收结果。

本公开的附加目的和优点将在下面的详细描述中部分地阐述,并且部分地根据该描述将是显而易见的,或者可以通过本公开的实践来学习。本公开的目的和优点将借助于所附权利要求中具体指出的元素和组合来实现和获得。

应理解,前面的总体描述和下面的详细描述仅是示例性和说明性的,并且不限制所公开的实施方式。

附图说明

包括本说明书的一部分的附图例示了多个实施方式,并且与说明书一起用于解释所公开的实施方式的原理和特征。在附图中:

图1是根据本公开的实施方式的现场可编程门阵列(FPGA)中的基元(primitive)的示意图。

图2是根据本公开的实施方式的用于配置可编程逻辑器件(PLD)以加速所传送的数据库的示例性架构。

图3是根据本公开的实施方式的用于在PLD中的数据库加速的配置的示意图。

图4是根据本公开的实施方式的用于PLD中的存储器阵列的配置的示意图。

图5是根据本公开的实施方式的用于PLD中的运算符阵列的配置的示意图。

图6是根据本公开的实施方式的用于PLD中的消息交换或数据交换的配置的示意图。

图7A是根据本公开的实施方式的列存数据库的图形表示。

图7B是根据本公开的实施方式的行存数据库的图形表示。

图8是根据本公开的实施方式的配置PLD用于数据库加速的示意图。

图9是根据本公开的实施方式的使用可编程逻辑器件(PLD)来加速数据库的示例性方法的流程图。

图10是与本公开一致的用于执行方法的示例性计算机系统的描绘图。

具体实施方式

现在将详细参照示例性实施方式,在附图中例示了该示例性实施方式的示例。以下描述参照附图,在附图中,除非另外表示,否则不同附图中的相同附图标记表示相同或相似的元素。在示例性实施方式的以下描述中阐述的实现方式并不表示与本发明一致的所有实现方式。相反,所述实现方式仅仅是与如所附权利要求中所述的与本发明有关的方面一致的装置和方法的示例。

所公开的实施方式涉及使用可编程逻辑器件(PLD)来加速数据库的计算机实现的系统和方法。例如,系统可以被配置用于多种操作(诸如正则表达式匹配、整数比较、字符串比较、压缩命令、gzip命令等)以及具有辅助(minor)数据库操作的数据库检索(诸如使数据库元素为空值、对数据库元素进行移位、递增数据库元素、递减数据库元素等)。有利地,示例性实施方式可以提供相比于常规数据库加速系统的改进的灵活性和效率。本公开的实施方式还可以提供可被重新配置成接受列存数据库以及行存数据库的数据库加速系统。

可以在各种可编程逻辑器件(PLD)中实现和使用本公开的实施方式。因此,尽管参照现场可编程门阵列(FPGA)进行了描述,但是其它PLD(诸如可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、复杂可编程逻辑器件(CPLD)等)可以根据本公开执行数据库加速。

本公开的实施方式提供了使用PLD来提供数据库加速的计算机实现的系统和方法。本公开的系统和方法可以提供针对所述技术问题的技术解决方案,该技术解决方案配置PLD用于灵活的数据库加速以与查询分开地处理检索以便加速该检索。此外,本公开的系统和方法可以提供针对所述技术问题的技术解决方案,该技术解决方案配置PLD用于灵活的数据库加速以并行处理多个查询。因为本公开的系统和方法提供数据库加速,所以与在通用处理器上执行的数据库检索或操作相比,本公开的系统和方法还可以使效率提高。

图1是FPGA(或其它PLD)的架构的示例性部分100、150的示意图。如图1所示,基元105a可以连接至多个数据缓冲部(buffer)(诸如片外缓冲部103a和103b或片上缓冲部101a和101b)。如本文所使用的,基元是指对一个或更多个输入执行基本运算(无论是逻辑的(诸如AND、OR、XOR等),还是算术的(诸如乘法、加法、减法、最大值、最小值等))以产生一个或更多个输出的FPGA节点。例如,在图1中,基元105a可以接受来自片外缓冲部103a或片上缓冲部101a的输入,并且可以输出至片外缓冲部103b或片上缓冲部101b。如本文所使用的,缓冲部是指用于传送数据的任何总线(诸如电线、光缆等)以及联接至该总线并用于存储(并因此“缓冲”)数据的任何存储器或用于管理总线上的传送的任何仲裁器(arbitor)或其它定时硬件。

类似于基元105a,基元105b可以接受来自片外缓冲部103c或片上缓冲部101b的输入,并且可以输出至片外缓冲部103d或片上缓冲部101c。因此,在图1的示例中,基元105a可以使用片上缓冲部101b将其输出作为输入提供至基元105b。因此,基元105a和基元105b可以被分组为从由基元105a执行的操作流至由基元105b执行的操作的操作子图。本公开的实施方式可以将FPGA(或其它PLD)的基元(诸如基元105a和基元105b)配置成加速数据库操作。片上存储器和片外存储器(在图1的示例中未示出)可以存储数据库的先前被映射并传送至该数据库的元素。

图2是与本公开的实施方式一致的用于将数据库传送至PLD并且用于配置PLD以对所传送的数据库执行加速操作的系统200的示意图。如图2所示,非暂时性存储介质201(诸如随机存取存储器(RAM)或只读存储器(ROM))可以存储数据库。数据库可以包括关系数据库、图形数据库或具有可经由至少一个索引搜索的多个元素的任何其它数据结构。

编译器207可以包括由至少一个处理器执行的一个或更多个指令。例如,编译器207可以包括由通用处理器(诸如中央处理单元(CPU)、图形处理单元(GPU)等)或专用处理器(诸如FPGA或其它专用集成电路(ASIC)等)执行的一系列指令。如图2所示,编译器207可以配置可编程逻辑器件(PLD)209,以执行一个或更多个数据库操作(例如,操作205)。另外地或另选地,尽管在图2中未示出,但是编译器207可以例如通过确定PLD 209的片上存储器和片外存储器的大小和空间位置以及将数据库201的元素映射至该片上存储器和片外存储器的块来生成数据库201与可编程逻辑器件(PLD)209之间的映射。如下文所描述的,在编译器207进一步将PLD 209配置用于加速数据库201的实施方式中,编译器207可以生成映射,使得数据库元素存储在与PLD 209的被配置成智能存储器阵列(如下文关于图4解释的)的基元相邻的片上存储器中。此外,如下文关于图7A和图7B进一步解释的,编译器207可以将数据库201映射至PLD 209,使得该映射与数据库201是行存的还是列存的无关。

如图2进一步所示的,编译器207可以生成一个或更多个硬件配置指令集(例如,如下文在图9的方法900中所描述的)。例如,指令可以配置PLD 209的一个或更多个基元,以对传送至PLD 209的数据库201执行数据库检索(例如,操作205),以及对传送至PLD 209的数据库201执行数据库操作。在一些实施方式中,指令可以包括采用规范语言(诸如Verilog、脉冲C或任何其它硬件描述语言(HDL))的一个或更多个数据文件。另外,编译器207可以配置一个或更多个交换机(switch)(例如,交换机203),以在对数据库201的查询之间进行仲裁并管理从PLD 209和到PLD 209的数据传送。如图2所示,交换机203可以在单独的处理器(例如,诸如CPU、GPU等的单独的通用处理器或者诸如FPGA或其它ASIC的单独的专用处理器)上实现。另外地或另选地,例如,如下文关于图6所描述的,交换机203可以至少部分地由PLD 209的一个或更多个基元来实现。

尽管未在图2中示出,但编译器207可以例如根据所生成的映射或者一个或更多个硬件配置指令集经由接口将数据库201传送至PLD 209。例如,接口可以包括外围部件互连(PCI)总线、PCI快速总线等。因此,接口可以促进到PLD 209或从PLD 209的数据传送。

图3描绘了用于在一个或更多个PLD(例如,PLD 307)中的数据库加速的示例性配置300。在图3的示例中,PLD 307包括运算符基元309和片上存储器311并且与片外存储器312进行通信。通过将数据库的全部或至少一部分存储在片上存储器311中,相对于常规系统上的检索,PLD 307可以加速数据库检索。此外,PLD 307或PLD 307外部的一个或更多个处理器(例如,诸如CPU、GPU等的单独的通用处理器或者诸如FPGA或其它ASIC的单独的专用处理器)可以提供消息交换机303和数据交换机305。尽管未在图3中示出,但是片上存储器311可以具有用于数据传入和传出的关联基元。这样的基元可以另外地执行辅助数据库操作(诸如使数据库元素为空值、对数据库元素进行移位、递增数据库元素、递减数据库元素等)。

数据交换机305可以对数据库检索请求进行排队,使得可以并发地执行对来自片上存储器311或片外存储器312的不同部分的元素的请求而不会发生冲突。类似地,消息交换机303可以对操作进行排队,使得运算符基元309的不同基元可以并发地执行操作而不会发生冲突。数据交换机305可以从处理器301接收请求,并且消息交换机303可以从处理器301接收操作。

如本文所使用的,并发可以包括并行性(例如,运算符基元309的一个部分在运算符基元309的另一部分正在执行命令的同时执行命令,基元的与片上存储器311相关联的一部分在基元的与片上存储器311相关联的另一部分正在执行命令的同时执行命令,或者基元的与片外存储器312相关联的一部分在基元的与片外存储器312相关联的另一部分正在执行命令的同时执行命令)以及并发性(例如,运算符基元309的一个部分与运算符基元309的另一部分一起执行命令,使得在同一时间段期间间歇地执行命令,基元的与片上存储器311相关联的一部分与基元的与片上存储器311相关联的另一部分一起执行命令,使得在同一时间段期间间歇地执行命令,或者基元的与片外存储器312相关联的一部分与基元的与片外存储器312相关联的另一部分一起执行命令,使得在同一时间段期间间歇地执行命令)。

如图3进一步所示,在一些实施方式中,处理器301可以执行直接从片上存储器311的检索,并且向消息交换机303和数据交换机305发送操作。其它实施方式可以防止这种直接检索,以便确保数据交换机305可以防止并发检索之间的冲突。类似地,如图3所示,在一些实施方式中,运算符基元309、执行从片上存储器311的检索的基元或执行从片外存储器312的检索的基元可以直接进行通信,例如在运算符基元309需要一个或更多个检索以完成辅助操作(例如,使数据库元素为空值、对数据库元素进行移位、递增数据库元素、递减数据库元素等)的情况下。其它实施方式可以防止这样的直接检索,使得运算符基元309将任何请求(直接地或经由消息交换机303)发送至数据交换机305,以便确保数据交换机305可以防止并发检索之间的冲突。在这样的实施方式中,消息交换机303可以在对操作进行排队以供执行之前将所需请求发送至数据交换机305。相应地,数据交换机305(或执行从片上存储器311的检索的基元,或者执行从片外存储器312的检索的基元)可以将所请求的元素提供至消息交换机303以与操作排队或直接提供至被分配给操作的运算符基元309。

图4描绘了用于在PLD(例如,图3的PLD 307)中实现智能存储器阵列的示例性配置400。如图4所示,输入401可以包括由PLD接收的用于在所传送的数据库(例如,图2的数据库201)中执行的检索请求。在一些实施方式中,输入401可以另外地或另选地包括由PLD接收的用于在所传送的数据库中执行的辅助操作(例如,使一个或更多个数据库元素为空值、对一个或更多个数据库元素进行移位、递增一个或更多个数据库元素、递减一个或更多个数据库元素等)。在一些实施方式中,一个或更多个仲裁器(例如,仲裁器403)可以对多个输入进行排队以避免冲突。仲裁器403可以包括PLD的被配置成执行这种排队的一个或更多个基元。仲裁器403可以另外对检索结果或辅助数据库操作进行排队,以作为输出409返回。

如图4进一步所示,仲裁器403可以进一步基于输入401的内容来将输入401的一个或更多个部分提供给形成命令执行器405的一个或更多个基元。例如,如果输入401包括多个数据库请求,则仲裁器403可以划分请求,使得命令执行器405的不同部分可以并发地执行请求。另外地或另选地,如果输入401包括具有一个或更多个辅助数据库操作的一个或更多个请求,则仲裁器403可以将请求与操作划分开,使得命令执行器405的不同部分可以与操作并发地执行请求。在另一示例中,如果输入401包括具有一个或更多个数据库操作的一个或更多个请求,则仲裁器403可以将请求与操作划分开,使得操作被发送至PLD的消息交换机(或者,在一些实施方式中,直接发送至PLD的运算符阵列的一部分,如下文关于图5所描述的),并且由命令执行器405执行请求。在又一示例中,输入401可以包括一个或更多个请求,所述一个或更多个请求是从PLD的执行需要所述一个或更多个请求的一个或更多个操作的运算符阵列接收的;相应地,仲裁器403可以将输入401提供至命令执行器403,以检索并传递至PLD的消息交换机(或者,在一些实施方式中,直接传递至PLD的运算符阵列的所述输入401所源自的部分)。

命令执行器405可以包括被配置成对存储体407-1、…、407-n执行读操作的一个或更多个基元。存储体407-1、…、407-n可以包括片上存储体或片外存储体。此外,存储体407-1、…、407-n可以存储所传送的数据库(例如,图2的数据库201)。在一些实施方式中,命令执行器405可以进一步被配置成执行辅助数据库操作。例如,命令执行器405可以包括被配置成对存储体407-1、…、407-n执行写操作(例如,空值操作、移位操作、递增操作、递减操作等)的一个或更多个基元。这样的操作的示例在下面的表1中示出。

表1

图5描绘了用于在PLD(例如,PLD 505)中实现运算符阵列的示例性配置500。如图5所示,输入501可以包括由PLD接收的用于在所传送的数据库(例如,图2的数据库201)中执行的数据库操作。在一些实施方式中,输入501可以另外地或另选地包括用于数据库操作的数据库请求(例如,针对来自所传送的数据库的一个或更多个元素)。在一些实施方式中,一个或更多个仲裁器(例如,仲裁器503)可以对多个输入进行排队以避免冲突。仲裁器503可以包括PLD的被配置成执行这种排队的一个或更多个基元。仲裁器503可以另外对数据库操作的结果进行排队,以作为输出509返回。

如图5进一步所示,仲裁器503可以进一步基于输入501的内容来将输入501的一个或更多个部分提供至与输入501中包括的操作相对应的一个或更多个基元集。在图5的示例中,PLD 505包括正则表达式基元507a、整数比较基元507b、字符串比较基元507c、压缩基元507d和GZip基元507e。在下面的表2中示出了由处理器阵列500提供的可能的操作的另外的示例。

表2

相应地,例如,如果输入501包括多个数据库操作,则仲裁器503可以划分请求,使得PLD 505的不同部分可以并发地执行操作。另外地或另选地,如果输入501包括具有一个或更多个数据库操作的一个或更多个请求,则仲裁器403可以将请求与操作划分开,使得请求被发送至PLD的消息交换机(或者,在一些实施方式中,直接发送至PLD的智能存储器阵列的一部分,如上文关于图4所描述的),并且由PLD 505的多个部分(例如,正则表达式基元507a、整数比较基元507b、字符串比较基元507c、压缩基元507d、GZip基元507e等)执行操作。在另一示例中,如果输入501包括具有一个或更多个其它数据库操作的一个或更多个辅助数据库操作,则仲裁器403可以将辅助操作与其它操作划分开,使得辅助操作被发送至PLD的数据交换机(或者,在一些实施方式中,直接发送至PLD的智能存储器阵列的一部分,如上文关于图4所描述的),并且由PLD 505的多个部分(例如,正则表达式基元507a、整数比较基元507b、字符串比较基元507c、压缩基元507d、GZip基元507e等)执行其它请求。在又一示例中,输入501可以包括一个或更多个操作,所述一个或更多个操作是从PLD的执行包括所述一个或更多个操作的一个或更多个请求的智能存储器阵列接收的;相应地,仲裁器503可以将输入501提供至PLD 505的多个部分(例如,正则表达式基元507a、整数比较基元507b、字符串比较基元507c、压缩基元507d、GZip基元507e等),以执行并传递至PLD的数据交换机(或者,在一些实施方式中,直接传递至PLD的智能存储器阵列的所述输入501所源自的部分)。

在这些实施方式中的任何实施方式中,仲裁器503可以进一步确定输入501是否需要针对输入501中包括的对应操作的一个或更多个数据库检索。如果这样,则仲裁器503可以将所需检索发送至PLD的数据交换机(或者,在一些实施方式中,直接发送至PLD的智能存储器阵列的一部分,如上文关于图4所描述的)。相应地,智能存储器阵列可以将所请求的元素直接返回至仲裁器503或PLD 505的执行操作的部分,或者通过数据交换机将所请求的元素返回至仲裁器503或PLD 505的执行操作的部分。另外地或另选地,PLD 505的执行操作的部分(诸如正则表达式基元507a、整数比较基元507b、字符串比较基元507c、压缩基元507d、GZip基元507e等)可以确定所需的检索并将其发送至数据交换机(或者,在一些实施方式中,直接发送至智能存储器阵列的一部分)。相应地,如上文所描述的,智能存储器阵列可以返回所请求的元素。

在一些实施方式中,一个或更多个多路复用器(例如,MUX 509)可以将运算符阵列500的一个或更多个部分连接在一起。在图5的示例中,压缩基元507d经由多路复用器509连接至GZip基元507e。在该示例中,PLD 505可以顺序地执行压缩操作和Gzip操作,而无需在操作之间借助仲裁器503。可以使用附加多路复用器来允许顺序操作,而无需借助仲裁器503。

图6描绘了用于在PLD中的数据交换或消息交换的示例性配置600。如上文关于图2和图3所解释的,在一些实施方式中,配置600可以与图4的配置400或图5的配置500中的一者或更多者结合使用。

如图6所示,输入601可以包括由PLD接收以针对所传送的数据库(例如,图2的数据库201)执行的一个或更多个数据库检索或操作。在一些实施方式中,PLD的一个或更多个基元(未示出)可以将输入601(例如,查询)转换为标准化格式以供执行。例如,PLD可以接收8位整数,并且PLD可以将这样的整数标准化为64位整数等。

如图6进一步所示,一个或更多个输入队列(例如,输入队列603-1、…、603-n)可以各自提供一个或更多个先进先出存储部(例如,由输入队列603-1提供的FIFO 603a-1、…、603a-n)。在配置600包括数据交换机的实施方式中,各个存储部可以包括固定长度的存储部。在配置600包括消息交换机的实施方式中,各个存储部可以包括可变长度存储部。在其它实施方式中,配置600可以包括可变长度存储部并且被实现为数据交换机。

如图6所示,各个输入队列可以进一步提供调度器(例如,由输入队列603-1提供的调度器603b)。调度器可以根据一个或更多个调度模式(例如,加权轮询技术等)从存储部中提取查询。然后,总体调度器605可以基于一个或更多个调度模式(无论该调度模式与由输入队列的调度器实现的模式是相同的还是不同的)在输入队列的调度器(例如,输入队列603-1的调度器603b等)之间进行选择。

如图6进一步所示,多路复用器(例如,MUX 607)然后可以将由调度器605调度的查询定向至一个或更多个输出端口(例如,输出端口609-1、…、609-n)。各个输出端口可以通向PLD的不同部分(例如,智能存储器阵列(例如,图4的配置400)、运算符阵列(例如,图5的配置500)等)。

如上文解释的,图6的配置600可以在至少部分地实现图4的智能存储器阵列400或图5的运算符阵列500的一个或更多个PLD上实现。在这样的实施方式中,输出端口可以在一个或更多个PLD上包括总线。另外地或另选地,图6的配置600可以在与实现图4的智能存储器阵列400或图5的运算符阵列500的PLD不同的一个或更多个处理器上实现。在这样的实施方式中,输出端口可以在一个或更多个不同处理器与一个或更多个PLD之间的接口上包括端口。

图7A描绘了用于列存数据库的存储模式700的图形表示。如图7A所示,各行的第0列跨存储器块顺序地进行存储,然后各行的第1列随后顺序地进行存储等。图7B描绘了用于行存数据库的存储模式750的图形表示。模式750类似于模式700,但是各列的第0行跨存储器块顺序地进行存储,然后各列的第1行随后顺序地进行存储等。

通过实现模式700和模式750,本公开的智能存储器阵列(例如,图4的阵列400)可以比现有的数据库加速器具有更大的灵活性。例如,模式700和模式750可以允许将同一智能存储器阵列用于行存数据库和列存数据库,因为存储模式对于两者都是一致的。在一个实现方式中,一个或更多个PLD的片上存储体或片外存储体可以根据所传送的数据库的定向跨块顺序地存储所述数据库,如模式700和模式750所解释的。此后,PLD的基元可能会不可知地实现针对所传送的数据库的定向而配置的数据库检索。

图8描绘了配置PLD以通过PLD进行数据库加速的数据流800。如图8所示,专用处理器或通用处理器接收用于加速的数据库801。例如,数据库801可以包括关系数据库、图形数据库等。在数据库801包括关系数据库的实施方式中,流800进一步可以包括专用处理器或通用处理器,该专用处理器或通用处理器确定数据库801是行存的还是列存的。

如图8进一步所示,专用处理器或通用处理器可以执行编译器803,以将数据库801传送至PLD上。专用处理器或通用处理器可以进一步执行编译器803,以生成多个硬件配置指令集。例如,第一硬件配置指令集可以(例如,根据配置400等)配置PLD,以执行从数据库801的检索。另外地或另选地,另一硬件配置指令集可以(例如,根据配置500等)配置PLD,以对数据库801执行数据库操作。另外地或另选地,另一硬件配置指令集可以(例如,根据配置600等)配置PLD,以将查询定向至PLD的不同部分(例如,定向至被配置成智能存储器阵列的一个或更多个部分、定向至被配置成运算符阵列的一个或更多个部分等)。

专用处理器或通用处理器可以将硬件配置指令从编译器803发送至PLD,从而导致PLD被配置成用作加速数据库805。因此,加速数据库805可以通过执行硬件配置指令来接受对所传送的数据库执行的查询。

图9是使用可编程逻辑器件(PLD)来加速数据库的示例性方法900的流程图。方法900可以由至少一个处理器(例如,图10的系统1000的处理器1001)执行。方法900可以应用于任何可编程逻辑器件(PLD)(诸如FPGA、PAL、PLA、CPLD等)。

在步骤901,至少一个处理器可以配置第一硬件配置指令集,以使得从至少一个可编程逻辑器件的一个或更多个片上存储器检索数据库元素。例如,检索可以包括采用数据库查询语言(诸如结构化查询语言(SQL)、ArangoDB查询语言(AQL)等)的命令。另外地或另选地,检索可以包括自然语言命令。在这样的实施方式中,至少一个处理器可以进一步对检索执行自然语言处理,以将该检索从自然语言转换为数据库查询语言,或者配置第一硬件配置指令集,以执行相同操作。

在上述实施方式中的任何实施方式中,硬件配置指令可以包括Verilog、脉冲C或任何其它硬件描述语言(HDL)。硬件配置指令可以配置至少一个可编程逻辑器件(PLD)的一个或更多个基元,使得该至少一个PLD可以执行检索。例如,硬件配置指令可以根据图4的配置400等来配置基元。

在一些实施方式中,第一硬件配置指令集可以进一步使得对来自至少一个可编程逻辑器件的一个或更多个片上存储器的数据库元素执行辅助数据库操作。例如,辅助数据库操作可以包括以下项中的至少一项:使数据库元素为空值、对数据库元素进行移位、递增数据库元素或递减数据库元素。另外地或另选地,辅助数据库操作可以包括上文关于表1解释的操作。在这样的实施方式中,第一硬件配置指令集可以配置一个或更多个基元与一个或更多个片上存储器进行通信,以执行一个或更多个辅助数据库操作。例如,硬件配置指令可以根据图4的配置400等来配置基元。

在上文描述的实施方式中的任何实施方式中,第一硬件配置指令集可以包括用于将一个或更多个基元配置成至少一个仲裁器(例如,图4的仲裁器403)的指令,所述至少一个仲裁器被配置成将对数据库元素的查询定向至PLD的比该仲裁器更靠近存储有该数据库元素的片上存储器的至少一个基元。

在步骤903,至少一个处理器可以配置第二硬件配置指令集,以使得对至少一个PLD执行一个或更多个数据库操作。例如,操作可以包括采用数据库查询语言(诸如结构化查询语言(SQL)、ArangoDB查询语言(AQL)等)的命令。另外地或另选地,这些操作可以包括自然语言命令。在这样的实施方式中,至少一个处理器可以进一步对操作执行自然语言处理,以将操作从自然语言转换为数据库查询语言,或者配置第二硬件配置指令集,以使得执行相同操作。

在上述实施方式中的任何实施方式中,硬件配置指令可以包括Verilog、脉冲C或任何其它硬件描述语言(HDL)。硬件配置指令可以配置至少一个可编程逻辑器件(PLD)的一个或更多个基元,使得该至少一个PLD可以执行操作。例如,硬件配置指令可以根据图5的配置500等来配置基元。相应地,第二硬件配置指令集可以包括用于将一个或更多个基元配置成至少一个仲裁器(例如,图5的仲裁器503)的指令,该至少一个仲裁器被配置成基于查询的类型将所述查询定向至多个基元集中的一个基元集。

在一些实施方式中,数据库操作可以包括以下项中的至少一项:整数比较、字符串比较、正则表达式匹配、压缩命令或gzip命令。另外地或另选地,辅助数据库操作可以包括上文关于表2解释的操作。

在步骤905,至少一个处理器可以配置第三硬件配置指令集,以使得基于查询的至少一部分内容来将所述查询定向至所述至少一个PLD的一部分。例如,查询可以包括采用数据库查询语言(诸如结构化查询语言(SQL)、ArangoDB查询语言(AQL)等)的一个或更多个命令。另外地或另选地,查询可以包括一个或更多个自然语言命令。在这样的实施方式中,至少一个处理器可以进一步对查询执行自然语言处理,以将查询从自然语言转换为数据库查询语言,或者配置第三硬件配置指令集,以使得执行相同操作。在一些实施方式中,查询可以包括将使得第一硬件配置指令集被处理的检索以及将使得第二硬件配置指令集被处理的操作。

在上述实施方式中的任何实施方式中,硬件配置指令可以包括Verilog、脉冲C或任何其它硬件描述语言(HDL)。硬件配置指令可以配置至少一个可编程逻辑器件(PLD)的一个或更多个基元,使得至少一个PLD可以对查询进行排队并定向查询。例如,硬件配置指令可以根据图6的配置600等来配置基元。相应地,第三硬件配置指令集可以包括将一个或更多个基元配置成一个或更多个虚拟输出队列的指令。在这样的实施方式中,第三硬件配置指令集可以包括如下指令:该指令将第一基元集配置成用于数据库检索的第一虚拟输出队列集以及将第二基元集配置成用于数据库操作的第二虚拟输出队列集。

在步骤907,至少一个处理器可以将第一硬件配置指令集、第二硬件配置指令集和第三硬件配置指令集传送至所述至少一个PLD,以相应地配置所述至少一个PLD。例如,至少一个处理器可以使用一个或更多个接口来发送硬件配置指令。

在一些实施方式中,步骤901、步骤903或步骤905的指令可以被预先配置而不是由至少一个处理器配置。例如,至少一个处理器可以从至少一个存储部中检索指令,或者通过至少一个网络接收指令。

在步骤909,至少一个处理器可以传送数据库至至少一个PLD。例如,至少一个处理器可以使用一个或更多个接口来发送硬件配置指令。在一些实施方式中,传送数据库可以包括将数据库的数据库元素复制至一个或更多个片上存储器。在这样的实施方式中,复制数据库元素可以包括从至少一个存储了要复制出数据库元素的数据库的存储器复制该数据库元素。至少一个存储有数据库的存储器可以至少部分地是存储有供所述至少一个处理器执行以执行方法900的指令的同一存储器。另选地,至少一个存储有数据库的存储器可以与存储有供所述至少一个处理器执行以执行方法900的指令的一个或更多个存储器不同。

在步骤911,至少一个处理器可以接收针对数据库执行的查询并将所述查询发送至所述至少一个PLD以针对所传送的数据库执行所述查询。例如,至少一个处理器可以使用一个或更多个接口来发送查询。在一些实施方式中,至少一个处理器可以在发送至经配置的PLD之前将查询从自然语言命令或数据库查询语言(诸如结构化查询语言(SQL)、ArangoDB查询语言(AQL)等)命令解析到Verilog、脉冲C或任何其它HDL。另外地或另选地,PLD的一个或更多个基元可以在执行查询之前执行自然语言处理或其它解析。

此外,在步骤911,响应于所述查询,至少一个处理器可以从至少一个PLD接收结果。例如,至少一个处理器可以通过一个或更多个接口接收结果。结果可以包括简单的布尔表达式(例如,指示数据库是否满足查询或是否成功执行对数据库的期望修改)、满足查询的元素的索引列表、满足查询的实际元素等。

此外,在步骤911,至少一个处理器可以将结果输出至用户。例如,至少一个处理器可以存储包括结果的文件、使用一个或更多个分组通过一个或更多个计算机网络发送结果或者(例如,使用文本或一个或更多个图形用户界面(GUI))将结果显示给用户。

方法900可以允许多个查询的并发执行,如上文关于图3解释的。例如,可以生成硬件配置指令集,以配置PLD来执行查询内的多个检索和运算符。在这样的实施方式中,至少一个处理器可以接收多个查询并将所述多个查询发送至经配置的PLD,以进行排队和并发执行。

与本公开一致,示例方法900可以包括附加步骤。例如,在一些实施方式中,方法900可以包括在存储有数据库的存储器与PLD的一个或更多个片上存储器以及一个或更多个片外存储器之间构建映射,并且根据该映射来传送数据库。数据库可以本地地或远程地存储。相应地,存储有数据库的存储器可以包括存储有用于方法900的指令的至少一个存储器。另外地或另选地,至少一个处理器可以通过一个或更多个计算机网络访问的一个或更多个外部存储器可以包括存储有数据库的存储器。

尽管上文关于一个或更多个片上存储器进行了描述,但是至少一个PLD可以另外地或另选地将所传送的数据库的至少一部分存储在一个或更多个片外存储器中。在这样的实施方式中,第一硬件配置指令集可以进一步使得从一个或更多个片外存储器检索数据库元素。

图10是与本公开的实施方式一致的使用可编程逻辑器件(PLD)来加速数据库的示例系统1000的描绘图。尽管在图10中被描绘为服务器,但是系统1000可以包括被配置成执行例如图9的方法900的任何计算机(诸如台式计算机、膝上型计算机、平板电脑等)。

如图10所示,服务器1000可以具有处理器1001。处理器1001可以包括单个处理器或多个处理器。例如,处理器1001可以包括CPU、GPU、可重新配置阵列(例如,FPGA或其它ASIC)等。

处理器1001可以在工作时与存储器1003、输入/输出模块1005和网络接口控制器(NIC)1007连接。存储器1003可以包括单个存储器或多个存储器。另外,存储器1003可以包括易失性存储器、非易失性存储器或其组合。如图10所示,存储器1003可以存储一个或更多个操作系统1009和编译器1011。例如,编译器1011可以包括如下指令:用于生成配置一个或更多个PLD以进行数据库加速的一个或更多个硬件配置指令集(例如,如图9的方法900的步骤901、步骤902、步骤903所解释的)的指令。因此,编译器1011可以与一个或更多个PLD协作以执行图9的方法900。

输入/输出模块1005可以存储数据以及从一个或更多个数据库1015检索数据。例如,数据库1015可以包括用于映射至一个或更多个PLD以使用所述一个或更多个PLD来加速数据库1015的元素,如上文所描述的。

NIC 1007可以将服务器1000连接至一个或更多个计算机网络。在图10的示例中,NIC 1007将服务器1000连接至互联网。服务器1000可以使用NIC 1007通过网络接收数据和指令,并且可以使用NIC 1007通过网络发送数据和指令。此外,服务器1000可以使用NIC1007或另一接口向一个或更多个PLD发送数据和命令以及从一个或更多个PLD发送数据和命令,如上文所描述的。

出于例示的目的呈现了前面的描述。所述描述不是穷举性的并且不限于所公开的精确形式或实施方式。通过考虑所公开的实施方式的说明书和实践,实施方式的修改和调整将是显而易见的。例如,所描述的实现方式包括硬件,但是可以利用硬件和软件来实现与本公开一致的系统和方法。另外,尽管已将某些部件描述为彼此联接,但是这些部件可以彼此集成或以任何合适的方式分布。

此外,尽管本文已描述了例示性实施方式,但是基于本公开,范围包括具有等同元素、修改、省略、(例如,跨各种实施方式的方面的)组合、调整或变更的任何和所有实施方式。权利要求中的元素将基于权利要求书中使用的语言来广泛地解释,并且不限于在本说明书中或在本申请审查期间描述的示例,这些示例应被解释为非排他性的。此外,可以以任何方式修改所公开的方法的步骤,包括对步骤进行重新排序或者插入或删除步骤。

根据详细的说明书,本公开的特征和优点是显而易见的,因此,所附权利要求旨在覆盖落入本公开的真实精神和范围内的所有系统和方法。如本文所使用的,不定冠词“一”和“一个”表示“一个或更多个”。类似地,复数术语的使用不一定表示复数,除非在给定上下文中明确使用复数术语表示复数。此外,由于通过研究本公开将容易发生许多修改和变型,因此不希望将本公开限制成例示出和描述的确切构造和操作,因此,可以采用落入本公开的范围之内的所有合适的修改和等同例。

如本文所使用的,除非另有明确说明,否则用语“或”涵盖所有可能组合,除非不可行。例如,如果声明数据库可以包括A或B,则除非另有明确说明或不可行,否则数据库可以包括A、或B、或A和B。作为第二示例,如果声明数据库可以包括A、B或C,则除非另有说明或不可行,否则数据库可以包括A、或B、或C、或A和B、或A和C、或B和C、或A和B和C。

通过考虑本文公开的实施方式的说明书和实践,其它实施方式将是显而易见的。说明书和示例旨在仅被视为示例,所公开的实施方式的真实范围和精神由所附权利要求指示。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号