CN106844533A - 一种数据分组聚集方法及装置 - Google Patents
一种数据分组聚集方法及装置 Download PDFInfo
- Publication number
- CN106844533A CN106844533A CN201611252315.0A CN201611252315A CN106844533A CN 106844533 A CN106844533 A CN 106844533A CN 201611252315 A CN201611252315 A CN 201611252315A CN 106844533 A CN106844533 A CN 106844533A
- Authority
- CN
- China
- Prior art keywords
- vector
- data
- grouped
- aggregation
- grouping
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000013598 vector Substances 0.000 claims abstract description 340
- 230000002776 aggregation Effects 0.000 claims abstract description 134
- 238000004220 aggregation Methods 0.000 claims abstract description 134
- 238000003780 insertion Methods 0.000 claims abstract description 35
- 230000037431 insertion Effects 0.000 claims abstract description 35
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000010276 construction Methods 0.000 claims description 6
- 230000004931 aggregating effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种数据分组聚集方法及装置。所述方法包括:获取多个待分组聚集数据,并根据待分组聚集数据和掩码向量构建待分组向量;计算待分组向量中各待分组聚集数据对应的哈希值,根据哈希值并利用SIMD操作获得索引向量;根据索引向量和SIMD操作建立插入掩码向量和更新掩码向量,根据插入掩码向量获得需要创建新分组项的数据,根据更新掩码向量获得需要更新聚集信息的数据;将需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表。所述装置用于执行所述方法。本发明实施例通过以向量为单位并行分组聚集,提高了对数据进行分组聚集的效率。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据分组聚集方法及装置。
背景技术
数据分组聚集是数据业务处理和分析应用中的关键问题,是数据库管理系统、数据仓库等系统中的重要功能。基于哈希表是对数据进行分组聚集计算的一种常见的方法,而链式哈希表是哈希表中最具有实用价值的哈希结构。
近年来,随着计算机硬件技术的发展,内存容量越来越大,更多的数据可以存放在内存中,在具有大量数据的情况下,为了提高对数据的处理效率,单指令多数据流(SingleInstruction Multiple Data,简称SIMD)指令集已经被越来越多的处理器产品所支持,成为CPU性能提升的途径。SIMD是一种实现数据级并行的技术,支持在一条指令中同时操作多个数据。以两个数组对应元素相加为例,在单指令单数据流的操作模式下,一对数组元素分别从内存读到CPU的寄存器里执行相加运算,然后再读取并处理下一对元素。如果增加寄存器的长度,则可使得一条指令能够同时将一个数组的多个元素读取到CPU里,并对多对元素同时进行相加操作。但目前利用链式哈希表对数据进行分组聚集时,缺乏能够适应SIMD架构的解决方案,造成分组聚集效率低下的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种数据分组聚集方法及装置。
一方面,本发明实施例提供一种数据分组聚集方法,包括:
获取多个待分组聚集数据,并根据所述待分组聚集数据和掩码向量构建待分组向量;
计算所述待分组向量中各所述待分组聚集数据对应的哈希值,并根据所述哈希值并利用SIMD操作获得索引向量;
根据所述索引向量和所述SIMD操作建立插入掩码向量和更新掩码向量,根据所述插入掩码向量从待分组向量中获得需要创建新分组项的数据,根据所述更新掩码向量从待分组向量中获得需要更新聚集信息的数据;
将所述需要创建新分组的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表。
另一方面,本发明实施例提供一种数据分组聚集装置,包括:
构建模块,用于获取多个待分组聚集数据,并根据所述待分组聚集数据和掩码向量构建待分组向量;
计算模块,用于计算所述待分组向量中各所述待分组聚集数据对应的哈希值,根据所述哈希值并利用SIMD操作获得索引向量;
掩码向量建立模块,用于根据所述索引向量和所述SIMD操作建立插入掩码向量和更新掩码向量,根据所述插入掩码向量从待分组向量中获得需要创建新分组项的数据,根据所述更新掩码向量从待分组向量中获得需要更新聚集信息的数据;
哈希表生成模块,用于将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表。
本发明实施例提供的一种数据分组聚集方法及装置,通过将多个待分组聚集数据构建待分组向量,并通过SIMD操作完成基于链式哈希表的数据分组聚集,以向量为单位进行分组聚集,提高了对数据进行分组聚集的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据分组聚集方法流程示意图;
图2为本发明实施例提供的数据表结构示意图;
图3为本发明实施例提供的构建待分组向量的方法流程示意图;
图4为本发明实施例提供的链式哈希表结构示意图;
图5为本发明实施例提供的获得索引向量方法流程示意图;
图6为本发明实施例提供的获得插入掩码向量和更新掩码向量方法流程示意图;
图7为本发明实施例提供的需要创建新分组项的数据插入到链式哈希表方法流程示意图;
图8为本发明实施例提供的更新聚集信息方法流程示意图;
图9为本发明实施例提供的更新再分组聚集数据对应的分组项方法流程示意图;
图10为本发明实施例提供的一种数据分组聚集装置结构示意图;
图11为本发明另一实施例提供的一种数据分组聚集装置结构示意图;
图12为本发明实施例提供的一种数据分组聚集装置实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种数据分组聚集方法流程示意图,如图1所示,所述方法,包括:
步骤101:获取多个待分组聚集数据,并根据所述待分组聚集数据和掩码向量构建待分组向量;
具体地,首先获取多个待分组聚集数据,其中待分组聚集数据的个数是预先设定好的,然后,将获取到的多个待分组聚集数据和掩码向量构建成一个待分组向量。应当说明的是,如果本次分组聚集操作是第一次进行分组聚集操作,或上次分组聚集操作中所有待分组聚集数据全部完成分组聚集,则在本次进行分组聚集操作时,多个待分组聚集数据全部来自于数据表中未经过分组聚集的数据,掩码向量为初始化后的掩码向量或通过上次分组聚集操作获得;如果上次分组聚集操作中所有待分组聚集数据都没有完成分组聚集,则在本次进行分组聚集操作时,多个待分组聚集数据全部来自上次分组聚集操作中未完成分组聚集的数据;如果上次分组聚集操作中有部分待分组聚集数据未完成分组聚集,则多个待分组聚集数据包括数据表中未经过分组聚集的数据和上次分组聚集操作中未完成分组聚集的数据,此时掩码向量通过上次分组聚集操作获得。图2为本发明实施例提供的数据表结构示意图,如图2所示,数据表中存放有未经过分组聚集的数据,且是以列存储的方式进行存储的,其中数据表中包括两个属性k1和k2,逻辑上,k1和k2中下标相同的待分组聚集数据属于同一条记录,例如:k1可以存储一个班级学生的学号,k2可以存储学生的成绩,若要获取到一个班级每个学生的各科成绩之和,则需要将同一个学生学号对应的成绩进行相加,因此首先需要将k1和k2中的属于同一个学号的记录进行分组再将分组后的k2的数据进行相加。图3为本发明实施例提供的构建待分组向量的方法流程示意图,如图3所示,如果待分组聚集数据中包括数据表中未经过分组聚集的数据和上次分组聚集操作中未完成分组聚集的数据,通过掩码向量获知在上次分组聚集操作中哪些数据是已经完成分组的,从图3中可以看出A、B、C、E、F是已经完成分组的,则A、B、C、E、F对应的位置可以空出来,读入本次分组聚集操作的数据表中未经过分组聚集的数据,使用SIMD中选择性载入操作基于掩码向量将数据表中未经过分组聚集的数据依次读入到合适的位置上,形成待分组向量。在上次分组聚集操作中未完成分组聚集的数据有两种情况,一种是与其他数据发生了哈希冲突的数据,例如数据D,另一种是还没有找到正确分组项的数据,例如数据G和数据H,这两类数据需要在本次分组聚集操作中进行进一步处理。
步骤102:计算所述待分组向量中各所述待分组聚集数据对应的哈希值,根据所述哈希值并利用SIMD操作获得索引向量;
具体地,计算组成待分组向量的各个待分组聚集数据所对应的哈希值,其中,哈希值决定了头指针中索引值在头指针数组中的位置,索引值预示着索引值对应的待分组聚集数据可能的分组项,根据哈希值通过SIMD操作获得索引向量。
步骤103:根据所述索引向量和所述SIMD操作建立插入掩码向量和更新掩码向量,根据所述插入掩码向量从待分组向量中获得需要创建新分组项的数据,根据所述更新掩码向量从待分组向量中获得需要更新聚集信息的数据;
具体地,分别建立插入掩码向量和更新掩码向量,其中插入掩码向量用于指示需要创建新分组项的数据,更新掩码向量用于对已有分组项进行更新的数据。并判断发生哈希冲突的数据,根据冲突情况对插入掩码向量和更新掩码向量进行调整。如果两个待分组聚集数据对应的哈希值相同,就说明这两个待分组聚集数据发生了冲突。根据索引向量和SIMD操作建立插入掩码向量和更新掩码向量。
步骤104:将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表。
具体地,根据插入掩码向量获知待分组向量中哪些待分组聚集数据需要创建新分组项,将这些待分组聚集数据利用SIMD操作插入到链式哈希表中,从而形成链式哈希表;根据更新掩码向量获知待分组向量中哪些待分组聚集数据需要更新聚集信息,将这些待分组聚集数据对应的聚集信息利用SIMD操作进行更新,从而形成链式哈希表。图4为本发明实施例提供的链式哈希表结构示意图,如图4所示,链式哈希表有头指针、分组属性、链表指针、聚集信息,以全局数组模式分别存储这些信息,其中聚集信息包括相同分组属性出现的次数和对应的待分组数据之和。链式哈希表中的头指针和链表指针将具有相同哈希值的分组属性及聚集信息对应的数据链接起来,同一个链表中的分组属性对应的数值可以不同,但哈希值相同,分组属性中只记录不同的数据。下标相同的分组属性、链表指针和聚集信息组合成一个链表结点,可以由全局下标控制分组聚集操作时使用的链表结点,形成链式哈希表中的分组项,头指针和链表指针通过记录数组的下标值进行分组项的链接。另外,根据本次分组聚集操作得到的插入掩码向量和更新掩码向量获得下次分组聚集操作中的掩码向量,用于表示可读入新的待分组聚集数据,并在下次分组聚集操作中依然执行步骤101-步骤104,直到待分组聚集数据的数量不足以组合成一个待分组向量,此时,对剩余待分组聚集数据采用传统的基于链式哈希表的数据分组聚集方法。
本发明实施例通过将多个待分组聚集数据构建待分组向量,并通过SIMD操作完成基于链式哈希表的数据分组聚集,以向量为单位进行分组聚集,提高了对数据进行分组聚集的效率。
在上述实施例的基础上,所述根据所述哈希值并利用SIMD操作获得索引向量,包括:
根据所述哈希值利用SIMD操作,将数据表中未经过分组聚集的数据对应的待确定分组项和上次分组聚集操作中发生冲突的数据对应的所述待确定分组项存入第一中间向量中;
获取在上次分组聚集操作中需再分组聚集的数据对应的第二中间向量;
根据所述第一中间向量和所述第二中间向量获得所述索引向量。
具体地,如果待分组聚集数据中包括数据表中未经过分组聚集的数据和上次分组聚集操作中未完成分组聚集的数据,在获取索引向量时,图5为本发明实施例提供的获得索引向量方法流程示意图,如图5所示,索引向量由链表结点的下标组成,表示每个待分组聚集数据对应的待确定分组项,也就是每个待分组聚集数据可能所在的分组项。首先计算待分组向量中各个待分组聚集数据对应的哈希值,即根据哈希值确定索引值存储在头指针数组中的位置,基于该位置信息将索引值通过收集操作收集到向量v1中。对于待分组聚集数据I、J、K、L、M和上次分组聚集操作中与其他数据发生冲突的数据D,索引值预示着待分组聚集数据对应的待确定分组项,通过位操作将向量v1中的上述对应的值过滤到第一中间向量v2中。对上次分组聚集操作中未完成分组聚集且需要再分组聚集的数据G和数据H,之前已经通过链表指针找到待确定分组项,记录在第二中间向量v3中,将向量第一中间v2和第二中间向量v3合并起来得到索引向量。
本发明实施例通过对待分组向量进行哈希值计算,然后利用SIMD操作获得索引向量,其计算是通过向量的形式进行计算,提高了计算的效率。
在上述实施例的基础上,所述根据所述索引向量建立插入掩码向量和更新掩码向量,包括:
将所述索引向量和空指针向量进行比较操作获得比较结果向量,根据所述比较结果向量获得所述插入掩码向量;
根据所述比较结果向量获取中间掩码向量,对所述中间掩码向量进行修正,获得修正后向量,根据所述索引向量和所述修正后向量获得所述更新掩码向量。
具体地,图6为本发明实施例提供的获得插入掩码向量和更新掩码向量方法流程示意图,如图6所示,将索引向量与空指针向量进行比较操作,即将索引向量中的各个值与空指针比较,如果索引向量中的某个数值为空,说明该数值与空指针向量中对应的值相同,则索引向量中与空指针向量中对应的值作比较后的结果为1,如果索引向量中的某个数值不为空,则比较结果为0。向量v4表示待分组聚集数据L与其他待分组数据发生了冲突,因此,待分组聚集数据L不会被继续处理。所以向量v4为未发生哈希冲突数据的向量,将比较结果向量与向量v4进行与操作,形成插入掩码向量。另外,对比较结果向量取反操作获得中间掩码向量,利用向量v4对中间掩码向量进行修正,即进行与操作,获得修正后向量,根据修正后向量和索引向量从链式哈希表的分组属性中选择性收集已分组数据,并与待分组向量中的待分组聚集数据进行比较操作,最终获得更新掩码向量。
从图6中可以看出,待分组聚集数据J和待分组聚集数据G已经在链式哈希表中存在,因此,需要对待分组聚集数据J和待分组聚集数据G的聚集信息进行更新。而待分组聚集数据D对应的分组属性为A,则说明A和D哈希到了相同的位置上,需要继续为D寻找新的分组项。
本发明实施例通过比较操作建立插入掩码向量和更新掩码向量,指示需要创建新分组项的数据和需要更新分组聚集信息的数据。
在上述实施例的基础上,所述将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表,包括:
将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表的相邻项中;
根据所述更新掩码向量和所述索引向量利用所述SIMD操作对所述需要更新聚集信息的数据更新对应的聚集信息。
具体地,图7为本发明实施例提供的需要创建新分组项的数据插入到链式哈希表方法流程示意图,如图7所示,根据插入掩码向量获知待分组聚集数据I、K、M、H需要创建新分组项并插入到链式哈希表中,此时,待分组聚集数据I、K、M、H通过选择性存储操作插入到分组属性的相邻项中,起始位置由全局下标p决定,p一直指向第一个空的分组项,在分组聚集操作完成后更新p的值。若聚集操作包括相同分组属性出现的次数和数据和,则链式哈希表中新加入的分组项对应的相同分组属性出现的次数均为1,数据和就是相同分组项数据对应的数据之和。链表指针也是类似,数据来自于向量v1,向量v1在相应位置上的指针部分是空指针,部分指向链表的第一个分组项,不管是哪种情况,新建分组项将成为链表中新的第一个分组项,因此还要修改头指针的数据。在修改头指针时,将从p开始的数据基于I、K、M和H的哈希值插入到头指针合适的位置上,通过选择性分散指令完成这一过程。
图8为本发明实施例提供的更新聚集信息方法流程示意图,如图8所示,根据更新掩码向量获知待分组聚集数据J和G需要更新链式哈希表中的聚集信息,聚集信息以数据和为例。在更新链式哈希表中聚集信息时,先将数据和中已有的J和G的数据通过选择性收集操作收集到向量v5中,然后与k2中数据对应的数据向量进行相加,获得和向量,再将和向量通过选择性分散操作分散到数据和中。应当说明的是相同分组属性出现的次数更新采用同样的方法进行,本发明实施例对此不再赘述。
本发明实施例通过SIMD操作将需要创建新分组项的数据插入哈希表中,以及将需要更新聚集信息的数据更新对应的聚集信息,以向量的形式进行操作,提高了分组效率。
在上述实施例的基础上,所述方法还包括:
若所述待分组向量中包含需要再次进行所述分组聚集操作的再分组聚集数据,则通过链表指针更新所述再分组聚集数据对应的分组项。
具体地,如果在本次分组聚集操作中待分组向量中包含需要再次进行分组聚集操作的数据,称为再分组聚集数据,说明再分组聚集数据在本次分组聚集操作中还没有找到正确的分组项,则需要对再分组聚集数据通过链表指针更新对应的分组项。本次待分组向量中包含的上次分组聚集操作后需要再分组聚集数据有G和H,G和H在本次分组聚集操作中找到了正确的分组项,而D在本次分组聚集操作后仍未找到正确的分组项,因此,D将作为下次分组聚集操作中的需要再分组聚集的数据。图9为本发明实施例提供的更新再分组聚集数据对应的分组项方法流程示意图,如图9所示,已建立分组项的数据和完成聚集信息更新的数据都属于处理完毕的数据,将插入掩码向量和更新掩码向量结合起来形成掩码向量v6,表示在下一个循环中可以读入新的待分组聚集数据。将掩码向量v6取反后与向量v4作与操作,在不考虑冲突数据的情况下,根据索引向量对需要更新分组项的数据D在链表指针中由当前分组项指向下一个分组项,并选择性收集到向量v3中,用于在下次分组聚集操作中对数据D继续进行处理。
本发明实施例通过将需要再次进行分组聚集的数据使用链表指针为其预先指定一个分组项,用于下次分组聚集操作中进行比较。
图10为本发明实施例提供的一种数据分组聚集装置结构示意图,如图10所示,所述装置包括:构建模块1001、计算模块1002、掩码向量建立模块1003和哈希表生成模块1004,其中:
构建模块1001用于获取多个待分组聚集数据,并根据所述待分组聚集数据和掩码向量构建待分组向量;计算模块1002用于计算所述待分组向量中各所述待分组聚集数据对应的哈希值,根据所述哈希值并利用SIMD操作获得索引向量;掩码向量建立模块1003用于根据所述索引向量和所述SIMD中的选择性操作建立插入掩码向量和更新掩码向量,根据所述插入掩码向量从待分组向量中获得需要创建新分组项的数据,根据所述更新掩码向量从待分组向量中获得需要更新聚集信息的数据;哈希表生成模块1004用于将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表。
具体地,构建模块1001首先获取多个待分组聚集数据,其中待分组聚集数据的个数是预先设定好的,然后,将获取到的多个待分组聚集数据和掩码向量构建成一个待分组向量。计算模块1002计算组成待分组向量的各个待分组聚集数据所对应的哈希值,其中,哈希值决定了头指针中索引值在头指针数组中的位置,索引值预示着索引值对应的待分组聚集数据可能的分组项,根据哈希值通过SIMD操作获得索引向量。掩码向量建立模块1003分别建立插入掩码向量和更新掩码向量,其中插入掩码向量用于指示需要创建新分组项的数据,更新掩码向量用于对已有分组项进行更新的数据。并判断发生哈希冲突的数据,根据冲突情况对插入掩码向量和更新掩码向量进行调整。如果两个待分组聚集数据对应的哈希值相同,就说明这两个待分组聚集数据发生了冲突。根据索引向量和SIMD操作建立插入掩码向量和更新掩码向量。哈希表生成模块1004根据插入掩码向量获知待分组向量中哪些待分组聚集数据需要创建新分组项,将这些待分组聚集数据利用SIMD操作插入到链式哈希表中,从而形成链式哈希表;根据更新掩码向量获知待分组向量中哪些待分组聚集数据需要更新聚集信息,将这些待分组聚集数据对应的聚集信息利用SIMD操作进行更新,从而形成链式哈希表。
本发明提供的装置的实施例具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
本发明实施例通过将多个待分组聚集数据构建待分组向量,并通过SIMD操作完成基于链式哈希表的数据分组聚集,以向量为单位进行分组聚集,提高了对数据进行分组聚集的效率。
在上述实施例的基础上,所述计算模块,具体用于:
根据所述哈希值利用SIMD操作,将数据表中未经过分组聚集的数据对应的待确定分组项和上次分组聚集操作中发生冲突的数据对应的所述待确定分组项存入第一中间向量中;
获取在上次分组聚集操作中需再分组聚集的数据对应的第二中间向量;
根据所述第一中间向量和所述第二中间向量获得所述索引向量。
具体地,如果待分组聚集数据中包括数据表中未经过分组聚集的数据和上次分组聚集操作中未完成分组聚集的数据,在获取索引向量时,首先计算待分组向量中各个待分组聚集数据对应的哈希值,即根据哈希值确定索引值存储在头指针数组中的位置,基于该位置信息将索引值通过收集操作收集到向量v1中。对于待分组聚集数据I、J、K、L、M和上次分组聚集操作中与其他数据发生冲突的数据D,索引值预示着数据对应的待确定分组项,通过位操作将向量v1中的上述对应的值过滤到第一中间向量v2中。对上次分组聚集操作中未完成分组聚集的数据G和数据H,之前已经通过链表指针找到待确定分组项,记录在第二中间向量v3中,将向量第一中间v2和第二中间向量v3合并起来得到索引向量。
本发明实施例通过对待分组向量进行哈希值计算,然后利用SIMD操作获得索引向量,其计算是通过向量的形式进行计算,提高了计算的效率。
在上述实施例的基础上,所述掩码向量建立模块,具体用于:
将所述索引向量和空指针向量进行比较操作获得比较结果向量,根据所述比较结果向量获得所述插入掩码向量;
根据所述比较结果向量获取中间掩码向量,对所述中间掩码向量进行修正,获得修正后向量,根据所述索引向量和所述修正后向量获得所述更新掩码向量。
具体地,将索引向量与空指针向量进行比较操作,即将索引向量中的各个值与空指针比较,如果索引向量中的某个数值为空,说明该数值与空指针向量中对应的值相同,索引向量中与空指针向量中对应的值作比较获得比较结果向量,将比较结果向量和表示未发生哈希冲突数据的向量进行与操作获得所述插入掩码向量。另外,对比较结果向量取反操作获得中间掩码向量,并对中间掩码向量进行修正处理,获得修正后向量。其中修正处理为中间掩码向量与待分组聚集数据形成的未发生冲突的向量进行与操作。根据修正后向量和索引向量从链式哈希表的分组属性中选择性收集已分组数据,并与待分组向量中的待分组聚集数据进行比较操作,最终获得更新掩码向量。
本发明实施例通过比较操作建立插入掩码向量和更新掩码向量,指示需要创建新分组项的数据和需要更新分组聚集信息的数据。
在上述实施例的基础上,所述哈希表生成模块,具体用于:
将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表的相邻项中;
根据所述更新掩码向量和所述索引向量利用所述SIMD操作对所述需要更新聚集信息的数据更新对应的聚集信息。
具体地,哈希表生成模块根据插入掩码向量获知待分组聚集数据I、K、M、H需要创建新分组项并插入到链式哈希表中,此时,待分组聚集数据I、K、M、H通过选择性存储操作插入到分组属性的相邻项中。
另外,哈希表生成模块根据更新掩码向量获知待分组聚集数据J和G需要更新链式哈希表中的聚集信息,聚集信息以数据和为例。在更新链式哈希表中聚集信息时,先将数据和中已有的J和G的数据通过选择性收集操作收集到向量v5中,然后与k2中数据对应的数据向量进行相加,获得和向量,再将和向量通过选择性分散操作分散到数据和中。应当说明的是相同分组属性出现的次数更新采用同样的方法进行,本发明实施例对此不再赘述。
本发明实施例通过SIMD操作将需要创建新分组项的数据插入哈希表中,以及将需要更新聚集信息的数据更新对应的聚集信息,以向量的形式进行操作,提高了分组效率。
在上述实施例的基础上,图11为本发明另一实施例提供的一种数据分组聚集装置结构示意图,如图11所示,所述装置包括:构建模块1001、计算模块1002、掩码向量建立模块1003、哈希表生成模块1004和分组项更新模块1005,其中:
分组项更新模块1005用于若所述待分组向量中包含需要再次进行所述分组聚集操作的再分组聚集数据,则通过链表指针更新所述再分组聚集数据对应的分组项。
具体地,构建模块1001、计算模块1002、掩码向量建立模块1003和哈希表生成模块1004与上述实施例一致,此处不再赘述。如果在本次分组聚集操作中待分组向量中包含需要再次进行分组聚集操作的数据,称为再分组聚集数据,说明再分组聚集数据在本次分组聚集操作中还没有找到正确的分组项,则通过分组项更新模块1005对再分组聚集数据通过链表指针更新对应的分组项。
本发明实施例通过将多个待分组聚集数据构建待分组向量,并通过SIMD操作完成基于链式哈希表的数据分组聚集,以向量为单位进行分组聚集,提高了对数据进行分组聚集的效率。
图12为本发明实施例提供的一种数据分组聚集装置实体结构示意图,如图12所示:所述装置,包括:处理器(processor)1201、存储器(memory)1202、和总线1203;其中,
所述处理器1201、存储器1202通过所述总线1203完成相互间的通信;
所述处理器1201用于调用所述存储器1202中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取多个待分组聚集数据,并根据所述待分组聚集数据和掩码向量构建待分组向量;计算所述待分组向量中各所述待分组聚集数据对应的哈希值,根据所述哈希值并利用SIMD操作获得索引向量;根据所述索引向量和所述SIMD操作建立插入掩码向量和更新掩码向量,根据所述插入掩码向量从待分组向量中获得需要创建新分组项的数据,根据所述更新掩码向量从待分组向量中获得需要更新聚集信息的数据;将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据分组聚集方法,其特征在于,包括:
获取多个待分组聚集数据,并根据所述待分组聚集数据和掩码向量构建待分组向量;
计算所述待分组向量中各所述待分组聚集数据对应的哈希值,根据所述哈希值并利用SIMD操作获得索引向量;
根据所述索引向量和所述SIMD操作建立插入掩码向量和更新掩码向量,根据所述插入掩码向量从待分组向量中获得需要创建新分组项的数据,根据所述更新掩码向量从待分组向量中获得需要更新聚集信息的数据;
将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表。
2.根据权利要求1所述的方法,其特征在于,所述根据所述哈希值并利用SIMD操作获得索引向量,包括:
根据所述哈希值利用SIMD操作,将数据表中未经过分组聚集的数据对应的待确定分组项和上次分组聚集操作中发生冲突的数据对应的所述待确定分组项存入第一中间向量中;
获取在上次分组聚集操作中需再分组聚集的数据对应的第二中间向量;
根据所述第一中间向量和所述第二中间向量获得所述索引向量。
3.根据权利要求1所述的方法,其特征在于,所述根据所述索引向量建立插入掩码向量和更新掩码向量,包括:
将所述索引向量和空指针向量进行比较操作获得比较结果向量,根据所述比较结果向量获得所述插入掩码向量;
根据所述比较结果向量获取中间掩码向量,对所述中间掩码向量进行修正,获得修正后向量,根据所述索引向量和所述修正后向量获得所述更新掩码向量。
4.根据权利要求1所述的方法,其特征在于,所述将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表,包括:
将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表的相邻项中;
根据所述更新掩码向量和所述索引向量利用所述SIMD操作对所述需要更新聚集信息的数据更新对应的聚集信息。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
若所述待分组向量中包含需要再次进行所述分组聚集操作的再分组聚集数据,则通过链表指针更新所述再分组聚集数据对应的分组项。
6.一种数据分组聚集装置,其特征在于,包括:
构建模块,用于获取多个待分组聚集数据,并根据所述待分组聚集数据和掩码向量构建待分组向量;
计算模块,用于计算所述待分组向量中各所述待分组聚集数据对应的哈希值,根据所述哈希值并利用SIMD操作获得索引向量;
掩码向量建立模块,用于根据所述索引向量和所述SIMD操作建立插入掩码向量和更新掩码向量,根据所述插入掩码向量从待分组向量中获得需要创建新分组项的数据,根据所述更新掩码向量从待分组向量中获得需要更新聚集信息的数据;
哈希表生成模块,用于将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表中,对所述需要更新聚集信息的数据利用SIMD操作更新对应的聚集信息,形成所述链式哈希表。
7.根据权利要求6所述的装置,其特征在于,所述计算模块,具体用于:
根据所述哈希值利用SIMD操作,将数据表中未经过分组聚集的数据对应的待确定分组项和上次分组聚集操作中发生冲突的数据对应的所述待确定分组项存入第一中间向量中;
获取在上次分组聚集操作中需再分组聚集的数据对应的第二中间向量;
根据所述第一中间向量和所述第二中间向量获得所述索引向量。
8.根据权利要求6所述的装置,其特征在于,所述掩码向量建立模块,具体用于:
将所述索引向量和空指针向量进行比较操作获得比较结果向量,根据所述比较结果向量获得所述插入掩码向量;
根据所述比较结果向量获取中间掩码向量,对所述中间掩码向量进行修正,获得修正后向量,根据所述索引向量和所述修正后向量获得所述更新掩码向量。
9.根据权利要求6所述的装置,其特征在于,所述哈希表生成模块,具体用于:
将所述需要创建新分组项的数据利用SIMD操作插入到链式哈希表的相邻项中;
根据所述更新掩码向量和所述索引向量利用所述SIMD操作对所述需要更新聚集信息的数据更新对应的聚集信息。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述装置还包括:
分组项更新模块,用于若所述待分组向量中包含需要再次进行所述分组聚集操作的再分组聚集数据,则通过链表指针更新所述再分组聚集数据对应的分组项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611252315.0A CN106844533B (zh) | 2016-12-29 | 2016-12-29 | 一种数据分组聚集方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611252315.0A CN106844533B (zh) | 2016-12-29 | 2016-12-29 | 一种数据分组聚集方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106844533A true CN106844533A (zh) | 2017-06-13 |
CN106844533B CN106844533B (zh) | 2020-02-14 |
Family
ID=59113592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611252315.0A Active CN106844533B (zh) | 2016-12-29 | 2016-12-29 | 一种数据分组聚集方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106844533B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595211A (zh) * | 2018-01-05 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 用于输出数据的方法和装置 |
CN110442574A (zh) * | 2019-07-01 | 2019-11-12 | 上海赜睿信息科技有限公司 | 一种数据处理方法、电子设备和计算机可读存储介质 |
CN110908716A (zh) * | 2019-11-14 | 2020-03-24 | 中国人民解放军国防科技大学 | 一种向量聚合装载指令的实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102272716A (zh) * | 2008-12-30 | 2011-12-07 | 英特尔公司 | 网络分组的simd处理 |
CN103294831A (zh) * | 2013-06-27 | 2013-09-11 | 中国人民大学 | 列存储数据库中基于多维数组的分组聚集计算方法 |
US20140279927A1 (en) * | 2013-03-15 | 2014-09-18 | International Business Machines Corporation | Scalable graph modeling of metadata for deduplicated storage systems |
-
2016
- 2016-12-29 CN CN201611252315.0A patent/CN106844533B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102272716A (zh) * | 2008-12-30 | 2011-12-07 | 英特尔公司 | 网络分组的simd处理 |
US20140279927A1 (en) * | 2013-03-15 | 2014-09-18 | International Business Machines Corporation | Scalable graph modeling of metadata for deduplicated storage systems |
CN103294831A (zh) * | 2013-06-27 | 2013-09-11 | 中国人民大学 | 列存储数据库中基于多维数组的分组聚集计算方法 |
Non-Patent Citations (1)
Title |
---|
甄真等: "列数据库的SQL查询语句编译与优化", 《计算机工程》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595211A (zh) * | 2018-01-05 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 用于输出数据的方法和装置 |
CN110442574A (zh) * | 2019-07-01 | 2019-11-12 | 上海赜睿信息科技有限公司 | 一种数据处理方法、电子设备和计算机可读存储介质 |
CN110442574B (zh) * | 2019-07-01 | 2022-05-03 | 上海赜睿信息科技有限公司 | 一种数据处理方法、电子设备和计算机可读存储介质 |
CN110908716A (zh) * | 2019-11-14 | 2020-03-24 | 中国人民解放军国防科技大学 | 一种向量聚合装载指令的实现方法 |
CN110908716B (zh) * | 2019-11-14 | 2022-02-08 | 中国人民解放军国防科技大学 | 一种向量聚合装载指令的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106844533B (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chiang et al. | Cluster-gcn: An efficient algorithm for training deep and large graph convolutional networks | |
US9063914B2 (en) | Systems and methods for transcriptome analysis | |
CN110213164B (zh) | 一种基于拓扑信息融合的识别网络关键传播者的方法及装置 | |
AU2014340461A1 (en) | Systems and methods for using paired-end data in directed acyclic structure | |
CN107679049A (zh) | 获取树形结构数据两节点间路径的方法、装置及系统 | |
CN103177414A (zh) | 一种基于结构的图节点相似度并行计算方法 | |
CN105978711B (zh) | 一种基于最小生成树的最佳交换边查找方法 | |
CN105556474A (zh) | 管理数据操作的存储器和存储空间 | |
CN106844533B (zh) | 一种数据分组聚集方法及装置 | |
WO2020211466A1 (zh) | 一种非冗余基因集聚类方法、系统及电子设备 | |
CN102521332B (zh) | 基于强模拟的图模式匹配方法、装置及系统 | |
CN111680162A (zh) | 基于张量分解的知识图谱嵌入方法、系统及设备 | |
CN103064991A (zh) | 一种海量数据聚类方法 | |
CN114861970A (zh) | 有限资源下大规模图的全源最短路径分治求解方法 | |
CN112634989A (zh) | 基于片段重叠群的双面基因组片段填充方法及装置 | |
CN114443783B (zh) | 一种供应链数据分析和增强处理方法及装置 | |
CN113610350B (zh) | 复杂工况故障诊断方法、设备、存储介质及装置 | |
CN108197186A (zh) | 一种应用于社交网络中的动态图匹配查询方法 | |
CN109033746A (zh) | 一种基于节点向量的蛋白质复合物识别方法 | |
CN110032445B (zh) | 大数据聚集计算方法及装置 | |
CN106991195A (zh) | 一种分布式的子图枚举方法 | |
CN107529638B (zh) | 线性求解器的加速方法、存储数据库及gpu系统 | |
CN106790620B (zh) | 一种分布式大数据处理方法 | |
CN109993313A (zh) | 样本标签处理方法及装置、社群划分方法及装置 | |
CN107545074A (zh) | 一种实现删除有向路网图中部分非连通节点的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |