CN103294831A - 列存储数据库中基于多维数组的分组聚集计算方法 - Google Patents
列存储数据库中基于多维数组的分组聚集计算方法 Download PDFInfo
- Publication number
- CN103294831A CN103294831A CN2013102638807A CN201310263880A CN103294831A CN 103294831 A CN103294831 A CN 103294831A CN 2013102638807 A CN2013102638807 A CN 2013102638807A CN 201310263880 A CN201310263880 A CN 201310263880A CN 103294831 A CN103294831 A CN 103294831A
- Authority
- CN
- China
- Prior art keywords
- packet
- array
- multidimensional
- packet aggregation
- multidimensional numerical
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种列存储数据库中基于多维数组的分组聚集计算方法。在分组聚集计算过程中,将哈希表分解为多个多维数组,每个数组单元表示一个多维分组向量;将输出记录的分组属性映射为多维数组下标;按照分组属性的多维数组下标将聚集属性值送至对应的分组聚集多维数组单元中进行聚集计算。本发明一方面利用分组属性自身的多维数据特性采用多维数组与之对应,消除了哈希表的存储开销和哈希探测开销,另一方面使复杂的哈希表变成简单的数组,复杂的分组聚集计算变成简单的数组下标访问,在提高效率的同时更加适合多核处理器和众核协处理器的处理特性,具有更好的平台移植性和适应性。
Description
技术领域
本发明涉及一种数据库分组聚集计算方法,尤其涉及一种针对多核处理器和/或众核协处理器平台的技术特点,在列存储数据库中基于多维数组的分组聚集计算方法,属于数据库管理技术领域。
背景技术
OLAP(联机分析处理)是数据库系统最主要的一种应用,提高OLAP查询处理的性能是数据库领域的关键性研究问题之一。OLAP查询处理中通常都会包含多表连接和分组聚集计算,提高这些操作的性能是提高OLAP响应速度的关键。当前,随着数据量的迅速增长和分析型查询处理需求的不断提高,以及多核处理器和众核协处理器平台(例如通用GPU或英特尔至强融核TM协处理器等)的并行计算需求,大数据分组聚集计算日益成为新的性能瓶颈。提高分组聚集操作的性能和效率成为一个重要的研究课题。
在现有的数据库技术中,分组聚集计算主要采用两种实现方案:一是对输出记录按分组属性排序,然后在顺序扫描记录时将相同分组属性值的记录对应的聚集属性值进行聚集处理(如sum对应累加操作);二是采用哈希分组聚集处理,用分组属性构造哈希分组聚集表,每个哈希入口(哈希桶)相当于一个聚集器(如sum对应的累加器),每一个输出记录通过分组属性值的哈希探测找到其对应的哈希桶,并将聚集计算属性值推到哈希桶中进行聚集计算。在基于排序的分组聚集计算方案中,排序操作的代价较大。在分组聚集的记录集较大时,需要O(n*log2n)的排序代价和O(n)的记录扫描代价。在基于哈希表的分组聚集计算方案中,执行代价包括哈希探测的代价和聚集计算的代价。当分组属性为高势集时,即分组数量较大时,分组聚集哈希表需要较大的内存空间(哈希表需要相对原始数据较大的内存空间以使数据尽量分散,保证哈希探测的O(1)性能)。而当采用多核并行处理技术时,每个处理线程需要维护一个私有的哈希分组聚集表,而较大的哈希分组聚集表导致缓存缺失(cache miss)增加,并行处理性能下降。对于复杂的分组聚集函数,如中位数、百分位、top k、rank等函数涉及计算代价更高的处理过程,当聚集计算属性增多时,分组聚集计算的代价会不断增长。特别是在现有的分析查询中,聚集计算的数量越来越多,逐渐成为计算代价较大的操作符。
另一方面,目前越来越多的分析型数据库采用列存储,但基于哈希表的分组聚集操作需要将查询相关的列物化为行记录后才能进行分组聚集计算。这种先物化策略不利用发挥列存储一次一列的访问效率,因此需要在列存储数据库中提供基于列存储的分组聚集操作。对于多核处理器和众核协处理器平台而言,sum、count、average等聚集函数可以转换为并行处理过程,由各线程独立完成各自数据子集上的聚集计算,并通过全局聚集结果归并得到最终的聚集结果。这种并行的分组聚集计算需要将哈希分组聚集表最小化以减少多核处理器共享缓存中的数据访问冲突,因此需要比哈希表存储效率更高的分组聚集数据结构。对于众核处理器而言,向量结构比内存哈希表结构更加适合众核处理器的高并行计算模式,因此需要将以内存哈希表为基础的分组聚集处理技术向更加轻量化、向量化的分组聚集处理技术过渡,以更好地适应当前多核处理器和众核协处理器平台的需要,提高大数据分组聚集计算的性能。
发明内容
本发明所要解决的技术问题在于提供一种列存储数据库中基于多维数组的分组聚集计算方法。该方法降低了哈希表的存储空间开销和哈希探测的CPU代价,尤其适合多核处理器和众核协处理器平台使用。
为实现上述的发明目的,本发明采用下述的技术方案:
一种列存储数据库中基于多维数组的分组聚集计算方法,包括如下步骤:
在分组聚集计算过程中,将哈希表分解为多个同构的多维数组,每个多维数组对应一个聚集计算表达式,每个数组单元表示一个多维分组向量;
将查询的星形连接过程输出记录的多个分组属性映射为对应的多维数组各维上的下标,并转换为一维数组下标;
为查询生成连接向量,记录每一个满足连接条件记录的ID和分组属性对应的一维数组下标值;
在聚集计算过程中,各个聚集计算表达式根据连接向量独立进行聚集计算,在扫描连接向量时根据记录的ID直接访问聚集计算表达式对应的度量属性值,按照连接向量中分组属性映射的一维数组下标将聚集属性计算结果送至对应的多维数组单元中进行聚集计算。
其中较优地,对分组属性进行编码并映射为多维数组,输出记录根据分组编码可以直接映射到多维数组指定的数组单元中。
其中较优地,在维表访问阶段,根据分组属性生成分组编码,并在与事实表外键进行的星形连接中将满足连接条件记录的分组属性编码映射为多维数组的一维数组下标。
其中较优地,所述星形连接包括连接向量生成和聚集计算两个阶段;其中,连接向量生成阶段通过星形连接生成连接向量,记录满足连接条件的事实表对应的分组聚集多维数组一维形式的下标。
其中较优地,通过所述连接向量,各个聚集计算表达式独立访问对应的聚集属性列,抽取满足连接条件的属性值,并将其推送到所述连接向量中所记录的一维数组下标值对应的多维数组单元中进行聚集计算。
其中较优地,在所述星形连接中,事实表记录通过与维表的哈希连接操作获得输出记录在各个分组维(即多维数组对应的某一维)上的下标,并将多维数组下标映射为一维数组下标,将该下标记录到事实表连接向量中作为度量属性在分组聚集数组上的索引。
其中较优地,在事实表与维表之间的星形连接中,只记录星形连接的结果,即满足星形连接条件的事实表记录ID和该记录对应的分组聚集多维数组一维形式的下标。
其中较优地,在聚集计算阶段,采用多维数组代替哈希表作为分组聚集器,其中所述分组聚集器是将多个分组属性映射到一个多维数组,多维数组的每一个数组单元表示一个特定的分组聚集器,根据分组属性的数量确定数组的维数,数组单元作为每个分组的聚集计算单元。
其中较优地,在基于连接向量的分组聚集操作中,将传统的哈希探测过程转换为输出记录根据连接向量中分组属性映射的一维数组下标地址转换为多维数组地址后直接访问分组聚集单元,将聚集属性值推送到多维数组指定下标的数组单元中进行聚集计算。
其中较优地,当查询处理中包含多个聚集计算表达式时,为每个聚集计算表达式建立一个分组聚集多维数组,每个聚集计算表达式可以串行或并行地扫描连接向量并将聚集计算结果推送到各自的分组聚集多维数组对应的数组单元中完成聚集计算。
本发明是一种轻量化、向量化的多维分组聚集计算技术。它一方面利用分组属性自身的多维数据特性采用多维数组与之对应,消除了哈希表的存储开销和哈希探测开销,另一方面使复杂的哈希表变成简单的数组,复杂的分组聚集计算变成简单的数组下标访问,在提高效率的同时更加适合多核处理器和众核协处理器的处理特性,具有更好的平台移植性和适应性。
附图说明
下面结合附图和具体实施方式对本发明做进一步的详细说明。
图1为哈希分组聚集计算和多维数组分组聚集计算比较示意图;
图2为根据查询命令在维表上生成分组编码的过程示例;
图3为基于分组编码的星形连接过程示意图;
图4为基于连接向量的多维数组分组聚集计算的过程示意图;
图5为分组聚集多维数组转换为分组聚集结果集的过程示意图。
具体实施方式
在多维OLAP中使用多维数组存储原始的多维数据集,其稀疏的数据存储会导致严重的存储效率问题。多维数组相对于哈希表更加适合多维数据的直接映射访问。分组属性同样具有多维数据集特征,由于分组操作在大量记录向少量分组流动的过程中产生多维数据,因此数组中的空值很少,存储效率很高。多个分组属性构成了天然的多维数据立方体,数据立方体的每一个单元则对应一个特定的分组项。通过多维立方体结构能够将任何分组属性的组合值(分组项)直接映射到多维数组唯一的数组单元,而与此相对的哈希映射则无法体现分组属性的多维数据特性,只能通过键值的哈希映射定位到哈希值相同的桶中,即哈希表中的桶可能对应多维数据立方体的多个单元,但哈希映射缺乏将键值直接映射到多维数据立方体唯一单元的能力,因此哈希探测的效率难以达到最佳。
为此,本发明提出了一种列存储数据库中基于多维数组的分组聚集计算方法,其核心思想在于在分组聚集计算阶段使用多维数组代替哈希表。具体地说,该方法将一个哈希表分解为多个同构的多维数组,每个多维数组对应一个聚集计算表达式,多维数组中每个数组单元表示一个多维分组向量,以便支持对查询中的多个聚集计算表达式的列式计算。同时,将输出记录的分组属性映射为多维数组下标,一个(或几个)分组属性对应多维数组的一个维,分组属性值通过编码确定在这个维上的下标值,然后将多个分组属性值映射为一个多维数组,再将多维数组的下标映射为一维数组形式的下标(简称为一维数组下标)存在连接向量中。这样能够使用简单的多维数组结构替代复杂的内存哈希表,不再需要哈希键值映射、哈希探测、哈希桶顺序查找等CPU代价较大的操作。由于将多维数组下标直接映射到指定数组单元的CPU代价极低,而且数据操作是一种向量化操作,更加适合多核处理器和众核协处理器平台的处理方式。分组聚集计算由哈希探测简化为按照分组属性的多维数组下标直接将聚集属性值推送到对应的多维数组单元中进行聚集计算,可以显著降低哈希表的存储空间开销和哈希探测的CPU代价。下面对此展开详细具体的说明。
图1为哈希分组聚集计算和多维数组分组聚集计算的比较示意图。其中,哈希分组是对分组属性进行哈希映射,找到分组属性对应的哈希桶,当不同的分组属性具有相同的哈希映射值的时候,需要在哈希桶中顺序查找其对应的哈希桶。为保证哈希映射尽可能分散,需要将分组属性映射到一个较大的哈希键值空间以避免冲突,从而增加了内存空间开销。对于字符串类型分组属性的哈希映射需要较多的CPU处理代价,为避免哈希键值映射冲突需要增加额外的查找和键值存储代价。
为此,我们将分组属性编码并映射为多维数组,分组编码构成多维数组下标,输出记录可以直接根据分组编码映射到多维数组指定的数组单元中。多维数组相对于哈希表能够利用分组属性内在的多维数据特性,简化哈希表结构,提高存储效率,提高分组定位效率。
为了支持向量化的分组聚集计算,在维表访问阶段需要根据分组属性生成分组编码,并在与事实表外键进行的星形连接中将满足连接条件记录的各个分组属性编码映射为多维数组的一维数组形式的下标。例如Agg[3][4]多维数组共有12个数组单元,二维数组下标的取值范围分别为0~2和0~3,多维数组单元Agg[i][j],i<3,j<4,可以映射为一维数组单元Agg_1[i*4+j],如Agg[1][2]可以映射为Agg_1[6](1*4+2)。
采用多维数组存储的MOLAP面临严重的数据稀疏存储问题。但分组聚集操作是将大量的原始记录在较少的分组中进行聚集计算,即一个分组项对应数据库中大量的原始记录,采用多维数组存储分组项则面临较少的数据稀疏问题,数组中空值的数量相对较少,尤其在大数据低势集的分组操作中,多维数组的存储效率极高(100GB SSB测度中多维数组的利用率为100%)。由于存储效率高,因此分组聚集多维数组的存储开销相对于哈希表能够降到最低,没有额外的指针等数据结构,不需要存储键值,能够最小化分组聚集操作的空间代价,这种特性在降低多核并行处理时的共享缓存缺失(cache miss)尤为重要,能够降低线程间的数据访问冲突。
图2为根据查询命令在维表上生成分组编码的过程示例。在本发明的一个实施例中,查询命令涉及一个事实表和三个维表之间的星形连接,其中两个维表上有分组属性,一个维表上有两个分组属性。相应的SQL查询语句如下:
SELECT c_nation,c_name,s_region,sum(lo_quantity)asquantity,sum(lo_revenue)as profit
FROM customer,supplier,part,lineorder
WHERE lo_custkey=c_custkey
AND lo_suppkey=s_suppkey
AND lo_partkey=p_partkey
AND c_region='AMERICA'
AND s_region='AMERICA'
AND(p_category='MFGR#41'OR p_category='MFGR#42')
GROUP BY c_nation,c_name,s_region ORDER BY c_nation
在有分组属性的维表上执行选择操作并对分组属性投影。图2以customer维表为例,将满足条件c_region='AMERICA'的记录对应的c_nation,c_name投影出来。由于c_nation和c_name在分组属性中顺序一致,因此可以将c_nation和c_name分组作为一个超级分组属性统一编码。
为了提高列存储的查询处理性能,星形连接被分解为连接向量生成和聚集计算两个阶段。其中,连接向量生成阶段通过星形连接生成连接向量,记录满足连接条件的事实表对应的分组聚集多维数组转换为一维形式的数组下标。通过该连接向量,各个聚集计算表达式能够独立访问对应的聚集属性列,抽取满足连接条件的属性值,并将其聚集计算结果推送到连接向量中所记录的下标值对应的数组单元中进行聚集计算。为查询生成连接向量,记录每一个满足连接条件记录的ID和分组属性对应的一维数组下标值。
图3显示了基于分组编码的星形连接过程。其中,事实表外键属性利用星形连接生成连接向量。Customer表中分组数量为2,supplier表中分组数量为2,因此查询的分组聚集多维数组可以表示为Agg[2][2]。对于每一个满足连接条件事实表记录的分组ID,我们需要将二维数组下标映射为一维数组下标,如分组下标[1][0]映射为[2],并将该映射的一维数组下标记录在连接向量该事实表记录对应的位置中(参见图4)。
在星形连接中,事实表记录通过与维表的哈希连接操作获得输出记录在各个分组维(即多维数组对应的某一维)上的下标,并将多维数组下标映射为一维数组下标,将该下标记录到事实表连接向量(joinvector)中作为度量属性在分组聚集数组上的索引。
维表生成的哈希表包括记录主键、分组属性编码等信息,在事实表与各个维表进行的星形连接操作时,连接输出记录获得了各个分组属性的分组编码,即多维分组数组各维的下标,并将多维数组下标转换为一维数组下标。该下标记录了当前记录之后要推送到的多维数组聚集器中唯一的数组聚集单元的地址。
属性编码最大值构成多维数组一维上的下标范围,具体编码值映射为该维上的下标,各属性值对应多维数组各维的下标,合起来就是一个具体的多维数组地址。
在本发明中,采用后物化的连接策略,即事实表与维表之间的星形连接并不采用传统流水线(pipeline)方式将连接记录依次推送到上级操作符,直至完成全部的操作,而是只记录星形连接的结果,即满足星形连接条件的事实表记录ID和该记录对应的分组聚集多维数组的一维形式的数组下标。连接结果可以采用向量结构,即使用与事实表等长的向量,0值代表事实表记录不满足星形连接条件,非0值为满足星形连接条件记录对应的分组聚集多维数组的一维数组下标。
对于大数据分析处理负载,可以采用数据压缩技术进一步缩小连接向量的存储空间,采用INT类型存储ID和分组编码CompressedJoinVector:<ID,key>代替连接向量,令η代表选择率,N代表事实表行数,则采用数据压缩时需要满足:N*4>η*N*8,即η<50%时采用CompressedJoinVector能够节省连接向量存储空间。
在聚集计算阶段,本发明采用多维数组代替哈希表作为分组聚集器。该多维数组分组聚集器是将多个分组属性映射到一个多维数组,多维数组的每一个数组单元表示一个特定的分组聚集器。在该多维数组分组聚集器中,根据分组属性的数量确定数组的维数,数组单元作为每个分组的聚集计算单元,哈希探测转换为输出记录根据分组属性映射的多维数组下标地址直接访问分组聚集单元。每个待分组聚集的记录需要将分组属性映射为(或通过连接向量获取)分组聚集多维数组下标,然后将聚集属性值推送到多维数组指定下标的数组单元中进行聚集计算。用数组下标映射代替哈希探测既能提高分组聚集器的存储效率,又能够保证输出记录在多维数组分组聚集器上的一一映射,提高记录的分组定位效率。
分组聚集多维数组在完成维表操作后动态生成。其中分组聚集是操作名称,多维数组是操作所使用的数据结构。维表根据SQL命令中的选择条件投影出分组属性,并对分组属性进行顺序编码,对应多维数组的一个维。如果一个维表上有多个连续的分组属性,则可以将多个分组属性作为一个超级分组属性进行编码,将分组属性所对应的多维数组降维。维表操作完成后根据分组的数量和各分组中成员的数量创建多维数组。当存在多个聚集计算表达式时,为每个聚集计算表达式创建同构的多维数组。
在进行查询处理时,首先执行事实表外键与各个维表之间的星形连接操作并生成连接向量,聚集属性按列访问并根据连接向量中记录ID的位置随机访问,并将该位置对应的聚集属性值推入分组聚集多维数组对应下标位置的数组单元进行聚集计算。多个聚集计算表达式对应多个同构的分组聚集多维数组,每个分组聚集多维数组在对应的聚集属性列上完成独立的聚集计算,相应的聚集计算处理过程如图4所示。
聚集函数采用列式分组聚集计算模式,即扫描连接向量(压缩或非压缩连接向量),根据向量中的事实表记录ID从聚集属性列对应地址中抽取属性值并按照连接向量中存储的一维数组下标值将其推到多维分组聚集器对应的数组单元中进行聚集计算。
当查询处理中包含多个聚集计算表达式时,我们为每个聚集计算表达式建立一个分组聚集多维数组,每个聚集计算表达式可以串行或并行地扫描连接向量并将聚集计算结果推送到各自的分组聚集多维数组对应的数组单元中完成聚集计算。
在OLAP查询处理执行时,首先将事实表外键与各个维表进行哈希连接,对满足哈希连接条件的记录根据各维表分组编码映射为多维数组各维上的下标,并进一步将多维数组下标转换为一维数组下标。星形连接执行时预生成连接向量,满足连接条件的事实表记录其ID和转换后的一维数组下标,标识该行事实表记录在分组聚集多维数组上的下标位置。事实表外键属性扫描后,星形连接输出的结果为连接向量。
对于每个聚集计算表达式,按照连接向量中事实表ID位置访问聚集属性对应位置的属性值,并根据连接向量中记录的分组聚集数组下标值(一维数组下标转换为多维数组下标)将聚集属性值推送到分组聚集多维数组中对应的数组单元进行聚集计算。聚集计算采用列存储一次一列(或聚集计算表达式中的多列)的计算模式,每个聚集计算表达式使用私有的分组聚集多维数组,向量扫描和聚集计算过程可以并行执行,这种并行执行方式尤其适合应用于多核处理器和众核协处理器平台。
在本发明中,每个聚集计算表达式对应一个同构的分组聚集多维数组。传统的数据库中多个聚集计算表达式对应相同的哈希分组聚集表,列存储数据库需要通过物化机制将列数据动态转换为行数据完成哈希分组聚集计算。我们为每一个聚集计算表达式“克隆”一个多维数组作为其私有的分组聚集器,从而使多个列上的聚集计算对应独立的分组聚集器,通过列式处理提高数据访问效率。同时,分组聚集多维数组通过数组下标相对应,不需要额外的数据结构空间开销,相当于哈希分组聚集表的列存储结构,而且存储效率更高。
在聚集属性处理完毕后,可以得到多个同构的分组聚集多维数组,相同下标的数组单元表示相同分组编码对应的多个聚集结果。通过多维数组下标向分组编码表的反向映射,我们可以还原分组属性的原始值,并与多维数组拼装为最终的分组聚集结果集,返回查询处理结果。图5表示将多个分组聚集多维数组组合为最终分组聚集结果集的过程。数组下标反向映射为维表分组编码表中对应的原始分组属性值,输出最终的分组聚集结果集。
维表按选择条件(where子句)将分组属性(group by子句)投影出来并建立分组编码表,为每个不重复变元而顺序编码,作为多维分组聚集器在指定分组维上的下标。如果在同一个维表上有多个分组属性,而且分组属性在group by语句中相邻,如group by c_region,c_region,…,则分组属性c_region和c_region可以在维表上完成选择操作后作为一个超级分组属性进行编码,将一个维表上的多个分组属性压缩到一个分组编码中,为多维分组数组降维。当一个维表上有多个分组属性,但分组属性在group by语句中不连续时,则需要在维表完成选择操作时为每个分组属性建立独立的分组编码表,保存各自的多维数组下标信息。
在现有技术中,哈希表的内存开销随数据量及哈希函数的变化而变化,难以预先界定存储空间开销。而且哈希表需要建立链表结构,需要在哈希探测的过程中遍历哈希桶。这种复杂的内存哈希表结构和数据访问模式并不适合众核协处理器的处理模式。众核协处理器有强大的并行处理能力和向量处理能力,但不适合复杂内存结构上的访问和管理。我们通过将分组聚集处理转换为对定长数组的访问,从而将复杂的分组聚集哈希表转换为简单的数组,能够充分利用众核协处理器的向量处理能力,使复杂的分组聚集操作也能够迁移到强大的众核协处理器平台,从而支持分析型数据库能够更好地迁移到众核协处理器平台。
本发明不仅适合于采用多核处理器和众核协处理器平台上的OLAP应用,也适用于通用数据库中的分析处理应用。与现有技术相比较,本发明使用简单的多维数组数据类型和基于数组下标的访问操作,能够更好地提高分组聚集操作的数据存储效率和分组聚集性能。而且,在简单数组数据类型上向量化的操作更加适合多核和众核处理器的并行处理,具有良好的平台适应性。
以上对本发明所提供的列存储数据库中基于多维数组的分组聚集计算方法进行了详细的说明。对本领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (10)
1.一种列存储数据库中基于多维数组的分组聚集计算方法,其特征在于包括如下步骤:
在分组聚集计算过程中,将哈希表分解为多个同构的多维数组,每个数组单元表示一个多维分组向量,每个多维数组对应一个聚集计算表达式;将查询的星形连接过程输出记录的多个分组属性映射为对应的多维数组各维上的下标,并转换为一维数组下标;在聚集计算过程中,各个聚集计算表达式根据连接向量独立进行聚集计算,在扫描连接向量时根据记录的ID直接访问聚集计算表达式对应的度量属性值,按照连接向量中分组属性映射的一维数组下标将聚集属性计算结果送至对应的多维数组单元中进行聚集计算。
2.如权利要求1所述的分组聚集计算方法,其特征在于:
在维表访问阶段,根据分组属性生成分组编码,并在与事实表外键进行的星形连接中将满足连接条件记录的分组属性编码映射为多维数组的一维数组下标。
3.如权利要求2所述的分组聚集计算方法,其特征在于:
所述星形连接包括连接向量生成和聚集计算两个阶段;其中,连接向量生成阶段通过星形连接生成连接向量,记录满足连接条件的事实表对应的分组聚集多维数组一维形式的下标。
4.如权利要求1所述的分组聚集计算方法,其特征在于:
通过所述连接向量,各个聚集计算表达式独立访问对应的聚集属性列,抽取满足连接条件的属性值,并将其推送到所述连接向量中所记录的一维数组下标值对应的多维数组单元中进行聚集计算。
5.如权利要求1所述的分组聚集计算方法,其特征在于:
为查询连接向量,记录每一个满足连接条件记录的ID和分组属性对应的一维数组下标值。
6.如权利要求1所述的分组聚集计算方法,其特征在于:
在所述星形连接中,事实表记录通过与维表的哈希连接操作获得输出记录在各个分组维上的下标,并将多维数组下标映射为一维数组下标,将该下标记录到事实表连接向量中作为度量属性在分组聚集数组上的索引。
7.如权利要求1所述的分组聚集计算方法,其特征在于:
在事实表与维表之间的星形连接中,只记录星形连接的结果,即满足星形连接条件的事实表记录ID和该记录对应的分组聚集多维数组的一维数组下标。
8.如权利要求1所述的分组聚集计算方法,其特征在于:
在聚集计算阶段,采用多维数组代替哈希表作为分组聚集器,其中所述分组聚集器是将多个分组属性映射到一个多维数组,多维数组的每一个数组单元表示一个特定的分组聚集器,根据分组属性的数量确定数组的维数,数组单元作为每个分组的聚集计算单元。
9.如权利要求8所述的分组聚集计算方法,其特征在于:
在基于连接向量的分组聚集操作中,将哈希探测过程转换为输出记录根据连接向量中分组属性映射的一维数组下标地址转换为多维数组地址后直接访问分组聚集单元,将聚集属性值推送到多维数组指定下标的数组单元中进行聚集计算。
10.如权利要求1所述的分组聚集计算方法,其特征在于:
当查询处理中包含多个聚集计算表达式时,为每个聚集计算表达式建立一个分组聚集多维数组,每个聚集计算表达式串行或并行地扫描连接向量并将聚集计算结果推送到各自的分组聚集多维数组对应的数组单元中完成聚集计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310263880.7A CN103294831B (zh) | 2013-06-27 | 2013-06-27 | 列存储数据库中基于多维数组的分组聚集计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310263880.7A CN103294831B (zh) | 2013-06-27 | 2013-06-27 | 列存储数据库中基于多维数组的分组聚集计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103294831A true CN103294831A (zh) | 2013-09-11 |
CN103294831B CN103294831B (zh) | 2016-06-29 |
Family
ID=49095693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310263880.7A Active CN103294831B (zh) | 2013-06-27 | 2013-06-27 | 列存储数据库中基于多维数组的分组聚集计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103294831B (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631911A (zh) * | 2013-11-27 | 2014-03-12 | 中国人民大学 | 基于数组存储和向量处理的olap查询处理方法 |
CN103778258A (zh) * | 2014-02-27 | 2014-05-07 | 华为技术有限公司 | 一种数据库数据的发送、接收方法、客户端、服务器 |
CN103823834A (zh) * | 2013-12-03 | 2014-05-28 | 华为技术有限公司 | 一种哈希连接算子间数据传递的方法及装置 |
CN103942342A (zh) * | 2014-05-12 | 2014-07-23 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
CN104361118A (zh) * | 2014-12-01 | 2015-02-18 | 中国人民大学 | 一种适应协处理器的混合olap查询处理方法 |
CN104536958A (zh) * | 2014-09-26 | 2015-04-22 | 杭州华为数字技术有限公司 | 一种复合索引方法,及装置 |
CN104572047A (zh) * | 2013-10-18 | 2015-04-29 | 镇江鼎拓科技信息有限公司 | 一种基于Apache Tomcat的WEB数据库开发组件方法 |
CN105404634A (zh) * | 2014-09-15 | 2016-03-16 | 南京理工大学 | 基于Key-Value数据块的数据管理方法及系统 |
CN106844533A (zh) * | 2016-12-29 | 2017-06-13 | 北京师范大学 | 一种数据分组聚集方法及装置 |
CN107656876A (zh) * | 2017-10-19 | 2018-02-02 | 浪潮金融信息技术有限公司 | 数据存储方法及装置、计算机可读存储介质、终端 |
CN109766479A (zh) * | 2019-01-24 | 2019-05-17 | 北京三快在线科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN109885568A (zh) * | 2018-12-29 | 2019-06-14 | 亚信科技(中国)有限公司 | 一种内存数据库的hash索引构建方法及装置 |
CN109952569A (zh) * | 2016-09-16 | 2019-06-28 | 甲骨文国际公司 | 用于基于字典的连接和聚合的技术 |
CN110442574A (zh) * | 2019-07-01 | 2019-11-12 | 上海赜睿信息科技有限公司 | 一种数据处理方法、电子设备和计算机可读存储介质 |
CN110515939A (zh) * | 2019-07-03 | 2019-11-29 | 中兴飞流信息科技有限公司 | 一种基于gpu的多列数据排序方法 |
US10572483B2 (en) | 2014-06-09 | 2020-02-25 | Micro Focus Llc | Aggregate projection |
WO2020248604A1 (zh) * | 2019-06-11 | 2020-12-17 | 中国人民大学 | 一种基于分组向量的哈希多表连接实现方法 |
CN112347104A (zh) * | 2020-11-06 | 2021-02-09 | 中国人民大学 | 一种基于深度强化学习的列存储布局优化方法 |
CN112699409A (zh) * | 2020-12-31 | 2021-04-23 | 卓尔智联(武汉)研究院有限公司 | 一种数据处理方法、装置和电子设备 |
CN113204602A (zh) * | 2021-05-07 | 2021-08-03 | 星环信息科技(上海)股份有限公司 | 数据处理方法、装置、设备及存储介质 |
CN113297333A (zh) * | 2021-03-17 | 2021-08-24 | 无锡极数宝大数据科技有限公司 | 数据处理方法、装置、服务器及存储介质 |
CN114077581A (zh) * | 2021-11-24 | 2022-02-22 | 北京白板科技有限公司 | 一种基于数据汇聚存储方式的数据库 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663114A (zh) * | 2012-04-17 | 2012-09-12 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
-
2013
- 2013-06-27 CN CN201310263880.7A patent/CN103294831B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
CN102663114A (zh) * | 2012-04-17 | 2012-09-12 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
Non-Patent Citations (1)
Title |
---|
张延松,焦敏,王占伟,王珊,周煊: "海量数据分析的One-size-fits-all OLAP技术", 《计算机学报》 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572047A (zh) * | 2013-10-18 | 2015-04-29 | 镇江鼎拓科技信息有限公司 | 一种基于Apache Tomcat的WEB数据库开发组件方法 |
CN103631911A (zh) * | 2013-11-27 | 2014-03-12 | 中国人民大学 | 基于数组存储和向量处理的olap查询处理方法 |
CN103631911B (zh) * | 2013-11-27 | 2017-11-03 | 中国人民大学 | 基于数组存储和向量处理的olap查询处理方法 |
CN103823834A (zh) * | 2013-12-03 | 2014-05-28 | 华为技术有限公司 | 一种哈希连接算子间数据传递的方法及装置 |
CN103823834B (zh) * | 2013-12-03 | 2017-04-26 | 华为技术有限公司 | 一种哈希连接算子间数据传递的方法及装置 |
CN103778258B (zh) * | 2014-02-27 | 2017-09-29 | 华为技术有限公司 | 一种数据库数据的发送、接收方法、客户端、服务器 |
CN103778258A (zh) * | 2014-02-27 | 2014-05-07 | 华为技术有限公司 | 一种数据库数据的发送、接收方法、客户端、服务器 |
CN103942342A (zh) * | 2014-05-12 | 2014-07-23 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
CN103942342B (zh) * | 2014-05-12 | 2017-02-01 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
US10572483B2 (en) | 2014-06-09 | 2020-02-25 | Micro Focus Llc | Aggregate projection |
CN105404634A (zh) * | 2014-09-15 | 2016-03-16 | 南京理工大学 | 基于Key-Value数据块的数据管理方法及系统 |
CN105404634B (zh) * | 2014-09-15 | 2019-02-22 | 南京理工大学 | 基于Key-Value数据块的数据管理方法及系统 |
CN104536958B (zh) * | 2014-09-26 | 2018-03-16 | 杭州华为数字技术有限公司 | 一种复合索引方法及装置 |
CN104536958A (zh) * | 2014-09-26 | 2015-04-22 | 杭州华为数字技术有限公司 | 一种复合索引方法,及装置 |
CN104361118B (zh) * | 2014-12-01 | 2017-07-21 | 中国人民大学 | 一种适应协处理器的混合olap查询处理方法 |
CN104361118A (zh) * | 2014-12-01 | 2015-02-18 | 中国人民大学 | 一种适应协处理器的混合olap查询处理方法 |
CN109952569B (zh) * | 2016-09-16 | 2023-05-30 | 甲骨文国际公司 | 用于基于字典的连接和聚合的方法和计算机可读介质 |
CN109952569A (zh) * | 2016-09-16 | 2019-06-28 | 甲骨文国际公司 | 用于基于字典的连接和聚合的技术 |
CN106844533B (zh) * | 2016-12-29 | 2020-02-14 | 北京师范大学 | 一种数据分组聚集方法及装置 |
CN106844533A (zh) * | 2016-12-29 | 2017-06-13 | 北京师范大学 | 一种数据分组聚集方法及装置 |
CN107656876A (zh) * | 2017-10-19 | 2018-02-02 | 浪潮金融信息技术有限公司 | 数据存储方法及装置、计算机可读存储介质、终端 |
CN109885568A (zh) * | 2018-12-29 | 2019-06-14 | 亚信科技(中国)有限公司 | 一种内存数据库的hash索引构建方法及装置 |
CN109885568B (zh) * | 2018-12-29 | 2021-07-30 | 亚信科技(中国)有限公司 | 一种内存数据库的hash索引构建方法及装置 |
CN109766479A (zh) * | 2019-01-24 | 2019-05-17 | 北京三快在线科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
WO2020248604A1 (zh) * | 2019-06-11 | 2020-12-17 | 中国人民大学 | 一种基于分组向量的哈希多表连接实现方法 |
US11797509B2 (en) | 2019-06-11 | 2023-10-24 | Renmin University Of China | Hash multi-table join implementation method based on grouping vector |
CN110442574B (zh) * | 2019-07-01 | 2022-05-03 | 上海赜睿信息科技有限公司 | 一种数据处理方法、电子设备和计算机可读存储介质 |
CN110442574A (zh) * | 2019-07-01 | 2019-11-12 | 上海赜睿信息科技有限公司 | 一种数据处理方法、电子设备和计算机可读存储介质 |
CN110515939A (zh) * | 2019-07-03 | 2019-11-29 | 中兴飞流信息科技有限公司 | 一种基于gpu的多列数据排序方法 |
CN110515939B (zh) * | 2019-07-03 | 2022-08-12 | 中兴飞流信息科技有限公司 | 一种基于gpu的多列数据排序方法 |
CN112347104A (zh) * | 2020-11-06 | 2021-02-09 | 中国人民大学 | 一种基于深度强化学习的列存储布局优化方法 |
CN112347104B (zh) * | 2020-11-06 | 2023-09-29 | 中国人民大学 | 一种基于深度强化学习的列存储布局优化方法 |
CN112699409A (zh) * | 2020-12-31 | 2021-04-23 | 卓尔智联(武汉)研究院有限公司 | 一种数据处理方法、装置和电子设备 |
CN113297333A (zh) * | 2021-03-17 | 2021-08-24 | 无锡极数宝大数据科技有限公司 | 数据处理方法、装置、服务器及存储介质 |
CN113204602A (zh) * | 2021-05-07 | 2021-08-03 | 星环信息科技(上海)股份有限公司 | 数据处理方法、装置、设备及存储介质 |
CN113204602B (zh) * | 2021-05-07 | 2023-08-01 | 星环信息科技(上海)股份有限公司 | 数据处理方法、装置、设备及存储介质 |
CN114077581A (zh) * | 2021-11-24 | 2022-02-22 | 北京白板科技有限公司 | 一种基于数据汇聚存储方式的数据库 |
Also Published As
Publication number | Publication date |
---|---|
CN103294831B (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103294831A (zh) | 列存储数据库中基于多维数组的分组聚集计算方法 | |
CN102663116B (zh) | 面向列存储数据仓库的多维olap查询处理方法 | |
CN102663114B (zh) | 面向并发olap的数据库查询处理方法 | |
Buck et al. | Scihadoop: Array-based query processing in hadoop | |
Martínez-Prieto et al. | Exchange and consumption of huge RDF data | |
Ji et al. | Big data processing: Big challenges and opportunities | |
Chattopadhyay et al. | Tenzing a sql implementation on the mapreduce framework | |
Wu et al. | Query optimization for massively parallel data processing | |
Larson et al. | SQL server column store indexes | |
Wang et al. | Supporting a light-weight data management layer over hdf5 | |
US8126870B2 (en) | System and methodology for parallel query optimization using semantic-based partitioning | |
CN105868388B (zh) | 一种基于fpga的内存olap查询优化方法 | |
CN103309958B (zh) | Gpu和cpu混合架构下的olap星型连接查询优化方法 | |
CN104361118B (zh) | 一种适应协处理器的混合olap查询处理方法 | |
CN110263038B (zh) | 一种基于分组向量的哈希多表连接实现方法 | |
Rusu et al. | A survey on array storage, query languages, and systems | |
CN103631911A (zh) | 基于数组存储和向量处理的olap查询处理方法 | |
CN113424173A (zh) | 用于有效图分析的物化图视图 | |
CN104361113A (zh) | 一种内存-闪存混合存储模式下的olap查询优化方法 | |
Su et al. | Indexing and parallel query processing support for visualizing climate datasets | |
Shanoda et al. | JOMR: Multi-join optimizer technique to enhance map-reduce job | |
Su et al. | Supporting user-defined subsetting and aggregation over parallel netcdf datasets | |
Yang et al. | Traverse: simplified indexing on large map-reduce-merge clusters | |
Sridhar et al. | RAPID: Enabling scalable ad-hoc analytics on the semantic web | |
Chehadeh et al. | Energy-efficient indexing on a broadcast channel in a mobile database access system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |