Connect public, paid and private patent data with Google Patents Public Datasets

过滤/投影操作的硬件实现

Download PDF

Info

Publication number
CN104685499A
CN104685499A CN 201380050949 CN201380050949A CN104685499A CN 104685499 A CN104685499 A CN 104685499A CN 201380050949 CN201380050949 CN 201380050949 CN 201380050949 A CN201380050949 A CN 201380050949A CN 104685499 A CN104685499 A CN 104685499A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
predicate
particular
result
column
row
Prior art date
Application number
CN 201380050949
Other languages
English (en)
Inventor
J·施奥尔
P·安博格
R·D·霍博金斯二世
J·勒克索
Original Assignee
甲骨文国际公司
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

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/30Information retrieval; Database structures therefor ; File system structures therefor
    • G06F17/30286Information retrieval; Database structures therefor ; File system structures therefor in structured data stores
    • G06F17/30386Retrieval requests
    • G06F17/30424Query processing
    • G06F17/30442Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/30Information retrieval; Database structures therefor ; File system structures therefor
    • G06F17/30286Information retrieval; Database structures therefor ; File system structures therefor in structured data stores
    • G06F17/30386Retrieval requests
    • G06F17/30424Query processing
    • G06F17/30477Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/30Information retrieval; Database structures therefor ; File system structures therefor
    • G06F17/30861Retrieval from the Internet, e.g. browsers
    • G06F17/30864Retrieval from the Internet, e.g. browsers by querying, e.g. search engines or meta-search engines, crawling techniques, push systems
    • G06F17/30867Retrieval from the Internet, e.g. browsers by querying, e.g. search engines or meta-search engines, crawling techniques, push systems with filtering and personalisation

Abstract

描述了用于执行过滤和投影操作的技术。在实施例中,接收到指定用于过滤查询的结果的准则的谓词集合。基于该谓词集合中的特定谓词,生成特定列的至少一部分的谓词结果。所述谓词结果识别第一列中满足所述特定谓词的行。至少部分地基于所述谓词结果来选择并返回行作为查询的结果。在实施例中,所述谓词结果是位向量,其中该位向量的每一位都对应于所述特定列中的特定行并且识别所述特定行是否满足所述特定谓词。

Description

过滤/投影操作的硬件实现

技术领域

[0001] 本公开内容一般涉及用于执行数据库操作的技术,并且更具体地,涉及用于执行 过滤和投影操作的技术。

背景技术

[0002] 在本节中描述的方法是可以实行的方法,但不一定是先前已被构想或实行的方 法。因此,除非另有指示,否则不应当假设本节中描述的任何方法仅仅因为它们被包括在本 节中就算作现有技术。

[0003] 数据库包括存储在诸如硬盘组的一个或多个存储设备上的数据和元数据。根据实 现方式,数据库中的数据可以按照各种数据模型进行逻辑上的组织。例如,关系数据库系统 通常将数据存储在表的集合中,其中每张表被组织成一组行和列。在大多数情况下,每一行 代表不同的对象,并且每一列代表不同的属性。但是,其它数据模型也可用来组织数据。

[0004] 为了访问和操纵数据库中的数据,数据库管理系统(DBMS) -般被配置为接收和 处理各种数据库命令,这些命令通常被称为查询。在许多实现方式中,DBMS支持遵循数据 操纵语言(DML)的查询,诸如结构化查询语言(SQL)。当DBMS接收到查询时,DBMS执行由 该查询指定的一个或多个数据库操作并且可以输出查询结果。示例数据库操作包括过滤、 投影、聚合和分组操作,这些将在以下进一步详细描述。

[0005] 过滤和投影操作

[0006] 过滤和投影操作是从特定行的特定列输出值的数据库操作,其中行是基于一些被 称为谓词的准则进行过滤的。在SQL中,投影和过滤操作使用SELECT和WHERE语法。具体 而言,SELECT语句指示什么数据被投影(即,从哪些列中检索输出值)并且WHERE子句包 括谓词来过滤输出(即,指示从哪些行中检索输出值)。用于WHERE子句的运算符的例子包 括但不限于以下表1中示出的运算符。

[0007]

[0008] 表1 :示例谓词运算符

[0009] 以下表2中示出了示例过滤和投影查询。

[0010]

[0011] 表2 :过滤/投影查询样例

[0012] 该查询过滤sales表中的数据,过滤的准则是salesman必须是Pedro或Alex,并 且销售量(amount)必须大于200。对于sales表中满足这些准则的每条记录,该查询将返 回该记录中指定的相关联的salesman、customer和amount。

[0013] 例如,以下表3示出了示例sales表。

[0014]

[0015] 表 3 :不例 sales 表

[0016] 给定表3的示例sales表,则以下表4示出了执行查询1的期望输出。

[0017]

[0018] 表4:示例查询的输出

[0019] 聚合和分组操作

[0020] 聚合和分组操作是提供关于具体列中数据的汇总统计的数据库操作。在SQL中, 分组操作使用GROUP BY语法来按照一个或多个列来分组聚合函数的结果。以下表5示出 了可以与GROUP BY语句一起使用的示例聚合函数。

[0021]

[0022] 表5:示例聚合函数

[0023] 以下表6中示出了示例聚合和分组查询。

[0024]

[0025] 表6:示例聚合查询

[0026] 查询2请求公司已产生的以美元为单位的总销售量。当执行查询2时,DBMS执行 聚合但不分组。DBMS无条件地合计(sum) sales表中所有的数量(amount)来返回最终结 果。给定表3的示例sales表,则以下表7示出了执行查询2的期望输出。

[0027]

[0028] 表7:查询2的结果表

[0029] 查询3请求按照完成该销售的salesman (销售人员)进行分组的以美元为单位的 总销售量。当执行查询3时,DMBS执行分组和聚合两者。具体而言,DBMS为sales表中每 个唯一的salesman生成一个聚合结果,其中该结果是特定salesman的总销售量。给定表 3的示例sales表,则以下表8示出了执行查询3的期望输出。

[0030]

[0031] 表8:查询3的结果表

[0032] 查询4请求按照与销售相关联的salesman和customer进行分组的以美元为单 位的总销售量。当执行查询4时,DMBS执行多列分组和聚合。在这种情况下,每个唯一的 salesman-customer对将有一个聚合结果,并且该聚合结果是特定salesman-customer对 的总销售量。给定表3的不例sales表,以下表9不出了执行查询4的期望输出。

[0035] 表9:查询4的结果表

附图说明

[0036] 在附图的图示中说明本公开内容意在作为例子而非意在限制,并且其中相同的附 图标记指相似的元件,其中:

[0037] 图1是根据实施例说明用于执行过滤和投影操作的示例系统体系结构的框图;

[0038] 图2是根据实施例说明用于执行过滤和投影操作的示例过程的流程图;

[0039] 图3A至3E是根据实施例说明在执行过滤和投影操作的过程中系统的不同状态的 系列框图;

[0040] 图4是根据实施例说明具有用于执行过滤和投影操作的地址生成器的示例系统 体系结构的框图;

[0041] 图5是根据实施例说明用于执行分组和聚合操作的示例系统体系结构的框图;

[0042] 图6是根据实施例说明用于执行分组和聚合操作的示例过程的流程图;

[0043] 图7A至7E是根据实施例说明在执行分组和聚合操作的过程中系统的不同状态的 系列框图;

[0044] 图8是实施例可在其上实现的计算机系统的框图。

具体实施方式

[0045] 在以下描述中,为了解释的目的,阐述了众多具体的细节,以便提供对本发明的透 彻理解。但是,很显然,本发明没有这些具体细节也可以实施。在其它情况下,众所周知的 结构和设备以框图形式示出,以避免不必要地混淆本发明。

[0046] 总体概述

[0047] 在此描述的技术用于执行过滤、投影、分组以及聚合操作。在实施例中,可以配置 专用的硬件来执行这些数据库操作。专用的硬件可以通过减少流到计算机系统的速率受限 部件的数据量来加快查询处理,这可以帮助减轻数据瓶颈。具体地,专用的硬件可以减少在 过滤和投影操作期间需要存储在RAM中的数据量,从而减少评估查询所需的RAM输入/输 出(I/O)操作。此外,专用的硬件减少了在大多数常见的通用处理器中存在的用于执行数 据库操作的指令开销。

[0048] 此外,专用的硬件可以允许多个数据通过过滤单元,这提供了评估复杂查询谓词 的灵活性。还有,专用的硬件可以提供谓词的非线性评估和处理,使得过滤单元不必与恒定 的数据输入流保持同步。

[0049] 根据在此描述的其它技术,可以执行分组和聚合而无需对表数据进行全局排序。 避免全局排序减轻了在排序大列表时发生的随机存储器访问问题。例如,当排序列表时,某 个项可能会进入位于存储器的某一块的组中,而下一项可能属于位于存储器的另一个块的 组。在这种情况下,写入所排序的表通常会需要关闭和打开新的存储器页。

[0050] 此外,描述了允许在存储器的小块上执行分组和聚合的技术,这使得随机访问发 生在高速、低功耗的高速缓存中。

[0051] 根据在此描述的实施例,生成了诸如位向量(bitvector)的数据结构来指示哪些 行满足一个或多个谓词。在示例实施例中,为查询中的每个谓词生成位向量,以指示数据 库中哪些行满足相应的谓词。在为每个谓词都生成位向量之后,使用按位(bitwise)运算 符来合并这些位向量以生成最终位向量。最终位向量指示哪些行满足谓词集合中的所有谓 词,并且可以用在投影操作中来选择行作为查询的结果输出。

[0052] 在其它实施例中,生成诸如位向量的数据结构来指示哪些行在分组和聚合操作期 间是相同分组的一部分。例如,可以生成位向量集合,其中该集合中的每个位向量都对应于 不同的分组。每个位向量中的位的位置对应于特定的行。如果对应于该位的行是由该位向 量表示的分组的一部分,则该位向量中每一位的位值被设置为第一位值,如果对应的行不 是该分组的一部分,则该位向量中每一位的位值被设置为第二位值。因此,位向量可以用来 轻松地识别属于同一分组的行,并且可以在执行聚合来自这些行的列的值的操作过程中使 用。

