[发明专利]聚合/分组操作的硬件实现方式:散列表方法有效
申请号: | 201380050947.7 | 申请日: | 2013-08-14 |
公开(公告)号: | CN104685498B | 公开(公告)日: | 2018-06-08 |
发明(设计)人: | P·安博格;J·施奥尔;R·D·霍博金斯二世 | 申请(专利权)人: | 甲骨文国际公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 吴信刚 |
地址: | 美国加*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 聚合 聚合数据 分组 地址识别 第二位置 第一位置 方法描述 硬件实现 指针识别 映射 存储 指针 响应 更新 | ||
1.一种方法,包括:
接收对按照第一列分组的数据进行聚合的请求;
响应于接收到该请求,对多个行中的每一行执行以下处理:
使用组列访问单元的硬件检索来自行的第一列的值;
其中,所述来自行的第一列的值是该行的组值;
使用散列表访问单元的硬件将所述行的组值映射到易失性存储器中的地址;
使用聚合状态访问单元的硬件从与该地址关联的易失性存储器中检索与该组值关联的组的聚合数据集;以及
使用值列访问单元的硬件基于该行的第二列中的值更新所述聚合数据集中所包括的聚合值;
其中所述组列访问单元、散列表访问单元、聚合状态访问单元和值列访问单元是分离的并且不同的硬件单元;
其中所述组列访问单元、散列表访问单元、聚合状态访问单元和值列访问单元各具有分离的且不同的本地存储器;
其中所述方法由一个或多个计算装置执行。
2.如权利要求1所述的方法,还包括:
对于所述多个行中的特定行,确定还未产生与该特定行关联的组值的聚合数据;
响应于确定还未产生与该特定行关联的组值的聚合数据,分配存储器以存储与该特定行关联的组值的聚合数据。
3.如权利要求1所述的方法,其中对于所述多个行中的至少两个行,不同组值映射到相同地址,所述方法还包括:
对于映射到该相同地址的来自所述多个行中的特定行的特定组值:
使用该相同地址定位包括存储的组值的特定聚合数据集;
将存储的组值与该特定组值进行比较;
响应于确定存储的组值和该特定组值匹配,基于来自第二列的该特定行的第二值更新所述聚合数据集中所包括的聚合值。
4.如权利要求3所述的方法,还包括:
响应于确定存储的组值和该特定组值不匹配:
分配存储器以存储新组的聚合数据;
产生识别分配的存储器的地址的指针;
将所述指针存储在所述特定聚合数据集中。
5.如权利要求1所述的方法,其中将组值映射到地址包括将散列函数应用于组值。
6.如权利要求1所述的方法,其中所述组的所述聚合数据集包括组值、聚合值和指向冲突组的第二聚合数据集的指针。
7.如权利要求1所述的方法,其中所述地址被存储在散列表中;其中基于对与对聚合数据的请求关联的组的数量的估计选择散列表的大小。
8.如权利要求1所述的方法,其中通过在接收到该请求之前预先计算第一列中的映射到相同地址的所有组名来检测冲突。
9.一种或多种存储指令的非暂态计算机可读介质,当所述指令由一个或多个处理器执行时,使得执行在权利要求1-8中的任何一项中记载的方法。
10.一种用于执行分组和聚合操作的系统,包括:
组列访问单元,被构造为从第一列的行检索第一组的组值;
散列表访问单元,被构造为将组值映射到地址;
聚合状态访问单元,被构造为检索由存储在第一组的地址处的指针识别的聚合数据;
值列访问单元,被构造为基于第二列的该行中的值更新所述聚合数据中所包括的聚合值;
其中,所述组列访问单元、所述散列表访问单元、所述聚合状态访问单元以及所述值列访问单元是分离的并且不同的硬件单元;
其中所述组列访问单元、散列表访问单元、聚合状态访问单元和值列访问单元各具有分离的且不同的本地存储器。
11.如权利要求10所述的系统,其中所述聚合状态访问单元还被构造为:
确定还未产生第一组的指针;
响应于确定还未产生第一组的指针,分配存储器以存储第一组的聚合数据;
产生第一组的指针;
其中第一组的指针识别分配的存储器的地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于甲骨文国际公司,未经甲骨文国际公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380050947.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种消费端数据流复制方法及系统
- 下一篇:烹饪器具