CN105930388B - 一种基于函数依赖关系的olap分组聚集方法 - Google Patents

一种基于函数依赖关系的olap分组聚集方法 Download PDF

Info

Publication number
CN105930388B
CN105930388B CN201610232371.1A CN201610232371A CN105930388B CN 105930388 B CN105930388 B CN 105930388B CN 201610232371 A CN201610232371 A CN 201610232371A CN 105930388 B CN105930388 B CN 105930388B
Authority
CN
China
Prior art keywords
packet
attribute
functional
attributes
functional dependence
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.)
Active
Application number
CN201610232371.1A
Other languages
English (en)
Other versions
CN105930388A (zh
Inventor
张延松
张宇
周烜
王珊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renmin University of China
Original Assignee
Renmin University of China
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
Application filed by Renmin University of China filed Critical Renmin University of China
Priority to CN201610232371.1A priority Critical patent/CN105930388B/zh
Publication of CN105930388A publication Critical patent/CN105930388A/zh
Application granted granted Critical
Publication of CN105930388B publication Critical patent/CN105930388B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种基于函数依赖关系的OLAP分组聚集方法,其步骤:定义分组属性间的函数依赖树结构,确定分组属性及表间属性之间的函数依赖关系;对GROUP BY子句的分组属性按分组属性函数依赖树进行检测;将查询分组属性划分为两个分组,分别由函数依赖键属性和其他分组属性组成;对维表按函数依赖关系进行模式分解,维表使用代理键机制,采用内存列存储机制;在维表模式分解和代理键索引机制下,分组聚集计算进一步将分组属性转换为对函数依赖键属性的分组聚集计算,在完成分组聚集计算后,按函数依赖键属性值直接映射到相关维表记录的内存偏移地址,完成抽取其他相关分组属性的操作,输出完整的SQL查询结果。本发明能约简分组属性大小,提高哈希分组计算效率的作用。

Description

一种基于函数依赖关系的OLAP分组聚集方法
技术领域
本发明涉及一种OLAP分组聚集方法,特别是关于一种通过数据库相同或不同表属性之间的函数依赖关系约简分组属性,基于函数依赖关系优化分组聚集计算性能的OLAP分组聚集方法。
背景技术
目前,分组聚集操作是OLAP查询的重要功能,在关系数据库中主要通过哈希表对记录进行分组并进行聚集计算。在OLAP查询中,GROUP BY属性为分组属性,当分组属性较多或者分组属性涉及较长的字符型属性时,数据库直接将较长的属性作为哈希键值进行分组计算,在哈希映射时产生较高的CPU计算代价,分组哈希表需要存储较长的键值,导致哈希表空间增大,产生较多的Cache Miss,增加分组计算的内存访问延迟。
发明内容
针对上述问题,本发明的目的是提供一种基于函数依赖关系的OLAP分组聚集方法,该方法通过维表上定义的属性之间的函数依赖树对查询中的分组属性按照函数依赖关系进行分组,使用函数依赖分组中的键属性替代其属性进行分组计算,优化哈希分组操作中的哈希键值的哈希映射计算代价,从而起到约简分组属性大小,提高哈希分组计算效率的作用。
为实现上述目的,本发明采取以下技术方案:一种基于函数依赖关系的OLAP分组聚集方法,其特征在于,该方法包括以下步骤:1)根据数据仓库模式及参照完整性约束条件定义分组属性间的函数依赖树结构,确定数据仓库各个表中分组属性及表间属性之间的函数依赖关系;2)查询执行时,对GROUP BY子句的分组属性按分组属性函数依赖树进行检测,确定其中包含的函数依赖属性集,以及各函数依赖属性组中的键属性;3)将查询分组属性划分为两个分组,分别由函数依赖键属性和查询中键属性之外的其他分组属性组成,函数依赖键属性作为主要哈希键值属性进行哈希分组探测,其他分组属性作为附加属性存储但不参与哈希键映射计算;4)对维表按函数依赖关系进行模式分解,确保每个表只存在一个函数依赖关系,表间记录的函数依赖关系由主-外键参照完整性约束条件来定义,维表使用代理键机制,采用内存列存储机制;5)在维表模式分解和代理键索引机制下,分组聚集计算进一步将分组属性转换为对函数依赖键属性的分组聚集计算,在完成分组聚集计算后,按函数依赖键属性值直接映射到相关维表记录的内存偏移地址,完成抽取其他相关分组属性的操作,输出完整的SQL查询结果。
所述步骤1)中,函数依赖树在维表上单独定义,或通过数据仓库产品中已有的OLAP建模工具中定义的维层次作为函数依赖关系树使用,OLAP建模工具中的维结构和维层次定义了维表上的函数依赖关系,定义查询分组属性候选集。
所述步骤4)中,具有函数依赖的属性存在于相同的表,具有传递函数依赖关系的属性通过主-外键参照完整性约束存储于不同的表中。
所述步骤5)中,当分组属性包含外键属性及其参照表的属性时,使用外键属性进行分组聚集计算,在完成OLAP查询处理时,通过外键属性直接访问相应的参照表属性,完成OLAP查询结果输出。
本发明由于采取以上技术方案,其具有以下优点:1、本发明充分利用了维及维层次结构所定义的属性间函数依赖关系对分组属性进行划分,定义了一种简单可行的分组属性划分方法。2、在每一个分组划分中,以属性函数依赖关系中的键属性作为分组计算属性,其余属性作为附加输出属性,不参与哈希分组计算,降低哈希分组计算代价。3、通过对维按函数依赖关系的模式分解,维属性间的传递函数依赖关系被存储为具有主-外键参照完整性约束关系的雪花形维表结构,采用代理键索引机制实现了维表记录按键值地址映射访问,支持对具有传递函数依赖关系的属性组分组聚集时通过函数依赖键属性分组聚集计算后按外键的地址映射访问附加属性的后物化访问模式,减少了分组哈希表中键值的存储与计算开销。
附图说明
图1是本发明实施例中哈希分组聚集计算示意图;
图2是本发明实施例中表结构示意图;
图3是本发明实施例中维属性函数依赖树示意图;
图4是本发明实施例中基于函数依赖属性组键值哈希表存储示意图;
图5是本发明实施例中基于代理键索引机制的维表记录访问示意图。
具体实施方式
在OLPA应用中,查询结果要通过GROUP BY语句将查询产生的记录进行分组后进行聚集计算,分组子句中可能包含较多的分组属性,如在数据库性能测试基准TPC-H中的测试查询Q3的分组属性为1_orderkey,o_orderdate,o_shippriority,Q10的分组属性为c_custkey,c_name,c_acctbal,c_phone,n_name,c_address,c_comment,Q18的分组属性为c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice。查询中包含的多个分组属性导致数据库查询处理引擎在执行分组聚集计算时需要为分组属性创建较大的哈希表,并对较长的分组属性进行哈希映射,增加了分组聚集计算时的哈希表存储和访问代价。
在包含多属性分组表达式的查询中,属性之间往往存在函数依赖关系。数据库中的函数依赖关系主要有函数依赖和传递函数依赖,其下的定义说明了在具有函数依赖或传递函数依赖的属性组中,起到函数确定其他属性的键属性X与其他非键属性的等价关系。
函数依赖:设R(U)是定义在属性集U上的任一关系模式,X,Y为U的子集。若R的任一个可能的关系r中的任意两个元组s,t满足在属性X上取值相等(即s[X]=t[X])则一定有s,t在属性Y上取值也相等(即s[Y]=t[Y])的条件,则称属性X函数确定属性Y,或属性Y函数依赖于X,记为X→Y。
传递函数依赖:在R(U)中,若X→Y,同时满足Y不是X的子集并且不存在Y→X时,有Y→Z且Z不是Y的子集,则称Z对X传递函数依赖,记作
当分组属性间存在函数依赖关系时,如A→(B,C,D),GROUP BY A与GROUP BY A,B,C,D具有相同的分组结果,而前者在哈希分组聚集计算时具有更高的效率。因此,分组聚集计算优化技术的关键是如何约简分组属性,即从SQL命令的分组属性中定义函数依赖属性组划分,以及如何实现基于函数依赖键属性的分组聚集计算。
为解决分组属性约简问题,需要对查询分组属性进行函数依赖检测,按函数依赖关系对分组属性集进行分组,并确定各分组属性集的键属性,然后使用约简后的键属性进行实际的分组聚集计算。因此,为实现对分组属性进行重构,以函数依赖的键属性作为主分组属性,简化分组哈希表存储和计算,本发明提出一种新的方法。下面结合附图和实施例对本发明进行详细的描述。
本发明提供一种基于函数依赖关系的OLAP分组聚集方法,其包括以下步骤:
1)根据数据仓库模式及参照完整性约束条件定义分组属性间的函数依赖树结构,确定数据仓库各个表中分组属性及表间属性之间的函数依赖关系;
2)查询执行时,对GROUP BY子句的分组属性按分组属性函数依赖树进行检测,确定其中包含的函数依赖属性集,以及各函数依赖属性组中的键属性;
3)将查询分组属性划分为两个分组,分别由函数依赖键属性和查询中键属性之外的其他分组属性组成,函数依赖键属性作为主要哈希键值属性进行哈希分组探测,其他分组属性作为附加属性存储但不参与哈希键映射计算;
4)为进一步提高分组聚集计算性能,对维表按函数依赖关系进行模式分解,确保每个表只存在一个函数依赖关系,表间记录的函数依赖关系由主-外键参照完整性约束条件来定义,维表使用代理键机制(即维表主键使用自然数列作为主键,如0,1,2,…或1,2,3,…),采用内存列存储机制,从而实现代理键与维表记录内存偏移地址的一一映射、外键与参照表记录内存偏移地址的直接映射,实现通过外键值直接映射访问相关的参照维记录的功能,实现后物化方式的分组属性访问;
5)在维表模式分解和代理键索引机制下,分组聚集计算可以进一步将分组属性转换为对函数依赖键属性的分组聚集计算,在完成分组聚集计算后,按函数依赖键属性值直接映射到相关维表记录的内存偏移地址,完成抽取其他相关分组属性的操作,输出完整的SQL查询结果。
上述步骤1)中,函数依赖树可以在维表上单独定义,也可以通过数据仓库产品中已有的OLAP建模工具中定义的维层次作为函数依赖关系树使用,OLAP建模工具中的维结构和维层次定义了维表上的函数依赖关系,定义了查询分组属性候选集。
上述步骤3)中,函数依赖键属性起到实际的分组作用,而非键属性则不对分组操作结果产生影响,不需要参与哈希键值计算。
上述步骤4)中,具有函数依赖的属性存在于相同的表,具有传递函数依赖关系的属性通过主-外键参照完整性约束存储于不同的表中。与普通数据库的主-外键参照完整性约束机制不同,本发明的维表采用代理键机制,实现键值与内存列存储维表记录的地址映射,从而支持通过外键直接访问参照表记录。
上述步骤5)中,当分组属性包含外键属性及其参照表的属性时,可以使用外键属性进行分组聚集计算,在完成OLAP查询处理时,通过外键属性直接访问相应的参照表属性,完成OLAP查询结果输出。
实施例:
如图1所示,数据库通常使用哈希分组聚集计算方法,GROUP BY子句对应的属性组作为哈希键值(hash key)通过哈希函数进行哈希映射,映射到哈希表中唯一的桶,桶中存储若干个哈希记录,哈希记录由哈希键值和聚集计算单元组成。由于不同的哈希键值在哈希函数的映射下可能对应相同的桶,因此哈希表中需要保留哈希键值进行比较,并作为输出结果的分组属性。
哈希分组聚集计算的效率取决于哈希表的存储访问效率和哈希探测的计算效率。在内存数据库中,哈希表越小则哈希表内存访问时的Cache命中率越高,内存访问延迟越低,哈希表的大小取决于哈希键值的大小。哈希探测包括哈希键值的映射计算和在哈希表映射的桶以及溢出桶中线性查找的代价,哈希键值越小则计算代价越低。
一个典型SQL命令GROUP BY c_custkey,c_name,c_acctbal,c_phone,n_name,c_address,c_comment中的分组属性总长度达到230个字节,哈希键值存储与哈希映射计算代价较高。本发明将其较长的哈希键值约简为4个字节,能够极大地提高哈希表存储和哈希探测效率。
如图2所示,在代表性的OLAP数据库TPC-H中,以事实表LINEITEM为中心构成一个多维结构,维表中属性包括了描述性属性和分析中常用的维属性,维层次“nation-region”分别存储在维表nation和region中,维表与事实表,维表之间通过主-外键参照完整性约束条件关联,维表使用代理键作为主键,在列存储内存数据库中,代理键可以直接映射为记录的内存偏移地址。
图3显示了分组属性c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice所构成的函数依赖树结构。其中,属性组按函数依赖关系可以划分为两个分组,o_orderkey→(o_orderdate,o_totalprice)和c_custkey→c_name。在模式中,orders表通过o_custkey外键与customer表主键c_custkey构建了主-外键参照完整性约束关系。在orders表中,存在函数依赖关系o_orderkey→o_custkey,因此存在o_orderkey与c_custkey的传递函函数依赖关系,即每一个o_orderkey能够唯一确定c_custkey的取值。在整个函数依赖树中,o_orderkey为根节点,能够直接或间接地唯一确定c_name,c_custkey,o_orderdate,o_totalprice等属性的取值,即o_orderkey→(c_name,c_custkey,o_orderdate,o_totalprice)。因此,SQL命令中GROUP BY c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice与SQL命令中GROUP BY o_orderkey具有等价的分组结果。
如图4所示,当查询的GROUP BY语句由函数依赖键属性等价执行时,其他非键属性可以采用后物化访问机制。如GROUP BY语句中的分组属性c_custkey,c_name,c_acctbal,c_phone,n_name,c_address,c_comment可以由GROUP BY c_custkey等价执行,在完成分组聚集计算后,将c_custkey键值映射为维表customer的维记录偏移地址,访问c_custkey对应的c_name,c_acctbal,c_phone,c_address,c_comment属性,n_name属性通过c_nationkey外键映射到nation表相应记录的偏移地址访问对应的n_name属性值。后物化分组属性访问技术的基础是维表通过模式分解将传递函数依赖关系分解为具有主-外键参照完整性约束关系的多表,维表采用代理键索引机制实现键值映射内存地址,从而实现在函数依赖树上通过键节点实时访问其他非键属性。
如图5所示,当分组属性中包含的传递函数依赖关系属性存在同一个表时,如GROUP BY i_item_id,ca_country,ca_state,ca_country命令中存在传递函数依赖关系ca_country→ca_state→ca_country,但由于ca_country,ca_state,ca_country属性没有通过模式分解存储在不同的表中,因此不能使用图4所示的后物化访问机制。在分组聚集计算时,属性组划分为两个分组,i_item_id和ca_country构成主哈希键属性组,ca_state和ca_country构成附加分组属性组,在进行分组聚集计算时只对主哈希键属性组进行哈希映射计算,附加分组属性组不需要进行哈希映射计算,只作为附加分组键值存储。通过主哈希键属性组和附加分组属性组划分减少了进行哈希映射计算的属性长度,降低了哈希分组计算开销。
上述各实施例仅用于说明本发明,各部件的数据类型、应用位置及数据结构都是可以有所变化的,在本发明技术方案的基础上,凡根据本发明原理对个别部件进行的改进和等同变换,均不应排除在本发明的保护范围之外。