[0053] 用于处理过滤和投影操作的示例体系结构

[0054] 操作

[0055] 图1根据实施例说明可以配置为执行过滤和投影数据库操作的示例系统体系结 构。系统100 -般包括RAM 102、存储器控制器106、系统控制108、输入高速缓存110、过滤 单元112、位向量高速缓存114、合并单元116、投影单元118以及输出高速缓存120。

[0056] 如由块104A至104N所示出的,RAM 102存储N个数据块,其中N可以是任何正整 数。RAM 102可以利用允许随机访问所存储的数据的任何合适的计算机数据存储器来实现。 RAM 102的例子可以包括但不限于动态RAM(DRAM)和静态RAM(SRAM)。

[0057] 存储器控制器106是管理进出RAM 102的数据流的存储器控制器。例如,存储器 控制器106可以处理对RAM 102的读数据和写数据请求。存储器控制器106可以利用任何 合适的存储器控制器来实现,包括但不限于双倍数据速率DDR存储器控制器、双通道存储 器控制器或全缓冲存储器控制器。

[0058] 输入高速缓存110、位向量高速缓存114和输出高速缓存120是存储器高速缓存, 它们按照以下进一步描述的技术在查询处理期间存储数据。通过高速缓存该数据,可以最 小化由RAM 102处理的I/O操作的数量,从而减少数据瓶颈。

[0059] 系统控制108、过滤单元112、合并单元116和投影单元118 (在此称为"数据库单 元")按照以下进一步详细描述的技术来工作以执行过滤和投影操作。这些组件中的每一 个以及在此描述的其它数据库单元可以实现为硬件或者硬件和软件的组合。例如,这些单 元中的一个或多个可以利用可编程逻辑器件(PLD)来实现,比如现场可编程门阵列(FPGA) 或其它类型的门阵列或可重构电路。作为另一个例子,这些单元中的一个或多个可以利用 通用处理器来实现,比如高级RISC机器(ARM)或其它精简指令集计算机(RISC)处理器。

[0060] 基于谓词过滤数据

[0061] 图2根据实施例说明用于执行过滤和投影操作的示例过程。在图2中示出的过程 可以在任何合适的系统上实现,比如图1中示出的系统100或图4中示出的系统400。

[0062] 参考图2,在步骤202,系统控制108接收到包括一个或多个谓词的集合的查询。例 如,查询可以包括带有指定一个或多个谓词的WHERE子句的SELECT语句。但是,根据特定 的实现方式,也可以使用任何其它合适的语法。在实施例中,每个谓词指定用来过滤从数据 库中提取并且作为查询的结果输出或以其他方式返回的数据的准则。该准则可以利用一个 或多个运算符来指定,运算符包括但不限于以上表1中示出的运算符。

[0063] 在示例实施例中,系统控制108解析接收到的查询,以确定该查询包括哪些谓词 以及这些谓词应该如何编程到过滤单元112中。步骤204至210定义对谓词集合中的每个 谓词进行重复的循环。因此,在步骤204的第一迭代中,用谓词集合中的第一谓词对过滤单 元112进行编程。系统控制108可以按任何合适的次序将谓词编程到过滤单元112中。用 于选择次序的技术在以下进一步详细描述。在实施例中,对过滤单元进行编程可以包括配 置FPGA或其它可重构的电路来应用由谓词指定的过滤准则。例如,可以利用硬件描述语言 (HDL)对过滤单元112进行编程来实现表1中示出的任何谓词运算符以将一个或多个值与 谓词值进行比较。

[0064] 通常,谓词对特定列的值施加条件。谓词在其上施加条件的列在本文中被称为谓 词的目标列。因此,对于谓词(AM0UNT>200),AMOUNT列是目标列。

[0065] 在步骤206,列的值被发送到过滤单元112。在示例实施例中,系统控制108向存 储器控制器106发送请求来将一列或多列的值从RAM 102加载到输入高速缓存110中。系 统控制108可以基于被评估的谓词确定哪些列应该被加载到输入高速缓存110中。例如, 系统控制108可以使得只从过滤单元112当前用来编程的谓词的目标列中加载值。例如, 对于谓词AM0UNT>200,系统控制108可以使得AMOUNT列的至少一部分的值从RAM 102加载 到输入高速缓存110中,如以下的示例实现方式中所示出的。

[0066] 来自目标列的值然后从输入高速缓存110流到过滤单元112。在接收到列数据时, 过滤单元112应用在步骤204编程的谓词,以生成识别满足该谓词的行的结果。为了确定 哪些行满足该谓词,过滤单元112可以应用一个或多个谓词运算符来比较接收到的列的特 定行的值和查询谓词中指定的谓词值。

[0067] 在步骤208,过滤的结果被存储为指示哪些行具有满足谓词条件的目标列值的数 据结构。在实施例中,数据结构是如以下进一步详细描述的位向量。在备选实施例中,数据 结构是从位向量生成的编码的数据。也可以生成、存储和使用任何其它合适的数据结构来 指示哪些行具有满足谓词条件的目标列值。

[0068] 在步骤210,系统控制108确定谓词集合中是否还存在未被过滤单元112评估的剩 余谓词。如果存在还未被评估的剩余谓词,则过程返回到步骤204,并且系统控制108用剩 余谓词中的一个谓词来编程过滤单元112。如果谓词集合中所有谓词都已经被评估,则过程 继续到步骤212,这将在以下进一步详细描述。

[0069] 在过滤单元处生成位向量

[0070] 在实施例中,过滤单元为每个谓词结果生成位向量。位向量的每一位都对应于行 并且指示对应行是否满足与该位向量相关联的查询谓词。例如,位向量中位的位置可以对 应于表中对应行的位置。因此,位向量中的第三位可以对应于表的第三行。

[0071] 每一位的值表示布尔值,其中第一位值指示对应的行满足谓词条件并且第二位值 指示对应的行不满足谓词条件。例如,如果表的第三行满足与位向量相关联的谓词,则位向 量中第三位是"1",并且如果表的第三行不满足与位向量相关联的谓词,则位向量中第三位 是 "0"。

[0072] 合并结果

[0073] 在根据步骤202至210为每个谓词都生成结果之后,在步骤212通过以查询指定 的方式合并每个谓词的结果来生成最终结果。最终结果是诸如最终位向量的数据结构,其 识别满足查询中所有谓词的行的集合。

[0074] 在实施例中,最终结果是最终位向量,其中最终位向量的每一位都对应于查询所 针对的表的特定行。正如特定于谓词的位向量中每一位的值指示对应的行是否满足与位向 量相关联的谓词,最终位向量中每一位的值也指示对应的行是否满足所有谓词。因此,第一 位值(例如,"1")用于指示对应的行满足查询中的所有谓词,并且第二位值(例如,"〇") 用于指示对应的行不满足所有谓词。

[0075] 在示例实施例中,系统控制108用关于如何合并位向量的指令编程合并单元116。 例如,合并单元116可以被编程为基于查询中指定的逻辑运算符执行一个或多个按位操作 来合并结果位向量。例如,在查询1的情况下,系统控制108会将合并单元116编程为执行 按位或(bitwise 0R)操作,然后按位与(bitwise AND)操作,来产生最终位向量,如在以下 示例实现方式中所示出的。

[0076] 投影过滤的数据

[0077] 在步骤214,投影单元118使用最终结果从投影的列中选择行输出。在使用最终位 向量的情况下,投影单元118逐位处理最终位向量,以识别满足所有查询谓词的行(即,在 最终位向量中对应位被设置为第一位值的那些行)。在步骤216,投影单元118从输入高速 缓存110中为投影的列检索列数据并且将由最终结果识别的行输出到输出高速缓存120。 在这种情况下输出行是指在输出高速缓存120中存储满足谓词的行。一旦行被输出,它就 可以在任何时间作为查询结果返回给例如用户或应用程序。

[0078] 在步骤218,系统控制108或投影单元118确定由查询指示的所有列是否都已被投 影。例如,在查询1的情况下,投影的列包括SALESMAN、⑶STOMER和AMOUNT列。如果剩有 任何投影的列,则过程返回到步骤214,并且最终结果被应用到剩余集合中的列。应用最终 结果可以包括利用最终位向量作为掩码或将最终位向量转换成存储器地址,如以下进一步 描述的。重复这个过程,直到查询所指示的所有列都已被投影。

[0079] 基于最终结果投影行的过程可以根据特定的实现方式而变化。在一种实施例中, 来自投影的列的值的行如果在过滤过程中还没有存储在输入高速缓存110中,则该行被加 载到输入高速缓存110中。投影单元118基于最终结果确定这些值的行中的哪些行应该被 存储在输出高速缓存120中。在实施例中,投影单元110使用最终结果位向量作为控制哪 些行在步骤216从投影单元118输出到输出高速缓存120的掩码。例如,投影的列的每一 行都可以从输入高速缓存110流到投影单元118。投影单元118然后可以应用位向量作为 掩码来只让满足所有查询谓词的那些行流到输出高速缓存120。作为替代,如以下进一步详 细描述的,可以使用地址生成器来向投影单元118提供仅仅应该被输出的那些行。

[0080] 混合列式(COLUMNAR)块处理

[0081] 在实施例中,系统以混合列式方式在RAM 102中存储数据库的至少一部分。混合 列式存储将数据库分成块,其中每块都具有一列或多列的固定数量的行。例如,第一块可以 存储一列或多列的前50行,第二块存储下一个50行并且第三块存储再下一个30行。每个 块内,数据以面向列的方式存储。换句话说,列中的元素在块中被连续地存储。以混合列式 方式存储数据使得系统以可管理的块大小容易地处理列。

[0082] 在实施例中,上述过滤和投影操作可以在每块的基础上执行。例如,如果列被分散 在多个块上,则过滤和投影操作可以应用到列的驻留在第一块中的第一部分,来产生第一 结果集合。可以为每个后续块重复该过程直到整个列都被处理。在一个阶段生成的结果集 合在被返回之前不需要等待后续阶段。例如,为一个块生成的结果集合可以在后续块处理 之前或期间被返回。

[0083] 过滤/投影操作的示例系统实现

[0084] 图3A至3E是根据实施例说明在执行过滤和投影操作的过程中系统的不同状态的 系列框图。具体地,这些图说明了处理以上表2中示出的查询1的系统100。

[0085] 图3A是过滤操作开始时系统100的框图。参考图3A,SALESMAN、⑶STOMER和 AMOUNT列以混合列式方式驻留在RAM 102中并且被分割在块302和块310之间。具体而 言,如分别由SI 304、C1 306和Al 308示出的,SALESMAN列、CUSTOMER列和AMOUNT列的第 一部分位于块302中。如分别由S2 312、C2 314和A2 316示出的,SALESMAN列、CUSTOMER 列和AMOUNT列的第二部分位于块310中。

[0086] 当系统控制108接收到查询1时,系统控制108确定如何评估谓词并且使得适当 的列被加载到输入高速缓存110中。所图3B所示出的,谓词AM0UNT>200被首先评估。相 应地,系统控制108用谓词330编程过滤单元112。AMOUNT列的第一部分Al 308被加载到 输入高速缓存110中并且发送到过滤单元112。过滤单元112然后利用谓词330逐个值地 (其中每个值对应于不同的行)评估Al 308的列数据以生成位向量Apl 340,该位向量指 示满足谓词AM0UNT>200的Al 308的行。第一位向量Apl 340在以下表10中示为Apl。位 向量高速缓存114为后续处理存储这个位向量。

[0087]

[0088]

[0089] 表10 :示出其中AM0UNT>200的行的第一位向量Apl

[0090] 在评估了谓词AM0UNT>200之后,然后以类似的方式连续地处理下两个谓词 SALESMAN = Pedro和SALESMAN = Alex。例如,SALESMAN列Sl 304可以被加载到输入高速 缓存110中。系统控制108编程过滤单元112,在第一种情况下将"="操作应用到"Pedro" 值并且在第二种情况下将"="操作应用到"Alex"值。过滤单元112在每种情况下逐行地 评估SALESMAN列,以生成第二和第三位向量。图3C是所有谓词都被处理之后的系统的框 图。位向量Sp2 342表示响应于评估谓词SALESMAN = Pedro而生成的位向量,并且位向量 Sp3 344表示响应于评估谓词SALESMAN = Alex而生成的位向量。这些位向量在以下表11 中示出。

[0092][0093] 表11 :第二位向量Sp2示出其中SALESMAN = Pedro的行以及第三位向量Sp3示

[0091] 出其中SALESMAN = Alex的行

[0094] 在实施例中,过滤单元112生成的位向量的位长度与块中的行一样多。例如,以上 表10和表11中不出的位向量长度对应于对于每一列被存储在块1 302中的值的数量。因 此,位向量Apl 340具有与Al 308的行数相同数量的位,并且位向量Sp2 342和Sp3 344 具有与SI 304的行数相同数量的位。在这些表中,满足谓词的行被分配位值"1"并且不满 足谓词的行被分配位值"0"。但是,根据实现方式,这些位值可以颠倒。

[0095] 在为每个谓词都生成结果位向量之后,最终位向量可以通过上述合并过程来生 成。在查询1的情况下,合并过程可以按WHERE子句中逻辑运算符指定的方式来实现。相 应地,系统控制108首先编程合并单元116以在位向量Sp2 342和Sp3 344上执行按位或 (bitwise 0R)。然后OR操作的结果被用来执行与位向量Apl 340的按位与(bitwise AND)。 图3D示出了在谓词结果位向量已被合并来产生用于检索过滤的行的最终集合的最终位向 量之后系统的框图。

[0096] 参考图3D,位向量高速缓存114存储位向量Sp2|Sp3 344,该位向量Sp2|Sp3 344 是在位向量Sp2 342和Sp3 344上执行按位或(bitwise OR)操作的结果而产生的位向量。 合并单元116然后利用位向量Sp2 I Sp3 344和位向量Apl 340执行按位与(bitwise AND) 操作来生成最终位向量Apl(Sp2|Sp3)348。这些位向量在以下表12中示出。在表12的最 后一列中示出的最终位向量表示块1 302中满足查询1的所有谓词的行。

