聚合/分组操作的硬件实现方式:散列表方法

文档序号:8367471阅读:148来源:国知局
聚合/分组操作的硬件实现方式:散列表方法
【技术领域】
[0001] 本公开一般地涉及用于执行数据库操作的技术,并且更具体地讲,涉及用于执行 分组和聚合操作的技术。
【背景技术】
[0002] 在这个章节中描述的方案是能够被执行的方案,但未必是以前已经想到或执行的 方案。因此,除非另外指示,否则不应该认为在这个章节中描述的任何方案仅由于其被包括 在这个章节中而作为现有技术。
[0003] 数据库包括存储在一个或多个存储装置(诸如一组硬盘)上的数据和元数据。根 据实现方式,数据库内的数据可根据各种数据模型而被以逻辑方式组织。例如,关系数据库 系统通常将数据存储在一组表中,其中每个表被组织成一组行和列。在多数情况下,每个行 代表不同对象,并且每个列代表不同属性。然而,其它数据模型也可被用于组织数据。
[0004] 为了访问和操纵数据库中的数据,数据库管理系统(DBMS)通常被构造为接收和 处理各种数据库命令(经常被称为查询)。在许多实现方式中,DBMS支持符合数据操纵语 言(DML)(诸如结构化查询语言(SQL))的查询。当DBMS接收到查询时,DBMS执行由该查 询指定的一个或多个数据库操作并且可输出查询结果。示例性数据库操作包括以下描述的 聚合和分组操作。
[0005] 聚合和分组操作
[0006] 聚合和分组操作是提供关于特定列中的数据的汇总统计的数据库操作。在SQL 中,分组操作使用GROUP BY语法按照一个或多个列对聚合函数的结果进行分组。以下的表 1表示可在数据库查询中使用的示例性聚合函数。
[0007]
[0008] 表1 :示例性聚合函数
【主权项】
1. 一种方法,包括: 接收对按照第一列分组的数据进行聚合的请求; 响应于接收到该请求,对多个行中的每一行执行下面的步骤: 将行中的组值映射到地址; 使用该地址来定位与该组值关联的组的聚合数据集;W及 基于该行的第二列中的值更新所述聚合数据集中所包括的聚合值; 其中所述方法由一个或多个计算装置执行。
2. 如权利要求1所述的方法,还包括: 对于所述多个行中的特定行,确定还未产生与该特定行关联的组值的聚合数据; 响应于确定还未产生与该特定行关联的组值的聚合数据,分配存储器W存储与该特定 行关联的组值的聚合数据。
3. 如权利要求1所述的方法,其中对于所述多个行中的至少两个行,不同组值映射到 相同地址,所述方法还包括: 对于映射到该相同地址的来自所述多个行中的特定行的特定组值: 使用该相同地址定位包括存储的组值的特定聚合数据集; 将存储的组值与该特定组值进行比较; 响应于确定存储的组值和该特定组值匹配,基于来自第二列的该特定行的第二值更新 所述聚合数据集中所包括的聚合值。
4. 如权利要求3所述的方法,还包括; 响应于确定存储的组值和第一组值不匹配: 分配存储器W存储新组的聚合数据; 产生识别分配的存储器的地址的指针; 将第二指针存储在所述特定聚合数据集中。
5. 如权利要求1所述的方法,其中将组值映射到地址包括将散列函数应用于组值。
6. 如权利要求1所述的方法,其中所述组的所述聚合数据集包括组值、聚合值和指向 冲突组的第二聚合数据集的指针。
7. 如权利要求1所述的方法,其中所述地址被存储在散列表中;其中基于对与对聚合 数据的请求关联的组的数量的估计选择散列表的大小。
8. 如权利要求1所述的方法,其中通过在接收到该请求之前预先计算映射到相同地址 的第一列中的所有组名来检测冲突。
9. 一种或多种存储指令的非暂态计算机可读介质,当所述指令由一个或多个处理器执 行时使一个或多个计算装置执行: 接收对按照第一列分组的数据进行聚合的请求; 响应于接收到该请求,对多个行中的每一行执行下面的步骤: 将行中的组值映射到地址; 使用该地址定位与该组值关联的组的聚合数据集;W及 基于该行的第二列中的值更新所述聚合数据集中所包括的聚合值。
10. 如权利要求9所述的非暂态计算机可读介质,还存储指令,所述指令使所述一个或 多个计算装置执行: 对于所述多个行中的特定行,确定还未产生与该特定行关联的组值的聚合数据; 响应于确定还未产生与该特定行关联的组值的聚合数据,分配存储器W存储与该特定 行关联的组值的聚合数据。
11. 如权利要求9所述的非暂态计算机可读介质,其中对于所述多个行中的至少两个 行,不同组值映射到相同地址,所述非暂态计算机可读介质还存储指令,所述指令使所述一 个或多个计算装置执行: 对于映射到该相同地址的来自所述多个行中的特定行的特定组值: 使用该相同地址定位包括存储的组值的特定聚合数据集; 将存储的组值与该特定组值进行比较; 响应于确定存储的组值和该特定组值匹配,基于来自第二列的该特定行的第二值更新 所述聚合数据集中所包括的聚合值。
12. 如权利要求11所述的非暂态计算机可读介质,还存储指令,所述指令使所述一个 或多个计算装置对于第一列的第二行执行: 分配存储器W存储新组的聚合数据; 产生识别分配的存储器的地址的指针; 将第二指针存储在所述特定聚合数据集中。
13. 如权利要求9所述的非暂态计算机可读介质,其中用于将组值映射到地址的指令 包括用于将散列函数应用于组值的指令。
14. 如权利要求9所述的非暂态计算机可读介质,其中所述组的所述聚合数据集包括 组值、聚合值和指向冲突组的第二聚合数据集的指针。
15. 如权利要求9所述的非暂态计算机可读介质,其中所述地址被存储在散列表中;其 中基于对与对聚合数据的请求关联的组的数量的估计选择散列表的大小。
16. 如权利要求9所述的非暂态计算机可读介质,其中通过在接收到该请求之前预先 计算映射到相同地址的第一列中的所有组名来检测冲突。
17. -种用于执行分组和聚合操作的系统,包括: 组列访问单元,被构造为从第一列的行检索第一组的组值; 散列表访问单元,被构造为将组值映射到地址; 聚合状态访问单元,被构造为检索由存储在第一组的地址处的指针识别的聚合数据; 值列访问单元,被构造为基于第二列的该行中的值更新所述聚合数据集中所包括的聚 合值。
18. 如权利要求17所述的系统,其中所述聚合状态访问单元还被构造为: 确定还未产生第一组的指针; 响应于确定还未产生第一组的指针,分配存储器W存储第一组的聚合数据; 产生第一组的指针. 其中第一组的指针识别分配的存储器的地址。
19. 如权利要求17所述的系统,其中: 所述散列表访问单元还被构造为将存储在第二行中的第二组值映射到第二地址; 聚合状态访问单元还被构造为检索由存储在第二组的第二地址处的第二指针识别的 聚合数据; 值列访问单元还被构造为基于第二列的第二行中的值更新由第二指针识别的聚合数 据中的聚合值。
20. 如权利要求17所述的系统,其中: 所述散列表访问单元还被构造为将第一列的第二行中的第二组值映射到该地址; 所述聚合状态访问单元还被构造为将该组值与第二组值进行比较,并且响应于确定该 组值和第二组值匹配,基于第二列的第二行中的第二值更新该聚合数据中的聚合值。
21. 如权利要求20所述的系统,其中响应于确定该组值和第二组值不匹配:所述聚合 状态访问单元还被构造为: 分配存储器W存储第二组的聚合数据; 产生识别分配的存储器的地址的第二指针; 将第二指针存储在第一组的聚合数据中。
22. 如权利要求17所述的系统,其中所述散列表访问单元被构造为将散列函数应用于 该组值W将该组值映射到该地址。
【专利摘要】描述了用于执行分组和聚合操作的技术。在一个实施例中,接收到对按照第一列分组的数据进行聚合的请求。响应于接收到该请求,第一列的行中的组值被映射到地址。第一组的指针被存储在由该地址识别的第一位置。该指针识别第一组的聚合数据集的第二位置。基于第二列的该行中的值更新所述聚合数据集中所包括的聚合值。
【IPC分类】G06F17-30
【公开号】CN104685498
【申请号】CN201380050947
【发明人】P·安博格, J·施奥尔, R·D·霍博金斯二世
【申请人】甲骨文国际公司
【公开日】2015年6月3日
【申请日】2013年8月14日
【公告号】EP2885728A2, US20140052726, WO2014031416A2, WO2014031416A3
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1