使用硬件加速高效地扫描数据库的系统和方法与流程

文档序号:26007830发布日期:2021-07-23 21:27阅读:71来源:国知局
使用硬件加速高效地扫描数据库的系统和方法与流程

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



背景技术:

针对包括比较的操作(诸如数据库操作),现场可编程门阵列(fpga)和其它可编程逻辑器件(pld)通常比常规处理硬件(诸如中央处理单元(cpu)、图形处理单元(gpu)等)更高效。然而,fpga和其它pld通常是针对特定功能定制设计的。此外,许多pld是在执行时配置的,由于将数据库传送至pld的片上存储器和片外存储器的长延迟,因此弱化了使用pld的好处。



技术实现要素:

在一些实施方式中,一种将可编程逻辑器件(pld)用于数据库扫描操作的系统可以包括被配置成存储指令的至少一个存储器以及被配置成执行所述指令以使所述系统执行操作的至少一个处理器。所述操作可以包括:从用户接收对数据库执行的查询;基于所述查询来配置硬件配置指令;以及将所述硬件配置指令发送到至少一个可编程逻辑器件(pld),以根据所述硬件配置指令来配置所述pld。所述操作还可以包括:将所述查询发送至经配置的pld,以针对所述数据库执行所述查询;响应于所述查询,从所述pld接收结果;以及将所述结果输出给所述用户。

在一些实施方式中,一种将可编程逻辑器件(pld)用于数据库扫描操作的方法可以包括以下步骤:从用户接收对数据库执行的查询;使用至少一个处理器,基于所述查询来配置硬件配置指令;以及将所述硬件配置指令发送到至少一个可编程逻辑器件(pld),以根据所述硬件配置指令来配置所述pld。所述方法可以进一步包括:将所述查询发送至经配置的pld,以针对所述数据库执行所述查询;响应于所述查询,从所述pld接收结果;以及将所述结果输出给所述用户。

在一些实施方式中,非暂时性计算机可读存储介质可以存储能够由一个或更多个处理器执行以使所述一个或更多个处理器执行将可编程逻辑器件(pld)用于数据库扫描操作的方法的指令集。所述方法可以包括以下步骤:从用户接收对数据库执行的查询;基于所述查询来配置硬件配置指令;以及将所述硬件配置指令发送到至少一个可编程逻辑器件(pld),以根据所述硬件配置指令来配置所述pld。所述方法还可以包括:将所述查询发送至经配置的pld,以针对所述数据库执行查询;响应于所述查询,从所述pld接收结果;以及将所述结果输出给所述用户。

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

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

附图说明

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

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

图2是根据本公开的实施方式的用于将数据库传送至可编程逻辑器件(pld)并且用于配置pld以对所传送的数据库执行查询的示例性架构。

图3是根据本公开的实施方式的pld中的并发(concurrent)查询类型执行的示意图。

图4是根据本公开的实施方式的用于pld中的正则表达式处理的配置的示意图。

图5是根据本公开的实施方式的用于pld中的字符串比较的配置的示意图。

图6是根据本公开的实施方式的用于pld中的整数比较的配置的示意图。

图7是根据本公开的实施方式的用于pld中的字符串比较的另一配置的示意图。

图8是根据本公开的实施方式配置的pld的按需查询执行的示意图。

图9是根据本公开的实施方式的将可编程逻辑器件(pld)用于数据库扫描操作的示例性方法的流程图。

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

具体实施方式

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

所公开的实施方式涉及将可编程逻辑器件(pld)用于数据库扫描操作的计算机实现的系统和方法。例如,所述操作可以包括正则表达式匹配、整数比较、字符串比较等。有利地,示例性实施方式可以相比于常规数据库扫描操作提供改进的效率。本公开的实施方式还可以提供跨多个数据库扫描操作的改进的按需查询执行和pld可重用性。

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

本公开的实施方式提供了使用pld执行数据库扫描的计算机实现的系统和方法。本公开的系统和方法可以提供针对所述技术问题的技术解决方案,该技术解决方案配置pld用于数据库扫描操作而在运行时不具有延迟或者不必针对不同数据库专门设计一个或更多个pld。与通用处理器上的数据库扫描操作相比,本公开的系统和方法可以导致效率提高。此外,本公开的系统和方法可以不需要定制的pld,或者可以不像现有pld实现方式那样导致运行时间延迟。

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

类似于基元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))可以存储数据库。数据库可以包括关系数据库、图形数据库或具有能够经由至少一个索引搜索的多个要素的任何其它数据结构。

编译器203可以包括由至少一个处理器执行的一个或更多个指令。例如,编译器203可以包括由通用处理器(诸如中央处理单元(cpu)、图形处理单元(gpu)等)或专用处理器(诸如fpga或其它专用集成电路(asic))执行的一系列指令。如图2所示,编译器203可以在数据库201与可编程逻辑器件(pld)211之间生成映射205。例如,编译器203可以确定pld211的片上存储器和片外存储器的大小和空间位置以及将数据库201的要素映射至片上存储器和片外存储器的块。如下所述,在编译器203还配置pld211以对数据库201执行一个或更多个查询的实施方式中,编译器203可以生成映射205,使得由pld211的一个或更多个经配置的基元使用的要素被存储在与这种经配置的基元相邻的片上存储器或片外存储器中。

如图2进一步所示,编译器203可以生成一个或更多个硬件配置指令207,例如,如下文在图9的方法900的步骤903中所描述的。例如,指令207可以配置pld211的一个或更多个基元以对传送至pld211的数据库201执行一个或更多个查询。在一些实施方式中,指令207可以包括采用规范语言(诸如verilog、脉冲c或任何其它硬件描述语言(hdl))的一个或更多个数据文件。

如图2进一步所示,编译器203可以根据映射205或指令207经由接口209将数据库201传送至pld211。例如,接口209可以包括外围部件互连(pci)总线、pci快速总线等。因此,接口209可以促进到pld211或从pld211的数据传送。

图3描绘了pld中的示例性并发查询类型执行300。在图3的示例中,pld309包括三组基元:正则表达式基元307a、整数比较基元307b和字符串比较基元307c。因此,pld309的一部分可以执行正则表达式,而并发地,pld309的另一部分执行整数比较,或者pld309的另一部分可以执行字符串比较。如上所述,可以对映射至pld309的一个或更多个片外存储器(未示出)或片上存储器(未示出)的数据库执行所述表达式。因此,处理器301(其可以包括另一专用处理器或通用处理器)可以经由接口303向pld309发送查询,以通过正则表达式基元307a、整数比较基元307b或字符串比较基元307c并发执行。

如本文所使用的,并发可以包括并行性(例如,正则表达式基元307a在整数比较基元307b或字符串比较基元307c正在执行命令的同时执行命令)以及并发性(例如,正则表达式基元307a与整数比较基元307b或字符串比较基元307c一起执行命令,使得在同一时间段期间间断地执行命令)。在使用并发性的实施方式中,可以在正则表达式基元307a、整数比较基元307b或字符串比较基元307c之间共享一个或更多个基元。

尽管使用三个并发组进行了描绘,但是pld309可以替代地包括两个并发基元组或超过三个并发组。此外,尽管使用正则表达式基元307a、整数比较基元307b和字符串比较基元307c进行了描绘,但是可以使用附加的或另选的基元组。例如,pld309可以另外地或另选地包括求和基元、布尔基元等。

图4描绘了用于pld中的正则表达式处理的示例性配置400。如图4所示,输入401可以包括由pld接收的用于与所存储的正则表达式进行比较的数据库。在一些实施方式中,pld的一个或更多个转换器403可以将输入401(例如,字符串)转换成标准化的统一码(unicode)格式,以进行比较。例如,pld可以接收utf-8编码字符串,并且转换器403可以将这样的查询标准化成utf-16。可以使用诸如美国信息交换标准代码(ascii)或其它编码方案的编码方案对输入401进行编码,或者转换器403可以按照其它编码方案(诸如国际标准化组织/国际电工委员会(iso/iec)8859或其它编码方案)进行标准化。因此,尽管下文使用统一码移位器进行了解释,但是在图4所示的实施方式中可以使用任何其它适当的移位器。