Claims (3)

1.一种基于函数依赖关系的OLAP分组聚集方法,其特征在于,该方法包括以下步骤:
1)根据数据仓库模式及参照完整性约束条件定义分组属性间的函数依赖树结构,确定数据仓库各个表中分组属性及表间属性之间的函数依赖关系;
2)查询执行时,对GROUP BY子句的分组属性按分组属性函数依赖树进行检测,确定其中包含的函数依赖属性集,以及各函数依赖属性组中的键属性;
3)将查询分组属性划分为两个分组,分别由函数依赖键属性和查询中键属性之外的其他分组属性组成,函数依赖键属性作为主要哈希键值属性进行哈希分组探测,其他分组属性作为附加属性存储但不参与哈希键映射计算;
4)对维表按函数依赖关系进行模式分解,确保每个表只存在一个函数依赖关系,表间记录的函数依赖关系由主-外键参照完整性约束条件来定义,维表使用代理键机制,采用内存列存储机制;
5)在维表模式分解和代理键索引机制下,分组聚集计算进一步将分组属性转换为对函数依赖键属性的分组聚集计算,在完成分组聚集计算后,按函数依赖键属性值直接映射到相关维表记录的内存偏移地址,完成抽取其他相关分组属性的操作,输出完整的SQL查询结果。
2.如权利要求1所述的一种基于函数依赖关系的OLAP分组聚集方法,其特征在于:所述步骤1)中,函数依赖树在维表上单独定义,或通过数据仓库产品中已有的OLAP建模工具中定义的维层次作为函数依赖关系树使用,OLAP建模工具中的维结构和维层次定义了维表上的函数依赖关系,定义查询分组属性候选集。
3.如权利要求1所述的一种基于函数依赖关系的OLAP分组聚集方法,其特征在于:所述步骤5)中,当分组属性包含外键属性及其参照表的属性时,使用外键属性进行分组聚集计算,在完成OLAP查询处理时,通过外键属性直接访问相应的参照表属性,完成OLAP查询结果输出。
CN201610232371.1A 2016-04-14 2016-04-14 一种基于函数依赖关系的olap分组聚集方法 Active CN105930388B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610232371.1A CN105930388B (zh) 2016-04-14 2016-04-14 一种基于函数依赖关系的olap分组聚集方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610232371.1A CN105930388B (zh) 2016-04-14 2016-04-14 一种基于函数依赖关系的olap分组聚集方法