[00971

[0098]

[0099] 表12 :位向量合并操作的结果,包括用于块302的最终位向量

[0100] 最终位向量被发送到投影单元118,投影单元118使用该位向量从适当的列投影 行。在查询1中,SELECT语句指示数据应该从sales表的SALESMAN、CUSTOMER和AMOUNT 列投影。相应地,SI 304可以从输入高速缓存110流到投影单元118。投影单元118可以 逐位遍历最终位向量并且将对应于该最终位向量中的" 1"的Sl 304的行发送到输出高速 缓存120。投影单元118利用同一最终位向量为⑶STOMER和AMOUNT列重复这一过程。

[0101] 图3E是在过滤和投影操作结束时系统的框图。Srl 350表示从块302投影的 SALESMAN列数据,Crl 352表示从块302投影的⑶STOMER列数据,并且Arl 354表示从块 302投影的AMOUNT列数据。该数据可以在系统开始处理块310时作为结果发送出去。

[0102] 然后可以对诸如块310的其它块中存储的数据重复上述过滤和投影操作。为了说 明起见,假设sales表还包括以下表13中示出的行。

[0103]

[0104] 表13 :不例sales表的附加行

[0105] 块310以面向列的格式存储行8-12的数据。例如,S2 312可以以相邻的次序存储 以下值:Pedro、Alex、Alex、Michael、Pedro。类似地,C2 314 存储 CUSTOMER 列的行 8-12, 并且A2 316存储AMOUNT列的行。

[0106] 以下表14示出了在对块310中存储的数据执行过滤操作之后生成的位向量。

[0107]

[0108] 表14 :位向量合并操作的结果,包括用于块310的最终位向量

[0109] 表14的最后一列中示出的最终位向量识别块310中满足所有查询谓词的行。投 影单元118逐位解析这个最终位向量,并且将对应于该最终位向量中的"1"的S2 312的行 发送到输出高速缓存120。投影单元118利用同一最终位向量为C2 314和A2 316重复这 一过程。

[0110] 基于地址生成的选择性行过滤

[0111] 在一些实施例中,在谓词评估期间提供给过滤单元112的行可以基于从之前谓词 评估中获得的结果来进行限制。例如,在评估后续谓词时可以不需要考虑某些不满足之前 评估的谓词的行。通过选择性地向过滤单元112提供用于处理的行,过滤单元112就可以 避免为每个谓词都必须评估整个列。

[0112] 图4是根据实施例说明具有用于执行过滤和投影操作的地址生成器的示例系统 体系结构的框图。系统400是包括地址生成器402的系统100的变形。系统400可以使用 地址生成器402来选择性地向过滤单元112提供将要被过滤的列的行。

[0113] 在实施例中,地址生成器402使用前一个过滤的位向量结果来将行的子集提供给 过滤单元用于后续的过滤。其中使用位向量来限制提供给过滤单元112的行的方式取决于 查询中指定的逻辑运算符。例如,就查询1而言,第一谓词与随后的谓词相与。因此,如果 行不满足第一谓词,则对于接下来的两个谓词就不需要再考虑该行。

[0114] 在以上示例实现中,当产生位向量Sp2 342和Sp3 344时,地址生成器402可以 使用位向量Apl 340来向过滤单元112只提供满足第一谓词的行。具体而言,因为与谓词 AM0UNT>200相关联的位向量是1001111,所以就不需再针对其它谓词评估第二和第三行。 能被跳过的后续评估的数量越大,查询评估越高效。例如,如果AM0UNT>200已产生位向量 0000000,则剩余谓词的全部评估都可以被跳过。

[0115] 因为接下来的两个谓词在一起相或,所以在评估第三谓词时,不需要再考虑满足 第二谓词的行。即,与第二谓词相关联的位向量1100001指示第一行、第二行和第七行在评 估第三谓词的过程中可以被跳过。

[0116] 事实上,在评估第三谓词的过程中,地址生成器402可以使用第一谓词和第二谓 词的结果位向量来确定只有第四行、第五行和第六行需要针对第三谓词进行评估。具体而 言,因为第二行和第三行没有满足第一谓词,因此它们可以被跳过,并且因为第一行、第二 行和第七行确实满足第二谓词,因此它们也可以被跳过。

[0117] 评估次序

[0118] 评估谓词的次序可以根据实现方式而变化。在实施例中,谓词可以按顺序的次序 进行评估。例如,谓词可以按查询中所指定的连续地从左到右或从右到左进行评估。

[0119] 在另一种实施例中,谓词评估的次序可以基于谓词将过滤掉大量行的可能性(即 谓词的"选择性")。当高选择性的谓词被首先评估时,大量的行在过滤过程中被更早地过 滤掉。在系统400中,这使得地址发生器402在随后的谓词评估过程中向过滤单元112提 供行的较小子集。因此,在处理较低选择性的谓词之前处理较高选择性的谓词可以减少处 理的开销。

[0120] 在实施例中,系统控制108基于查询中指定的运算符评估谓词的选择性。例如, 与其它谓词相与的谓词比与其它谓词相或的谓词更可能是高选择性的。在另一个例子中, 等值谓词运算符(" = ")比不等于谓词运算符("〈>"或"!=")更可能是高选择性的。 基于估计,系统控制108按从最高选择性的谓词到最低选择性的谓词的顺序编程过滤单元 112。

[0121] 在其它实施例中,在查询中指定的一个或多个谓词被并行地处理。例如,过滤单元 112可以用查询中指定的两个或更多个谓词进行编程。过滤单元112可以同时评估这两个 谓词。用于并行化谓词评估过程的技术在以下进一步描述。

[0122] 在使用地址生成器的系统中投影过滤的数据

[0123] 在另一种实施例中,地址生成器402可以将最终位向量转换成用于满足所有查询 谓词的每一行的存储器地址集合。然后地址生成器402可以使用这些存储器地址从输入高 速缓存Iio中只请求这些行并将它们提供给投影单元118用于输出。因为不需要整个列都 流过投影单元118,因此这可以节省处理开销。

[0124] 例如,在步骤214,最终位向量可以从位向量高速缓存114提供给地址生成器402。 地址生成器402然后为具有指示行满足谓词集合的对应位值的每一行确定存储器地址。地 址生成器402利用这些存储器地址向输入高速缓存110发送存储器取请求。如果这些行 已经被加载到输入高速缓存110中,则它们可以直接地从输入高速缓存110流到投影单元 118,其中投影单元118将这些行输出到输出高速缓存120。作为替代,这些行可以被发送到 地址生成器402。

[0125] 每列多个谓词

[0126] 在以上给出的例子中,过滤单元112在每次通过列数据时应用单个谓词。在备选 实施例中,过滤单元112可以被配置为对每列处理多个谓词。例如,样例查询1包括谓词 SALESMAN = Pedro或SALESMAN = Alex。这两个谓词都涉及同一列。因此,系统控制108 可以用这两个谓词编程过滤单元,使得在SALESMAN列单次通过过滤单元112的情况下,这 两个谓词都可以被评估。

[0127] 每单元多列

[0128] 在以上给出的例子中,过滤单元112在单列输入上操作。在备选实施例中,过滤单 元112可以包括多列输入。多列输入在评估某些谓词时可能会有帮助。例如,子句WHERE SALESMAN = CUSTOMER在同一谓词中引用SALESMAN和CUSTOMER列。如果过滤单元112具 有两列输入,则谓词可以在一次通过中进行评估。即使在单个谓词中没有包含两列的情况 下,具有多列输入也可以被用来同时在多列上处理谓词。

[0129] 根据实现方式,投影单元118也可以包括多列输入。例如,如果投影单元118具有 多列输入,则最终位向量可以同时应用到多个列来并行地投影结果。

[0130] 用于处理分组和聚合操作的示例体系结构

[0131] 在实施例中,可以配置专门的硬件来执行分组和聚合操作。图5根据实施例说明 可以配置成执行分组和聚合数据库操作的示例系统体系结构。系统500可以包括系统100 或系统400的所有元素。除此此外或作为投影单元118的替代,系统500还包括聚合单元 502。

[0132] 系统500可以以任何合适的方式与系统100或400合并或者集成。每个重叠块可 以被实现为相同的硬件单元或分离的独立单元。例如,过滤单元112可以是系统100或系 统400中执行谓词过滤的相同的硬件单元。该同一单元也可以用来根据以下描述的技术基 于列数据创建分组。作为替代,可以使用分离的过滤单元和/或其它数据库单元来处理分 组操作和过滤操作。在其它实施例中,系统500可以被实现为独立于系统100或400中示 出的过滤和投影逻辑和/或与其相分离。

[0133] 利用谓词过滤来分组和聚合数据

[0134] 图6根据实施例说明用于执行分组和聚合操作的示例过程。图6中示出的过程可 以在任何合适的系统中实现,比如图5中示出的系统500。

[0135] 参考图6,在步骤602,接收到查询,其包括请求聚合按照一列或多列分组的数据。 例如,查询可以包括任何合适的聚合函数,包括但不限于在表5中列出的那些。聚合函数可 以与指定一列或多列用于分组聚合结果数据的GROUP BY语句结合使用。但是,可以使用任 何合适的语法来指定聚合函数和分组列。

[0136] 在步骤604,要被分组的第一列的行被发送到过滤单元112。例如,在样例查询 3的情况下,SALESMAN列的第一行可以被发送到过滤单元112。在样例查询4的情况下, SALESMAN列和⑶STOMER列可以按照以下进一步描述的技术进行合并并且发送到过滤单元 112。作为替代,如果过滤单元112具有如以下进一步详细描述的多列输入,则SALESMAN列 和⑶STOMER列的第一行可以被同时发送到过滤单元112。

[0137] 在步骤606,过滤单元112识别与列的第一行相关联的元素。在实施例中,该元素 是存储在列的第一行内的数据项。例如,参考表3中示出的示例sales表,SALESMAN列的 第一个元素是"Pedro",并且CUSTOMER列的第一个元素是"Gainsley Corp. "。

[0138] 在步骤608,过滤单元112使用等于步骤606识别的第一个元素作为谓词来过滤掉 不属于第一元素所属分组的行。例如,假设SALESMAN列中的第一个元素是"Pedro",则过滤 单元112使用谓词"SALESMAN = Pedro"来过滤掉不属于"SALESMAN = Pedro"分组的所有 行。系统控制108可以响应于在步骤602接收到查询而用这个逻辑编程过滤单元112。

[0139] 在步骤610,列的剩余行(即,除第一行之外的那些行)被发送到过滤单元112。 在实施例中,剩余行在第一次通过时以相邻的次序从输入高速缓存110流到过滤单元112。 在后续通过中,地址生成器可以向过滤单元112只馈送那些之前还没有被分组的行。

[0140] 在步骤612,过滤单元112过滤掉不满足该过滤的行,以生成第一行所属的行的分 组(例如,其中SALESMAN = Pedro的所有行的组)。该步骤可以包括生成识别每个满足等 值谓词的行的位向量或其它数据结构。类似于上述谓词过滤,位向量中的每一位都可以对 应于列中不同的行,其中第一位值指示该行满足所述等值谓词并因此是该组的一部分,并 且第二位值指示该行不满足所述等值谓词并因此不是该组的一部分。

[0141] 在步骤614,第一行和与第一列相匹配的行被分组并且发送到聚合单元502。在示 例实施例中,过滤单元112将在步骤612生成的位向量发送到地址生成器402,地址生成器 402使用该位向量来从存储器中只请求作为当前组的一部分的那些行。一旦接收到这些行, 地址生成器402就将它们发送到聚合单元502用于聚合。

[0142] 在步骤616,聚合单元502如查询所指示的那样来聚合分组的行的值。例如,在查 询3和查询4的情况下,聚合单元502将合计AMOUNT列中存储的分组的行的值。

[0143] 在步骤618,系统500确定是否存在任何还未被分组的剩余行。如果存在,则过程 返回到步骤604,其中只对那些还未被分组的行重复分组和聚合操作。相应地,过滤单元 112被重新编程,以使用第一未分组行的元素作为等值谓词来形成新的组。

[0144] 在根据表3的本例中,行1和行2将被分组在SALESMAN = Pedro组中。因此,第三 行将是第一个"还未被分组"的行。该第三行在SALESMAN列具有值"Alex",其中SALESMAN 列是该查询的分组列。因此,基于过滤SALESMAN = Alex确定第二组。第二组将包括行3、 行5和行6。

[0145] 在步骤604的第三次迭代过程中,行4是第一个未分组的剩余行。行4在SALESMAN 列具有值"Michael"。因此,基于过滤SALESMAN = Michael确定第三组。第三组将只包括 行4。在第三组形成之后,图6中示出的过程将结束,因为不再剩有未分组的行。

[0146] 在每次迭代的过程中,系统500基于新的谓词生成并聚合分组。如果所有的行都 已被分组,则处理结束。如果相关的列被存储在多个RAM块上,则可以为多个RAM块中的每 一块重复该过程以产生最终结果,如以下进一步详细描述的。

[0147] 基于之前生成的位向量确定后续分组

[0148] 在实施例中,在步骤612生成的用来识别行分组的位向量(在本文称作"分组成员 位向量")也可用来选择地向过滤单元112提供用于后续分组的行。具体而言,分组成员位 向量中的每一位对应于特定的行。当位在分组成员位向量中被设置为诸如"1"的第一位值 时,其指示用于特定行的分组已被识别。如果已生成的分组成员位向量都没有为特定行将 该位设置为第一位值,则特定行还没有与分组相关联。因此,该特定行可以被提供给过滤单 元112用于后续处理,以确定该特定行属于哪个组。

[0149] 合并单元116可以在步骤612生成的分组成员位向量中的一个或多个上执行按位 操作,以生成识别未分组行的位掩码。在一种实施例中,在生成第一位向量之后,可以在该 位向量上执行按位非(bitwise NOT)操作。这导致产生其中第一位值识别之前还未被分组 的行的位掩码。相应地,地址生成器402可以以相同方式操作来将位掩码转换成用于这些 行的存储器地址。然后地址生成器402可以请求检索这些行,并且只检索这些行,使得只有 还未分配到分组的行被提供给过滤单元112用于后续分组和聚合操作。

[0150] 在生成第二分组成员位向量之后,由于现在集合中存在多个位向量,因此NOT操 作自身将无法识别之前未分组的行。因此,为了生成识别之前未分组的行的位掩码,合并 单元116可以在用于当前分组的分组成员位向量和之前生成的位掩码之间执行按位异或 (bitwise exclusive)操作。这个过程在以下示例实现方式中进行说明。

[0151] 逐块分组和聚合

[0152] 在一种实施例中,上述分组和聚合操作可以被逐块地执行。例如,表数据可以以混 合列式格式存储在多个RAM块中。图6的处理可以在第一块上实现,以生成识别第一块中 的分组和聚合值的第一结果集合。可以以同样的方式为剩余RAM块中的每一块重复这个过 程。相应地,为每个剩余的块生成识别分组和聚合结果的结果集合。

[0153] 根据特定的实现方式,输出高速缓存120可以在多个块的处理完成之前用数据填 充。例如,如果相关数据被分散在许多块上,那么输出高速缓存120可能没有足够的存储空 间来为每一块存储结果集合。如果存在大量的分组或列数据元素很大,那么输出高速缓存 120中的存储空间也会被更快地消耗。

[0154] 为了释放输出高速缓存120中的存储空间或者为了生成最终结果,用于不同块的 多个结果集合可以按照图6中描述的过程进行分组和聚合。例如,在输出高速缓存被填满 或以其他方式可用存储空间量小于阈值之后,输出高速缓存120中的数据可以被发送到输 入高速缓存110。然后,以与上述相同的方式在输入高速缓存数据上运行分组和聚合操作。 因此,不同结果集合的结果记录被分组和聚合,其通过整合结果集合可以释放更多的存储 空间。如果这个过程没有释放输出高速缓存120中的空间或输出高速缓存120达到使性能 严重降低的高占用率状态,则输出高速缓存的内容可以被传递到诸如通用处理器的另一个 单元用于更大规模的聚合。

[0155] 分组/聚合操作的示例系统实现

[0156] 图7A至7E是根据实施例说明在执行分组和聚合操作的过程中系统的不同状态的 系列框图。具体地,这些图说明了处理以上表6中示出的样例查询3的系统500。

[0157] 图7A示出了在为查询3处理第一分组之后的系统图。如所示出的,SALESMAN列 和AMOUNT列被分在多个块之间。SALESMAN列的第一部分SI 704和AMOUNT列的第一部分 Al 706被存储在块702中,并且SALESMAN列的第二部分S2 712和AMOUNT列的第二部分 A2 714被存储在块710中。在实施例中,数据以混合列式格式存储在这些块中。

[0158] 当接收到查询3时,系统控制108使得SALESMAN列的第一部分Sl 704加载到输入 高速缓存110中。SALESMAN列可以从输入高速缓存110流到过滤单元112以基于SALESMAN 列分组行。为了计算第一分组,系统控制108编程过滤单元112以使用等于SALESMAN的第 一元素作为过滤谓词。这通过图7A的谓词720表示。在本例中,SALESMAN列的第一个元 素是"Pedro",因此第一分组是SALESMAN = Pedro的行的分组。

[0159] 过滤单元112可以以上述用于过滤和投影操作同样的方式操作,并且具有用于确 定谓词评估中使用的列的第一元素的附加逻辑。一旦用谓词720编程,SALESMAN列的剩余 行就从输入高速缓存110流到过滤单元112用于评估。给定表3中示出的样例sales表和 过滤SALESMAN = Pedro,过滤单元112将生成以下表15中示出的分组成员位向量。

[0160]

[0161]

[0162] 表15 :根据谓词SALESMAN = Pedro的过滤单元输出

[0163] 分组成员位向量bitvectorl对应于谓词720的谓词结果。分组成员位向量中每 个具有值"1"的位识别SALESMAN列中具有值"Pedro"的行。因此,所有属于第一分组的行 由该相同的位值识别。相反,具有"〇"位值的每个位识别不具有值"Pedro"并且因此不属 于第一分组的行。

[0164] 在过滤单元112生成表15中示出的分组成员位向量之后,该分组成员位向量然后 可以被发送到聚合单元502。聚合单元502在AMOUNT列的由位向量指示的作为满足谓词 720的行上操作。在一种实施例中,地址生成器402将分组成员位向量转换成Al 706中其 对应位值等于"1"的行的存储器地址。这些存储器地址被用来从RAM 102中检索来自Al 706的属于该分组的行的值到输入高速缓存110中。然后这些值被提供给聚合单元502用 于聚合。

[0165] 除分组成员位向量之外,聚合单元502还接收它要执行的聚合操作类型的指示。 例如,系统控制108可以编程聚合单元502来执行查询中指定的聚合函数。示例聚合函数 包括但不限于表5中示出的聚合函数。在查询3的情况下,聚合单元502合计AMOUNT列的 由分组成员位向量bitvectorl指示的行中存储的数据。聚合单元502可以为结果集合生 成两个输出:分组的名称以及对该分组的聚合操作的结果。处理查询3时第一分组的输出 在以下表16中示出。聚合单元502将这个输出(聚合结果750)存储在输出高速缓存120 中。

[0166]

[0167] 表16 :聚合单元的第一输出

[0168] 一些聚合操作可能包括两个以上的输出。例如,AVG函数可以保存GR0UP、RUNNING AVERAGE和TOTAL ELEMENTS,以便为后续发生的分组计算平均值。

[0169] 图7B是处理第二分组之后的系统图。与聚合单元502在第一分组成员位向量上 操作以生成第一分组的聚合结果同时地,过滤单元112可以开始为第二分组产生下一个分 组成员位向量。这次,只向过滤单元112提供那些在第一次通过过滤单元时产生"0"的行。 在示例实施例中,合并单元116在Bitvectorl上执行按位非(bitwise NOT)操作740,以生 成位向量掩码~Bitvectorl 730并将该位向量掩码存储在位向量高速缓存114中。位向 量掩码~Bitvectorl 730识别所有还未被分组的行。

[0170] -旦生成这个位向量掩码,然后就可以将它发送到地址生成器402,该地址生成器 402将~Bitvectorl 730转换成用于之前还未被分组的行的存储器地址并且使得只有这 些行被传送给过滤单元112。过滤单元112然后可以通过从由地址生成器402提供的之前 未分组的行中取得第一元素并且利用等于这个第一元素作为新的谓词722来对这些未分 组的行进行操作。在本例子中,等于值"Alex"被用作新的谓词722。过滤单元112利用谓 词722评估之前还未被分组的剩余行,以为第二分组生成分组成员位向量Bitvector2 732 并且将这个分组成员位向量存储在位向量高速缓存114中。BitVect〇r2 732中每个具有位 值"1"的位都对应于属于第二分组的行。聚合单元502使用Bitvector2来生成聚合结果 752,其为第二分组中的那些行合计AMOUNT列。结果752被存储在输出高速缓存120中。

[0171] 图7C是在处理第三分组之后的系统图。除了使用不同的位向量掩码来指示哪些 行应该被发送到过滤单元112之外,处理第三分组可以按类似于处理第二分组的方式进 行。为了确定哪些行应该被提供给过滤单元112,合并单元116可以用Bitvectorf和之前 的位向量掩码~Bitvectorl执行异或(X0R 742)按位操作来生成新的位向量掩码BV掩码 736。BV掩码736中每个具有位值"1"的位都对应于还未被分组的行。地址生成器402使 用BV掩码736向过滤单元112提供还未被分组的行。过滤单元112使用等于值"Michael" 作为新的谓词724来生成Bivector3 734。聚合单元502使用Bitvector3 734来生成聚合 结果754,其为第三分组中的那些行合计AMOUNT列。结果754被存储在输出高速缓存120 中。以下表17示出了在这些步骤中生成的分组成员位向量。如果块中有其它分组,则它们 的处理将类似于第三分组的处理。

[0172]

[0173] 表17 :第三次通过过滤单元产生的位向量

[0174] 在第一块中的数据聚合结束时,在输出高速缓存120中存储的表可以利用以下表 18中示出的表来表示。

[0175]

[0176] 表18 :在单个块之后的聚合输出

[0177] 图7D是在RAM中的两个块已被处理之后的系统图。具体地,应用到块702的同一 过程可以应用到块710来对第二块中存储的数据进行分组和聚合。块710存储SALESMAN 列的第二部分S2 712和AMOUNT列的第二部分A2 714。为简单起见,假设块710中Pedro、 Alex和Michael的销售合计分别为1000、2000和3000。因此,分组和聚合操作生成结果集 合756,其与处理第一块时生成的结果集合一起存储在输出高速缓存120中。因此,输出高 速缓存120存储合并的结果集合758。以下表19示出了已经处理两个块之后的输出的表 /Jn 〇

[0178]

[0179] 表19 :两个块之后的聚合输出

[0180] 图7E是在输出高速缓存中的结果已经被处理之后的系统图。如果输出高速缓存 120中的可用存储空间小于阈值或者已准备好要计算用于每个块的最终聚合结果,则结果 集合758可以被发送到输入高速缓存110用于进一步的处理和整合。分组和聚合操作然后 以与之前描述的相同的方式在输入高速缓存数据上运行。在该聚合通过之后,在结果高速 缓存中最终出现的数据在以下表20中示出。这个数据作为结果760存储在输出高速缓存 120 中。

[0181]

[0182] 表20 :在对全部结果高速缓存进行聚合之后的结果高速缓存数据

[0183] 因此,为每一块生成的单独的结果集合被分组并聚合来为这两块生成单个结果集 合。

[0184] 如果有其它的剩余RAM块,则继续这个过程,直到所有的块都被聚合。如果结果高 速缓存被完全填满或者达到使性能严重降低的高占用率状态,则可以将结果高速缓存的内 容传递到诸如通用处理器的另一个单元用于更大规模的聚合。

[0185] 为高速缓存确定大小

[0186] 输入高速缓存110、位向量高速缓存114以及输出高速缓存120的大小可以根据 特定的实现方式而变化。小的高速缓具有若干个好处,包括更快的操作和更小的面积消耗。 但是,确定为更大的高速缓存可以在过滤和投影操作期间减少RAM访问的数量。因此,各个 高速缓存的最佳高速缓存大小可以根据实现方式而变化。

[0187] 在一种实施例中,可以选择输入高速缓存110、位向量高速缓存114和/或输出高 速缓存120的大小为接近诸如块104A到104N的RAM的一个或多个块的大小。利用接近于 块大小的高速缓存大小,系统就可以用有限的RAM访问高效地逐块或多块地执行过滤和投 影操作。

[0188] 在另一种实施例中,高速缓存大小被确定为使得输入高速缓存具有足够的存储空 间用于正在被分组的列以及存储聚合数据的列。如果在块中分组基数大于1,则这两列都会 被处理多次,因此具有大得足以存储这两列的高速缓存可以节省从RAM中重复读取它们的 时间和能量。

[0189] 在另一种实施例中,输出高速缓存的大小可以根据总体数据集合的预期基数以及 块内的基数进行确定。块内分组数量的基数越高,输出高速缓存将越快地填满,使得结果数 据在上述分组和聚合操作期间被聚合得更频繁。同样,如果分组数据的总体基数高,则无论 执行了多少额外的聚合,输出高速缓存都可能不能为每个分组都保存结果。如果即使在对 输出高速缓存的内容运行聚合之后输出高速缓存还是满的,则会使用更高级别的处理节点 来完成聚合,这可能导致性能降低。因此,大得足以保存至少最终结果集合的输出高速缓存 可以提商性能。

[0190] 高速缓存的大小也可以基于RAM 102的存储器接口与诸如过滤单元112、合并单 元116和投影单元118的数据库单元之间的相对速度来进行选择。如果存储器与数据库单 元相比较快,则较小的高速缓存可能是优选的,因为与频繁的加载相关联的成本可能很小。 相反,如果与数据库单元的处理速度相比存储器较慢,则较大的高速缓存大小可能更高效。

[0191] 在另一种实施例中,输入高速缓存110、位向量高速缓存114和/或输出高速缓存 120的大小是基于数据库工作负荷的属性来选择的。在一些情况下,块内的列数据可能被数 据库单元处理多次,诸如当许多谓词被应用到同一列时。如果这种情形在特定的实现方式 中常见,则较大的高速缓存大小可以通过使列数据在高速缓存中驻留更长的时间段来提高 性能。

[0192] 多列分组

[0193] 以上分组和聚合示例描述了处理表6中的查询3,但是同一系统也可以处理基于 多列而不是单列来分组数据的查询4。在一种实施例中,在GROUP BY中包含的列可以被合 并在一起。例如,在查询4的例子中,可以通过诸如串联(concatenation)来合并SALESMAN 列和⑶STOMER列。合并的列然后可以在步骤602发送到过滤单元112。然后,这两列将在 某个时刻分离,诸如在被写入输出高速缓存之前。系统500可以包括用于在列被发送到过 滤单元112之前将这些列合并的附加数据库单元以及用于在输出高速缓存120之前分离这 些列的附加数据库单元。

[0194] 在另一种实施例中,诸如以上描述的能够对多列进行操作的过滤单元被用来处理 多列分组。例如,具有多列输入的过滤单元将能够在单次通过中实现和评估诸如SALESMAN =SALESMAN列的第一个元素并且⑶STOMER =⑶STOMER列的第一个元素的谓词。对于查 询3而言,能够处理两列输入的过滤单元就足够了。如果GROUP BY通过多于两列来分组数 据,则过滤单元可以被配置为接受更多的列或者系统可以迭代遍历列的组合。

[0195] 每次通过多个分组

[0196] 在实施例中,过滤单元112可以被配置为处理多个流,使得在单次通过中可以确 定多个分组。例如,当⑶STOMER列被过滤单元112处理时,一个流可以应用谓词SALESMAN =SALESMAN的第一个元素,而另一个流等待SALESMAN != SALESMAN的第一个元素的第一 个实例,并且使用该SALESMAN值作为等值谓词。这种方法类似于用于执行在上节中描述的 多列分组的技术,但是相同的列被发送到所有的流并且谓词基于之前的谓词的结果。

[0197] 按照这个过程,过滤单元112为其处理的每个分组生成分组成员位向量。如果过 滤单元能够在每次通过时产生N个分组,其中N表示正整数值,则位向量高速缓存114可以 被配置为存储N+2个分组成员位向量:过滤单元112输出的N个位向量、将这N个位向量在 一起取或(OR)的一个位向量、以及如以上示例实现方式中描述的在该求或(OR)所得的位 向量上操作的位向量掩码。

[0198] 在备选实施例中,位向量高速缓存114可以根据实现方式被配置为存储N个或N+l 个位向量。例如,这N个位向量中的一些可以通过OR合并或位向量掩码来被覆盖。

[0199] 当聚合数据时,聚合单元502可以顺序地对N个位向量进行操作。作为替代,如果 聚合单元502还被配置为处理多个流,则聚合单元502可以同时在这些位向量上操作。

[0200] 附加的并行化(PARALLELISM)

[0201] 以上描述的技术说明了所给出的步骤的串行处理。但是,这些步骤中的一些可以 根据实现方式被并行地执行。例如,合并单元116可以在位从过滤单元112中变得可用时 处理位向量,而不是等待过滤单元112完成谓词评估。作为另一个例子,在投影单元118处 理用于输出高速缓存120的列时,过滤单元112可以开始处理要被过滤的下一列。诸如高 速缓存加载和访问的其它步骤也可以与其它过滤和投影步骤并行执行。在再一个例子中, 当聚合单元502处理用于输出高速缓存120的列的同时,过滤单元112可以开始处理下一 分组。诸如高速缓存加载和访问的其它操作也可以并行地操作。

[0202] 硬件概述

[0203] 根据一种实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算 设备可以是硬连线的以执行所述技术,或者可以包括诸如永久编程来执行所述技术的一个 或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括 编程为按照固件、存储器、其它储存器或者其组合中的程序指令来执行所述技术的一个或 多个通用硬件处理器。这种专用计算设备还可以结合定制的硬连线逻辑、ASIC或FPGA与 定制的编程来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手 持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。

[0204] 例如,图8是说明本发明的实施例可以在其上实现的计算机系统800的框图。计 算机系统800包括总线802或者用于传送信息的其它通信机制,以及与总线802耦合用于 处理信息的硬件处理器804。硬件处理器804可以是例如通用微处理器。

[0205] 计算机系统800还包括耦合到总线802用于存储信息和待由处理器804执行的指 令的主存储器806,诸如随机存取存储器(RAM)或其它动态存储设备。例如,RAM 102可以 实现在主存储器806中。主存储器806还可以用于在待由处理器804执行的指令的执行期 间存储临时变量或其它中间信息。当存储在处理器804可访问的非瞬时存储介质中时,这 种指令使计算机系统800成为被定制用于执行指令中所指定的操作的专用机器。

[0206] 计算机系统800还包括只读存储器(ROM) 808或者耦合到总线802的其它静态存 储设备,用于为处理器804存储静态信息和指令。存储设备810,诸如磁盘或光盘,被提供并 且耦合到总线802,用于存储信息和指令。

[0207] 计算机系统800可以经总线802耦合到显示器812,诸如阴极射线管(CRT),用于 向计算机用户显示信息。输入设备814,包括字母数字键和其它键,耦合到总线802,用于向 处理器804传送信息和命令选择。另一种类型的用户输入设备是光标控制816,诸如鼠标、 轨迹球或者光标方向键,用于向处理器804传送方向信息和命令选择并且用于控制显示器 812上的光标运动。这种输入设备通常具有在两个轴(第一个轴(例如,X)和第二个轴(例 如,y))上的两个自由度,以允许设备在平面内指定位置。

[0208] 计算机系统800还可以包括用于执行过滤、投影、分组和/或聚合操作的查询处理 逻辑832。查询处理逻辑832可以利用系统100、系统400或系统500中示出的一个或多个 元件来实现。

[0209] 计算机系统800可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/ 或程序逻辑来实现本文所述的技术,其中程序逻辑与计算机系统相结合,使计算机系统800 或者将计算机系统800编程成为专用机器。根据一种实施例,此处的技术由计算机系统800 响应于处理器804执行包含在主存储器806中的一条或多条指令的一个或多个序列而执 行。这种指令可以从另一存储介质,诸如存储设备810,读入主存储器806中。包含在主存 储器806中的指令序列的执行使处理器804执行此处所述的过程步骤。在备选实施例中, 硬连线的电路可以代替软件指令或者与其结合而被使用。

[0210] 如在此处所使用的,术语"存储介质"指存储使机器以特定方式操作的数据和/或 指令的任何非瞬时介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失 性介质包括例如光盘或磁盘,诸如存储设备810。易失性介质包括动态存储器,诸如主存储 器806。存储介质的常见形式包括,例如,软盘、软磁盘、硬盘、固态硬盘驱动器、磁带,或者任 何其它磁性数据存储介质,CD-ROM,任何其它光学数据存储介质,任何具有孔图形的物理介 质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式存储器。

[0211] 存储介质与传输介质不同但是可以与其结合使用。传输介质参与在存储介质之间 传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线802的导线。传输介 质还可以采取声波或光波的形式,诸如在无线电波和红外数据通信中产生的那些。

[0212] 各种形式的介质可以参与将一条或多条指令的一个或多个序列输送到处理器804 供执行。例如,指令最初可以载存于远程计算机的磁盘或固态硬盘驱动器上。远程计算机可 以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。位于计算机系统 800本地的调制解调器可以在电话线上接收数据并且使用红外发射器把数据转换成红外信 号。红外检测器可以接收在红外信号中携带的数据并且适当的电路可以将数据放置在总线 802上。总线802把数据输送到主存储器806,处理器804从该主存储器806中检索并执行 指令。由主存储器806接收的指令可以选择性地在被处理器804执行之前或之后存储在存 储设备810上。

[0213] 计算机系统800还包括耦合到总线802的通信接口 818。通信接口 818提供耦合 到网络链路820的双向数据通信,其中网络链路820连接到本地网络822。例如,通信接口 818可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供到对 应类型的电话线的数据通信连接的调制解调器。作为另一个例子,通信接口 818可以是提 供到兼容的局域网(LAN)的数据通信连接的LAN卡。无线链路也可以实现。在任何此类实 现方式中,通信接口 818都发送和接收用于承载表示各种类型的信息的数字数据流的电信 号、电磁信号或光信号。

[0214] 网络链路820通常通过一个或多个网络提供到其它数据设备的数据通信。例 如。网络链路820可以通过本地网络822提供到主计算机824或者到由因特网服务提供商 (ISP)826操作的数据设备的连接。ISP 826又通过现在通常称为"因特网"828的全球分组 数据通信网络来提供数据通信服务。本地网络822和因特网828都使用承载数字数据流的 电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路820上并通过通信接口 818的信号是传输介质的示例形式,其中信号把数字数据送入和送出计算机系统800。

[0215] 计算机系统800可以通过网络、网络链路820和通信接口 818发送消息和接收数 据,包括程序代码。在因特网的例子中,服务器830可以通过因特网828、ISP 826、本地网 络822和通信接口 818来发送对应于应用程序的所请求代码。

[0216] 所接收的代码可以在其被接收时由处理器804执行,和/或存储在存储设备810 或其它非易失性储存器中,供随后执行。

[0217] 扩展和备选方案

[0218] 在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些 细节可以从一种实现方式到另一种实现方式变化。因此,说明书和附图应当被看作是说明 性的,而不是限制性的。本发明的范围的唯一且排他指示,以及申请人想要作为本发明的范 围的内容由本申请以这种权利要求发布的具体形式来发布的权利要求集合的字面和等效 范围,包括任何后续的校正,是对本发明的范围的唯一且排他指示,也是申请人想要作为本 发明的范围的内容。

Claims (20)

1. 一种方法包括: 用谓词编程过滤单元,所述谓词指定用于过滤针对表的查询的结果的准则; 其中所述谓词为所述表的特定列指定条件; 通过将来自所述特定列的值加载到输入高速缓存并且使得过滤单元将所述谓词应用 到所述值来生成谓词结果; 其中所述谓词结果识别所述表中在所述特定列中具有满足由所述谓词指定的条件的 值的行; 至少部分地基于所述谓词结果来选择作为所述查询的结果而返回的行; 返回所选择的行作为所述查询的结果; 其中所述方法由一个或多个计算设备执行。
2. 如权利要求1所述的方法,其中所述谓词结果是位向量并且所述位向量的每一位都 对应于特定行并且识别所述特定行是否满足由第一谓词指定的条件。
3. 如权利要求1所述的方法,其中: 所述谓词是与所述查询相关联的谓词集合中的第一谓词; 所述谓词结果是第一谓词结果; 所述方法还包括: 用所述谓词集合中的第二谓词编程过滤单元,第二谓词指定用于过滤所述查询的结果 的第二准则; 其中第二谓词为所述表的第二列指定第二条件; 通过将来自第二列的值加载到输入高速缓存并使得过滤单元将第二谓词应用到所述 值来生成第二谓词结果; 其中第二谓词结果识别所述表中在第二列中具有满足由第二谓词指定的第二条件的 值的行; 其中至少部分地基于所述谓词结果来选择作为结果而返回的行包括: 合并第一谓词结果和第二谓词结果W生成合并的结果; 利用所述合并的结果来识别同时满足第一谓词和第二谓词的行; 选择由作为同时满足第一谓词和第二谓词的所述合并的结果识别的行。
4. 如权利要求1所述的方法,还包括: 对于所述谓词集合中的每个谓词: 用所述谓词集合中的所述每个谓词编程过滤单元,其中所述每个谓词指定用于过滤所 述查询的结果的特定准则; 通过将来自列的至少一部分的值加载到过滤单元并且使得过滤单元将所述每个谓词 应用到所述值来生成谓词结果; 其中选择作为结果而返回的行包括: 合并每个谓词结果W生成最终结果,该最终结果识别满足由所述谓词集合指定的所有 准则的行; 选择由作为满足所述谓词集合指定的准则的所述最终结果识别的行。
5. 如权利要求4所述的方法, 其中为所述每个谓词生成的谓词结果被用来确定给过滤单元提供哪些行值来用于进 行下一谓词的评估; 其中所述谓词集合W顺序次序进行评估; 其中所述顺序次序基于谓词将过滤掉大量行的可能性; 其中较高可能过滤掉大量行的谓词在较小可能过滤掉大量行的谓词之前进行评估。
6. 如权利要求4所述的方法,其中选择行作为结果还包括: 将最终结果转换为存储器地址集合; 其中存储器地址集合中的每个存储器地址都识别满足由所述谓词集合指定的准则的 行的存储器位置。
7. 如权利要求1所述的方法,其中使过滤单元将所述谓词应用到所述值包括: 如果所述特定列的对应行的值满足条件,则为该对应行生成第一位值; 如果所述对应行的值不满足条件,则为该对应行生成不同于第一位值的第二位值。
8. 如权利要求1所述的方法,其中通过将来自所述特定列的值加载到输入高速缓存并 使得过滤单元将所述谓词应用到所述值来生成谓词结果包括: 加载在存储器的第一块中存储的来自所述特定列的第一组值; 使过滤单元将所述谓词应用到第一组值W生成第一位向量,该第一位向量识别所述表 中具有在存储器的第一块内存储的满足由所述谓词指定的条件的值的行; 加载在存储器的第二块中存储的来自所述特定列的第二组值; 使过滤单元将所述谓词应用到第二组值W生成第二位向量,该第二位向量识别所述表 中具有在存储器的第二块内存储的满足由所述谓词指定的条件的值的行。
9. 如权利要求1所述的方法,其中使过滤单元将所述谓词应用到所述值包括使过滤单 元并行地将所述谓词应用到来自所述特定列的多个值。
10. -种或多种存储指令的非瞬时计算机可读介质,其中当指令被一个或多个处理器 执行时,使得一个或多个计算设备执行W下操作,包括: 用谓词编程过滤单元,该谓词指定用于过滤针对表的查询的结果的准则; 其中所述谓词为所述表的特定列指定条件; 通过将来自所述特定列的值加载到输入高速缓存并且使得过滤单元将所述谓词应用 到所述值来生成谓词结果; 其中谓词结果识别所述表中在所述特定列中具有满足由所述谓词指定的条件的值的 行; 至少部分地基于谓词结果来选择作为所述查询的结果而返回的行; 返回所选择的行作为所述查询的结果; 其中所述方法由一个或多个计算设备执行。
11. 如权利要求10所述的一种或多种非瞬时计算机可读介质,其中谓词结果是位向量 并且所述位向量的每一位都对应于特定行并且识别所述特定行是否满足由第一谓词指定 的条件。
12. 如权利要求10所述的一种或多种非瞬时计算机可读介质,其中: 所述谓词是与所述查询相关联的谓词集合中的第一谓词; 所述谓词结果是第一谓词结果; 所述一种或多种非瞬时计算机可读介质还存储使所述一个或多个计算设备执行W下 操作的指令,包括: 用所述谓词集合中的第二谓词编程过滤单元,该第二谓词指定用于过滤所述查询的结 果的第二准则; 其中第二谓词为所述表的第二列指定第二条件; 通过将来自第二列的值加载到输入高速缓存并使得过滤单元将第二谓词应用到所述 值来生成第二谓词结果; 其中第二谓词结果识别所述表中在第二列中具有满足由第二谓词指定的第二条件的 值的行; 其中至少部分地基于谓词结果来选择作为结果而返回的行包括: 合并第一谓词结果和第二谓词结果W生成合并的结果; 利用所述合并的结果来识别同时满足第一谓词和第二谓词的行; 选择由作为同时满足第一谓词和第二谓词的所述合并的结果识别的行。
13. 如权利要求10所述的一种或多种非瞬时计算机可读介质,还存储使得所述一个或 多个计算设备执行W下操作的指令,包括: 对于所述谓词集合中的每个谓词: 用所述谓词集合中的所述每个谓词编程过滤单元,其中所述每个谓词指定用于过滤所 述查询的结果的特定准则; 通过将来自列的至少一部分的值加载到过滤单元并且使得过滤单元将所述每个谓词 应用到所述值来生成谓词结果; 其中用于选择作为结果而返回的行的指令包括用于W下操作的指令: 合并每个谓词结果W生成最终结果,该最终结果识别满足由所述谓词集合指定的所有 准则的行; 选择由作为满足所述谓词集合指定的准则的最终结果识别的行。
14. 如权利要求13所述的一种或多种非瞬时计算机可读介质, 其中为所述每个谓词生成的谓词结果被用来确定给过滤单元提供哪些行值来用于进 行下一谓词的评估; 其中所述谓词集合W顺序次序进行评估; 其中顺序次序基于谓词将过滤掉大量行的可能性; 其中较高可能过滤掉大量行的谓词在较小可能过滤掉大量行的谓词之前进行评估。
15. 如权利要求13所述的一种或多种非瞬时计算机可读介质,其中用于选择行作为结 果的指令包括用于W下操作的指令: 将最终结果转换为存储器地址集合; 其中存储器地址集合中的每个存储器地址都识别满足由所述谓词集合指定的准则的 行的存储器位置。
16. 如权利要求10所述的一种或多种非瞬时计算机可读介质,其中用于使过滤单元将 所述谓词应用到所述值的指令包括用于W下操作的指令: 如果所述特定列的对应行的值满足条件,则为该对应行生成第一位值; 如果所述对应行的值不满足条件,则为该对应行生成不同于第一位值的第二位值。
17. 如权利要求10所述的一种或多种非瞬时计算机可读介质,其中用于通过将来自所 述特定列的值加载到输入高速缓存并使得过滤单元将所述谓词应用到所述值来生成谓词 结果的指令包括用于W下操作的指令: 加载在存储器的第一块中存储的来自所述特定列的第一组值; 使过滤单元将所述谓词应用到第一组值W生成第一位向量,该第一位向量识别所述表 中具有在存储器的第一块内存储的满足由所述谓词指定的条件的值的行; 加载在存储器的第二块中存储的来自所述特定列的第二组值; 使过滤单元将所述谓词应用到第二组值W生成第二位向量,该第二位向量识别所述表 中具有在存储器的第二块内存储的满足由所述谓词指定的条件的值的行。
18. 如权利要求10所述的一种或多种非瞬时计算机可读介质,其中用于使过滤单元将 所述谓词应用到所述值的指令包括用于使过滤单元并行地将所述谓词应用到来自所述特 定列的多个值的指令。
19. 一种用于执行过滤和投影操作的系统,包括: 控制单元,配置为: 接收谓词集合,该谓词集合指定用于过滤针对表的查询的结果的准则; 编程过滤单元W执行所述谓词集合中特定谓词的应用,其中所述特定谓词为所述表的 特定列指定条件; 过滤单元,配置为: 从所述特定列接收值并且将所述特定谓词应用到所述值; 生成位向量,该位向量识别所述表中在所述特定列内具有满足由所述特定谓词指定的 条件的值的行; 投影单元,配置为: 至少部分地基于所述位向量来选择作为查询结果而返回的行; 返回所选择的行作为查询结果。
20. 如权利要求19所述的系统,其中: 所述谓词是与所述查询相关联的谓词集合中的第一谓词; 所述控制单元还配置为: 用所述第二谓词中的第二谓词编程过滤单元,该第二谓词指定用于所述表的第二列的 第二条件; 所述过滤单元还配置为: 从第二列接收值并且将第二谓词应用到所述值; 生成第二位向量,该第二位向量识别所述表中在第二列内具有满足由第二谓词指定的 第二条件的值的行; 该系统还包括合并单元,配置为: 通过应用按位运算符来合并第一位向量和第二位向量W生成第H位向量; 其中所述投影单元配置为: 利用第H位向量来识别同时满足第一谓词和第二谓词的行; 选择由作为同时满足第一谓词和第二谓词的第H位向量识别的行。
CN 201380050949 2012-08-20 2013-08-13 过滤/投影操作的硬件实现 CN104685499A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13590032 US9727606B2 (en) 2012-08-20 2012-08-20 Hardware implementation of the filter/project operations
PCT/US2013/054808 WO2014031393A1 (en) 2012-08-20 2013-08-13 Hardware implementation of the filter/project operations

Publications (1)

Publication Number Publication Date
CN104685499A true true CN104685499A (zh) 2015-06-03

Family

ID=49034238

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201380050949 CN104685499A (zh) 2012-08-20 2013-08-13 过滤/投影操作的硬件实现

Country Status (4)

Country Link
US (1) US9727606B2 (zh)
CN (1) CN104685499A (zh)
EP (1) EP2885727A1 (zh)
WO (1) WO2014031393A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600522B2 (en) 2012-08-20 2017-03-21 Oracle International Corporation Hardware implementation of the aggregation/group by operation: filter method
US9563658B2 (en) 2012-08-20 2017-02-07 Oracle International Corporation Hardware implementation of the aggregation/group by operation: hash-table method
US9176999B2 (en) * 2012-09-13 2015-11-03 International Business Machines Corporation Multiplication-based method for stitching results of predicate evaluation in column stores
US9275168B2 (en) * 2013-07-19 2016-03-01 International Business Machines Corporation Hardware projection of fixed and variable length columns of database tables
US9235564B2 (en) * 2013-07-19 2016-01-12 International Business Machines Corporation Offloading projection of fixed and variable length database columns
US9582540B2 (en) 2014-08-21 2017-02-28 International Business Machines Corporation Feedback mechanism providing row-level filtering earlier in a plan
US20160063050A1 (en) * 2014-08-28 2016-03-03 Joerg Schoen Database Migration Consistency Checker

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040220904A1 (en) * 2003-04-30 2004-11-04 International Business Machines Corporation Information retrieval system and method using index ANDing for improving performance
US20080189251A1 (en) * 2006-08-25 2008-08-07 Jeremy Branscome Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries
US20090300002A1 (en) * 2008-05-28 2009-12-03 Oracle International Corporation Proactive Information Security Management
US20100088315A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US20100306219A1 (en) * 2009-05-28 2010-12-02 Balasubramanyam Sthanikam Cache-Based Predicate Handling For Queries On XML Data Using Uncorrelated Path-Based Row Sources

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511190A (en) 1995-01-20 1996-04-23 Tandem Computers, Inc. Hash-based database grouping system and method
US5655080A (en) 1995-08-14 1997-08-05 International Business Machines Corporation Distributed hash group-by cooperative processing
US5706495A (en) 1996-05-07 1998-01-06 International Business Machines Corporation Encoded-vector indices for decision support and warehousing
US5884229A (en) 1996-06-10 1999-03-16 Exxon Production Research Company Method for measuring lateral continuity at a specified subsurface location from seismic data
US5884299A (en) 1997-02-06 1999-03-16 Ncr Corporation Optimization of SQL queries involving aggregate expressions using a plurality of local and global aggregation operations
JP2000187668A (ja) 1998-12-22 2000-07-04 Hitachi Ltd グループ化方法と重複排除方法
US6934712B2 (en) 2000-03-21 2005-08-23 International Business Machines Corporation Tagging XML query results over relational DBMSs
US6598041B1 (en) 2000-09-07 2003-07-22 International Business Machines Corporation Method, system, and program for processing modifications to data in tables in a database system
US6581055B1 (en) * 2000-09-11 2003-06-17 Oracle International Corporation Query optimization with switch predicates
CA2327167C (en) * 2000-11-30 2007-10-16 Ibm Canada Limited-Ibm Canada Limitee Method and system for composing a query for a database and traversing the database
US6571233B2 (en) * 2000-12-06 2003-05-27 International Business Machines Corporation Optimization of SQL queries using filtering predicates
US6996569B1 (en) 2001-06-20 2006-02-07 Microstrategy Incorporated Systems and methods for custom grouping of data
US6823329B2 (en) 2002-04-02 2004-11-23 Sybase, Inc. Database system providing methodology for acceleration of queries involving functional expressions against columns having enumerated storage
US6732354B2 (en) * 2002-04-23 2004-05-04 Quicksilver Technology, Inc. Method, system and software for programming reconfigurable hardware
US6957225B1 (en) * 2002-05-07 2005-10-18 Oracle International Corporation Automatic discovery and use of column correlations in tables
US7433886B2 (en) 2003-10-24 2008-10-07 Microsoft Corporation SQL language extensions for modifying collection-valued and scalar valued columns in a single statement
US7469241B2 (en) 2004-11-30 2008-12-23 Oracle International Corporation Efficient data aggregation operations using hash tables
US7974976B2 (en) * 2006-11-09 2011-07-05 Yahoo! Inc. Deriving user intent from a user query
US7870398B2 (en) * 2007-01-25 2011-01-11 International Business Machines Corporation Integrity assurance of query result from database service provider
US7925647B2 (en) * 2007-07-27 2011-04-12 Oracle International Corporation Techniques for optimizing SQL statements using user-defined indexes with auxiliary properties
US9524317B2 (en) 2007-08-24 2016-12-20 International Business Machines Corporation Optimization of aggregate queries in database management systems using an early out join when processing min and max functions
US8078595B2 (en) 2007-10-09 2011-12-13 Oracle International Corporation Secure normal forms
US8150850B2 (en) * 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
US20090216757A1 (en) * 2008-02-27 2009-08-27 Robi Sen System and Method for Performing Frictionless Collaboration for Criteria Search
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US8275761B2 (en) 2008-05-15 2012-09-25 International Business Machines Corporation Determining a density of a key value referenced in a database query over a range of rows
US8832112B2 (en) 2008-06-17 2014-09-09 International Business Machines Corporation Encoded matrix index
US20100030728A1 (en) 2008-07-29 2010-02-04 Oracle International Corporation Computing selectivities for group of columns and expressions
US9430526B2 (en) 2008-09-29 2016-08-30 Teradata Us, Inc. Method and system for temporal aggregation
US8312038B2 (en) 2008-12-18 2012-11-13 Oracle International Corporation Criteria builder for query builder
US8285709B2 (en) * 2009-05-12 2012-10-09 Teradata Us, Inc. High-concurrency query operator and method
EP2290562A1 (en) 2009-08-24 2011-03-02 Amadeus S.A.S. Segmented main-memory stored relational database table system with improved collaborative scan algorithm
US8832142B2 (en) * 2010-08-30 2014-09-09 Oracle International Corporation Query and exadata support for hybrid columnar compressed data
US20120166447A1 (en) 2010-12-28 2012-06-28 Microsoft Corporation Filtering queried data on data stores
US8676834B2 (en) 2011-02-16 2014-03-18 International Business Machines Corporation Set-level comparisons in dynamically formed groups
US9563658B2 (en) 2012-08-20 2017-02-07 Oracle International Corporation Hardware implementation of the aggregation/group by operation: hash-table method
US9600522B2 (en) 2012-08-20 2017-03-21 Oracle International Corporation Hardware implementation of the aggregation/group by operation: filter method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040220904A1 (en) * 2003-04-30 2004-11-04 International Business Machines Corporation Information retrieval system and method using index ANDing for improving performance
US20080189251A1 (en) * 2006-08-25 2008-08-07 Jeremy Branscome Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries
US20090300002A1 (en) * 2008-05-28 2009-12-03 Oracle International Corporation Proactive Information Security Management
US20100088315A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US20100306219A1 (en) * 2009-05-28 2010-12-02 Balasubramanyam Sthanikam Cache-Based Predicate Handling For Queries On XML Data Using Uncorrelated Path-Based Row Sources

Also Published As

Publication number Publication date Type
US9727606B2 (en) 2017-08-08 grant
JP2015532748A (ja) 2015-11-12 application
EP2885727A1 (en) 2015-06-24 application
US20140052743A1 (en) 2014-02-20 application
WO2014031393A1 (en) 2014-02-27 application

Similar Documents

Publication Publication Date Title
US5632015A (en) Computer program product to efficiently process diverse result sets returned by a stored procedure
US7092954B1 (en) Optimizing an equi-join operation using a bitmap index structure
US20040205110A1 (en) Asymmetric data streaming architecture having autonomous and asynchronous job processing unit
US20040186832A1 (en) System and method for controlling processing in a distributed system
US7103590B1 (en) Method and system for pipelined database table functions
Tomasic et al. Performance of inverted indices in shared-nothing distributed text document information retrieval systems
US20120173515A1 (en) Processing Database Queries Using Format Conversion
US20140172914A1 (en) Graph query processing using plurality of engines
US6944614B1 (en) Query monitor playback mechanism for post-mortem performance analysis
US7908259B2 (en) Hardware accelerated reconfigurable processor for accelerating database operations and queries
US20110302151A1 (en) Query Execution Systems and Methods
US20070276784A1 (en) Systems and Methods for Data Storage and Retrieval Using Algebraic Relations Composed From Query Language Statements
US6850927B1 (en) Evaluating queries with outer joins by categorizing and processing combinations of relationships between table records
US20090055370A1 (en) System and method for data warehousing and analytics on a distributed file system
US20040181523A1 (en) System and method for generating and processing results data in a distributed system
US20070276787A1 (en) Systems and Methods for Data Model Mapping
US20140195558A1 (en) System and method for distributed database query engines
US20090259641A1 (en) Optimization of extensible markup language path language (xpath) expressions in a database management system configured to accept extensible markup language (xml) queries
US20110196857A1 (en) Generating Materialized Query Table Candidates
US20110029508A1 (en) Selectivity-based optimized-query-plan caching
US20060218123A1 (en) System and Methodology for Parallel Query Optimization Using Semantic-Based Partitioning
US20070078812A1 (en) Delaying evaluation of expensive expressions in a query
US7440963B1 (en) Rewriting a query to use a set of materialized views and database objects
US8316060B1 (en) Segment matching search system and method
US6957210B1 (en) Optimizing an exclusion join operation using a bitmap index structure

Legal Events

Date Code Title Description
C06 Publication
EXSB Decision made by sipo to initiate substantive examination