如图4进一步所示,pld的基元可以被组织成多行统一码移位器。尽管描绘为两行,但是本公开的实施方式可以使用一行、三行、四行等。如图4所示,各行可以包括n+1个统一码移位器(例如,统一码405-n至405-0以及统一码413-n至统一码413-0)。

如图4进一步所示,各行可以使用n+1个比较器(例如,比较器407-n至比较器407-0用于第一行,并且比较器415-n至比较器415-0用于第二行)来比较经移位的统一码。通过将经移位的统一码与已知正则表达式模式进行比较,各行可以确定对应正则表达式模式是否被包括在输入401中。下面的表1示出了这种模式的示例。

表1

因此,具有附加行的实施方式可以支持查询中的附加正则表达式。在一些实施方式中,可以在行中使用更少的比较器,例如,通过在输入至该行的门(例如,门409或门417)之前将比较器输出发送至片上存储器或片外存储器以进行存储,使得该比较器可以重复用于与下一经移位的统一码的比较。尽管重复使用比较器可能降低时间效率,但可以通过要求来自pld的较少基元实现配置400来提高空间效率。在一些实施方式中,无论比较器的数量如何,各行的门(例如,门409或门417)可以组合来自所述比较的输出(例如,使用and逻辑运算),以确定该行的对应正则表达式是否被包括在输入401中。

如图4进一步所示,附加行可以使用来自前一行的经移位的统一码作为输入,接受输入401,或者使用多路复用器(例如,mux411)来选择两者中的一者。收集器419可以整理来自行的门(例如,门409和门417)的结果,并且基于与该行相关联的对应正则表达式并且基于它们之间的依赖性(例如,经由诸如mux411的多路复用器建立)来确定哪些正则表达式被包括在输入401中。例如,来自所述行的结果可以指示输入401中存在否定通配符,而来自紧随其后的行的结果可以指示输入401中存在类通配符,并且收集器419可以使用行的空间组织来确定输入401中存在否定类通配符。

图5描绘了用于pld中的字符串比较的示例性配置500。如上文关于图3所解释的,在一些实施方式中,在同一pld上,配置500可以与图4的配置400、图6的配置600或图7的配置700中的一者或更多者结合使用。在一些实施方式中,可以使用pld上的不同基元,结合图4的配置400、图6的配置600或图7的配置700中的一者或更多者来实现配置500。另选地,可以在配置500以及图4的配置400、图6的配置600或图7的配置700中的一者或更多者之间共享一个或更多个基元。例如,比较器505-1、505-2、…、505-n中的一者或更多者还可以包括比较器407-n、…、407-0或415-n、…、415-0中的一者或更多者。另外地或另选地,转换器503可以包括转换器403。

如图5所示,输入501可以包括由pld接收的用于与所存储的数据库进行比较的字符串。在一些实施方式中,pld的一个或更多个转换器503可以将输入501(例如,查询)转换成标准化格式,以供执行。例如,pld可以接收utf-8编码查询,并且转换器503可以将这样的查询标准化成utf-16。可以使用诸如美国信息交换标准代码(ascii)或其它编码方案的编码方案对输入501进行编码,或者转换器503可以按照其它编码方案(诸如国际标准化组织/国际电工委员会(iso/iec)8859或其它编码方案)进行标准化。

如图5进一步所示,pld的基元可以将经转换的输入与所存储的数据库中的多个要素进行比较。例如,配置500可以包括多个比较器(例如,比较器505-1、比较器505-2、…、比较器505-n),各个比较器将经转换的输入与来自数据库的所存储的要素(例如,分别是统一码模式507-1、统一码模式507-2、…、统一码模式507-n)进行比较。尽管描绘为统一码模式,但是所述多个比较器可以存储根据任何方案(例如,转换器503将输入501转换成的方案)编码的数据库的要素。

在一些实施方式中,可以对数据库中的各个要素使用比单个比较器更少的比较器,例如,通过在输入至收集器509之前将比较器输出发送到片上存储器或片外存储器以进行存储,使得该比较器可以重复用于与数据库的另一要素的比较。尽管重复使用比较器可能降低时间效率,但可以通过要求来自pld的较少基元实现配置500来提高空间效率。在一些实施方式中,无论比较器的数量如何,收集器509可以组合来自所述比较的输出(例如,使用or逻辑运算),以确定数据库内是否存在输入字符串501。此外,收集器509可以基于哪个比较器发送了指示匹配的对应输出(例如,“1”的输出或真实布尔值的另一指示符)来确定数据库的哪些要素包括输入501。例如,来自比较器505-1的结果可以指示要素507-1中存在输入字符串501,来自比较器505-2的结果可以指示要素507-2中不存在输入字符串501,并且比较器505-n可以指示要素507-n中存在输入字符串501;因此,收集器509可以确定要素507-1和507-n的索引,并且响应于输入501而输出这样的索引作为匹配。

图6描绘了用于pld中的整数比较的示例性配置600。如上文关于图3所解释的,在一些实施方式中,在同一pld上,配置600可以与图4的配置400、图5的配置500或图7的配置700中的一者或更多者结合使用。在一些实施方式中,可以使用pld上的不同基元,结合图4的配置400、图5的配置500或图7的配置700中的一者或更多者来实现配置600。另选地,可以在配置600与图4的配置400、图5的配置500或图7的配置700中的一者或更多者之间共享一个或更多个基元。例如,比较器603-1、603-2、…、603-n中的一者或更多者还可以包括比较器505-1、505-2、…、505-n中的一者或更多者。另外地或另选地,门605可以包括收集器509。

如图6所示,输入601可以包括由pld接收的用于与所存储的数据库进行比较的整数。在一些实施方式中,pld的一个或更多个基元(未示出)可以将输入601(例如,查询)转换成标准化格式,以供执行。例如,pld可以接收8位整数,并且pld可以将这样的整数标准化成64位整数等。

如图6进一步所示,pld的基元可以将经转换的输入与所存储的数据库中的多个要素进行比较。例如,配置600可以包括多个比较器(例如,比较器603-1、比较器603-2、…、比较器603-n),各个比较器将经转换的输入与来自数据库的所存储的要素进行比较。所述多个比较器可以存储根据任何方案(例如,pld将输入601标准化成的方案)编码的数据库的要素。

在一些实施方式中,可以对数据库中的各个要素使用比单个比较器更少的比较器,例如,通过在输入至门605之前将比较器输出发送至片上存储器或片外存储器以进行存储,使得该比较器可以重复用于与数据库的另一要素的比较。尽管重复使用比较器可能降低时间效率,但可以通过要求来自pld的较少基元实现配置600来提高空间效率。在一些实施方式中,无论比较器的数量如何,门605可以组合来自所述比较的输出(例如,使用or逻辑运算),以确定数据库内是否存在输入整数601。尽管描绘为门,但在一些实施方式中,要素605还可以基于哪个比较器发送了指示匹配的对应输出(例如,“1”的输出或真实布尔值的另一指示符)来确定数据库的哪些要素包括输入601。例如,来自比较器603-1的结果可以指示第一要素中存在输入整数601,来自比较器603-2的结果可以指示第二要素中也存在输入整数601,并且比较器603-n可以指示第三要素中不存在输入整数601;因此,要素605可以确定第一要素和第二要素的索引,并且响应于输入601而输出这样的索引作为匹配。

图7描绘了用于pld中的字符串或整数比较的另一示例性配置700。如上文关于图3所解释的,在一些实施方式中,在同一pld上,配置700可以与图4的配置400、图5的配置500或图6的配置600中的一者或更多者结合使用。在一些实施方式中,可以使用pld上的不同基元,结合图4的配置400、图5的配置500或图6的配置600中的一者或更多者来实现配置700。另选地,可以在配置700与图4的配置400、图5的配置500或图6的配置600中的一者或更多者之间共享一个或更多个基元。例如,多路复用器705可以包括门605、收集器509或收集器419。

配置700与配置500和配置600相似,但是使用散列(hash)将输入701与数据库的要素进行匹配,而不是直接比较。例如,可以根据应用于数据库的要素和输入701两者的不同散列函数来配置pld的一个或更多个基元(例如,散列器703-1、703-2、…、703-n)。

如图7所示,输入701可以包括由pld接收的用于与所存储的数据库进行比较的字符串或整数。在一些实施方式中,pld的一个或更多个基元(未示出)可以将输入701(例如,查询)转换成标准化格式,以供散列化。例如,pld可以接收utf-8编码字符串,并且pld可以将这样的查询标准化成utf-16。可以使用诸如美国信息交换标准代码(ascii)或其它编码方案的编码方案对输入701进行编码,或者可以按照其它编码方案(诸如国际标准化组织/国际电工委员会(iso/iec)8859或其它编码方案)对输入701进行标准化。

在一些实施方式中,可以基于哪些散列算法不引起冲突来选择散列器703-1、703-2、…、703-n中的一者或更多者。例如,如果数据库的至少两个要素具有相同的散列码,则可以停用对应散列器。多路复用器705可以执行所述选择。

如图7进一步所示,pld可以在更多个散列表(例如,表707和表709)中的一者中搜索与输入701的一个或更多个结果相匹配的散列要素作为散列器703-1、703-2、…、703-n中的一者或更多者的输出。散列表的使用可以比直接比较更快,例如,因为散列的长度都相同。另外,使用散列表的方法可以允许搜索受保护的数据库,因为使用散列器703-1、703-2、…、703-n中的一者或更多者对要素进行了编码,而不是由pld直接访问。

图8描绘了由pld执行的按需查询的数据流800。如图8所示,专用处理器或通用处理器从用户接收查询801。例如,查询801可以包括自然语言查询或数据库语言查询。在查询801包括自然语言查询的实施方式中,流800还可以包括由专用处理器或通用处理器执行的自然语言处理。

如图8进一步所示,专用处理器或通用处理器可以使编译器803执行以下操作:将查询801变换成硬件配置指令。例如,硬件配置指令可以(例如,根据配置400、500、600、700等)配置pld以执行与查询801的类型相对应的查询类型。另选地,硬件配置指令可以包括根据如下pld执行查询801的命令:已经通过先前的硬件配置指令集(例如,根据配置400、500、600、700等)对该pld进行了配置,使得经配置的pld801可以接受查询(诸如查询801),以供执行。

专用处理器或通用处理器可以将硬件配置指令从编译器803发送至pld(例如,经配置的pld805)。因此,pld801可以通过执行硬件配置指令来执行查询801。

在上述实施方式中的任何实施方式中,pld805可以存储将对其执行查询801的所传送的数据库。例如,数据库可以已映射至pld801的片上存储器或片外存储器。

图9是将可编程逻辑器件(pld)用于数据库扫描操作的示例性方法900的流程图。方法900可以由至少一个处理器(例如,图10的系统1000的处理器1001)执行。方法900可以应用于任何可编程逻辑器件(pld)(诸如fpga、pal、pla、cpld等)。

在步骤901,至少一个处理器可以从用户接收对数据库执行的查询。例如,查询可以包括采用数据库查询语言(诸如结构化查询语言(sql)、arangodb查询语言(aql)等)的命令。另外地或另选地,查询可以包括自然语言命令。在这样的实施方式中,至少一个处理器还可以对查询进行自然语言处理,以将查询从自然语言变换成数据库查询语言。

在步骤903,至少一个处理器可以基于查询来配置硬件配置指令。例如,硬件配置指令可以包括verilog、脉冲c或任何其它hdl。硬件配置指令可以将至少一个可编程逻辑器件(pld)的一个或更多个基元配置成使得至少一个pld可以执行所接收的查询。例如,硬件配置指令可以根据配置400、500、600、700等来配置基元。

例如,查询可以包括整数比较、字符串比较或正则表达式匹配中的至少一者。因此,至少一个处理器可以生成硬件配置指令,使得至少一个pld可以执行对应查询类型。在一些实施方式中,正则表达式匹配可以包括如上文关于表1所述的否定匹配、锚定匹配或统一码字符匹配中的至少一者。

此外,在步骤903,至少一个处理器可以将硬件配置指令发送到至少一个可编程逻辑器件(pld),以根据硬件配置指令来配置pld。例如,至少一个处理器可以使用一个或更多个接口(诸如图2的接口209)来发送硬件配置指令。

在步骤905,至少一个处理器可以将数据库传送至经配置的pld。例如,至少一个处理器可以使用一个或更多个接口(诸如图2的接口209)来发送硬件配置指令。在一些实施方式中,可以省略步骤905,使得经配置的pld对关于pld远程存储的数据库执行查询。

在步骤907,至少一个处理器可以将查询发送至经配置的pld以针对数据库(无论是否被传送)执行查询。例如,至少一个处理器可以使用一个或更多个接口(诸如图2的接口209)来发送查询。在一些实施方式中,至少一个处理器可以在发送至经配置的pld之前将查询从自然语言命令或数据库查询语言(诸如结构化查询语言(sql)、arangodb查询语言(aql)等)命令解析成verilog、脉冲c或任何其它hdl。

在步骤909,响应于查询,至少一个处理器可以从pld接收结果。例如,至少一个处理器可以通过一个或更多个接口(诸如图2的接口209)接收结果。如上文关于图4、图5、图6和图7所解释的,结果可以包括简单的布尔值(例如,指示数据库是否满足查询)或满足查询的要素的索引列表。

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

方法900可以允许执行比较查询(诸如字符串比较、整数比较等)。因此,在一些实施方式中,方法900可以进一步包括合并来自在pld上实现的多个比较基元的多个结果以输出给用户。在这样的实施方式中,合并可以包括配置附加硬件配置指令,并且将附加硬件配置指令发送到至少一个pld以配置该pld来执行合并。例如,附加硬件配置指令可以将至少一个pld的一个或更多个基元配置成用作图4的收集器419、图5的收集器509、图6的门605等。

另外地或另选地,合并多个结果可以包括:从pld接收多个结果,并且使用至少一个处理器来执行合并。例如,至少一个处理器可以从pld的比较器(如关于图5和图6所解释的)或从pld的门(如关于图4所解释的)接收多个结果,并且基于接收到结果的比较器或门来确定数据库的匹配要素的索引。

方法900还可以允许多个查询的并发执行,如上文关于图3所解释的。例如,可以生成硬件配置指令以配置pld来执行多种查询类型。在这样的实施方式中,至少一个处理器可以接收与查询类型不同的第二查询,并且将第二查询发送至经配置的pld,以与第一查询并发执行。另外地或另选地,可以生成硬件配置指令以配置pld的多组基元来执行同一类型的查询。在这样的实施方式中,至少一个处理器可以将同一类型的两个查询发送至pld的不同空间位置,以并发执行。

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

图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、数据库映射器1011a和编译器1011b。例如,映射器1011a可以包括将数据库要素映射至一个或更多个pld(例如,如上文关于图2所解释)的指令,并且编译器1011b可以包括如下指令:用于生成对一个或更多个pld执行查询的硬件配置指令(例如,如图9的方法900的步骤903所解释的)的指令。因此,映射器1011a和编译器1011b可以与一个或更多个pld协作以执行图9的方法900。

输入/输出模块1005可以存储数据以及从一个或更多个数据库1015检索数据。例如,数据库1015可以包括用于映射至一个或更多个pld以对数据库1015执行查询的要素,如上文所描述的。

nic1007可以将服务器1000连接至一个或更多个计算机网络。在图10的示例中,nic1007将服务器1000连接至互联网。服务器1000可以使用nic1007通过网络接收数据和指令,并且可以使用nic1007通过网络发送数据和指令。此外,服务器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。

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

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