Publications (2)

Publication Number Publication Date
CN105930388A CN105930388A (zh) 2016-09-07
CN105930388B true CN105930388B (zh) 2019-04-23

Family

ID=56838173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610232371.1A Active CN105930388B (zh) 2016-04-14 2016-04-14 一种基于函数依赖关系的olap分组聚集方法

Country Status (1)

Country Link
CN (1) CN105930388B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107562924A (zh) * 2017-09-14 2018-01-09 晶赞广告(上海)有限公司 基于列存储和键值存储的人群画像方法及系统
CN108182520A (zh) * 2017-12-22 2018-06-19 深圳市华云中盛科技有限公司 一种快速建模的方法及其系统
CN108153894B (zh) * 2017-12-29 2020-08-14 上海跬智信息技术有限公司 一种olap数据模型自动建模的方法、分类器装置
CN111752954B (zh) * 2020-06-29 2022-08-12 深圳前海微众银行股份有限公司 一种大规模特征数据存储的方法及装置
CN112765282B (zh) * 2021-01-18 2023-11-28 恒安嘉新(北京)科技股份公司 一种数据联机分析处理方法、装置、设备及存储介质
CN113204602B (zh) * 2021-05-07 2023-08-01 星环信息科技(上海)股份有限公司 数据处理方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286151A (zh) * 2007-04-13 2008-10-15 国际商业机器公司 建立多维模型和数据仓库模式的映射的方法及相关系统
US9164977B2 (en) * 2013-06-24 2015-10-20 International Business Machines Corporation Error correction in tables using discovered functional dependencies
CN104361113B (zh) * 2014-12-01 2017-06-06 中国人民大学 一种内存‑闪存混合存储模式下的olap查询优化方法

Also Published As

Publication number Publication date
CN105930388A (zh) 2016-09-07

Similar Documents

Publication Publication Date Title
CN105930388B (zh) 一种基于函数依赖关系的olap分组聚集方法
Freitag et al. Adopting worst-case optimal joins in relational database systems
Dehdouh et al. Using the column oriented NoSQL model for implementing big data warehouses
Rao et al. Spatial hierarchy and OLAP-favored search in spatial data warehouse
Faye et al. A survey of RDF storage approaches
Theoharis et al. Benchmarking database representations of RDF/S stores
CN103729392B (zh) 查询优化方法及查询编译器
US8914354B2 (en) Cardinality and selectivity estimation using a single table join index
CN105701200B (zh) 一种内存云计算平台上的数据仓库安全olap方法
US8825621B2 (en) Transformation of complex data source result sets to normalized sets for manipulation and presentation
WO2010091191A2 (en) Query optimizer with schema conversion
JP2005505058A5 (zh)
CN102867066B (zh) 数据汇总装置和数据汇总方法
US9477702B1 (en) Apparatus and method for accessing materialized and non-materialized values in a shared nothing system
CN102270232A (zh) 一种存储优化的语义数据查询系统
CN106326387B (zh) 一种分布式数据存储结构及数据存储方法和数据查询方法
CN103262076A (zh) 分析数据处理
Wu et al. Answering XML queries using materialized views revisited
Zhang et al. Improving performance by creating a native join-index for OLAP
May et al. Index vs. navigation in XPath evaluation
Tsois et al. Cost-based optimization of aggregation star queries on hierarchically clustered data warehouses.
Zeng et al. Efficient xml keyword search: from graph model to tree model
Mahboubi et al. Materialized view selection by query clustering in XML data warehouses
Luk et al. Group-by skyline query processing in relational engines
CN108052522A (zh) 一种对olap预计算模型进行动态优化的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant