面向列存储数据仓库的多维OLAP查询处理方法技术

技术编号:7759291 阅读:395 留言:0更新日期:2012-09-14 01:26
本发明专利技术公开了一种面向列存储数据仓库的多维OLAP查询处理方法。它将OLAP查询分解为位图过滤操作、分组操作和聚集操作。在位图过滤操作中,首先将谓词在维表上执行并生成谓词向量位图,通过代理键地址映射将连接操作转换为直接维表记录访问操作,实现按位置进行访问;在分组操作中,将满足过滤条件的事实表记录按SQL命令中的分组属性预生成分组单元并分配递增的ID;在聚集操作中,通过对事实表度量属性的一趟列扫描实现按事实表分组过滤向量的分组项进行分组聚集计算。本发明专利技术只需要对事实表进行一趟列扫描即可完成全部的OLAP处理任务,避免了多次扫描的代价。

【技术实现步骤摘要】

本专利技术涉及一种0LAP(联机分析处理)查询处理方法,尤其涉及一种面向列存储数据仓库,基于星型连接模型的多维OLAP查询处理方法,属于数据库管理

技术介绍
联机分析处理(On-Line Analytical Processing,简写为0LAP)的设计目标是满足决策支持或者多维环境下特定的查询和报表需求。数据仓库和OLAP是企业级决策处理的重要支撑技术。但是,海量数据上的OLAP性能难以满足日益增长的实时高性能分析处理的需求。 其性能的瓶颈主要体现在两个方面一是较低的硬盘I/o性能,二是查询处理技术不够优化。提高硬盘I/o性能的主流技术是列存储。列存储可以实现对数据按列存储和访问。目前,列存储数据库采用的查询处理技术主要有两类,一类是列数据查询处理技术,另一类是通过数据在内存的缓存将列存储数据动态转换为行存储数据,然后使用传统的行存储查询处理技术。列数据查询处理技术将关系代数细化为列代数,将关系操作分解为若干有序的列操作。列数据查询处理技术需要产生大量的物化连接索引和额外的列间连接操作代价,在OLAP查询中需要对事实表外键列进行两次扫描以完成过滤和分组操作,增加了额外的I/O访问开销。当前广泛采用的动态列/行转换查询处理技术,通过将数据按列访问提高投影操作的I/o效率,但在查询处理层次上仍然采用行存储的流水线(pipeline)查询处理技术。该流水线查询处理技术要对查询处理所需的连接数据进行先物化,当选择率较低时,大量物化数据最终被抛弃,消耗了额外的内存带宽资源,降低了内存处理性能。并行OLAP的主要应用场景是内存数据库。在行存储数据库中,具有代表性的技术是采用物化连接的方法将多个表物化为一个非规范化连接表,然后基于水平分片模式对可分布式聚集函数进行并行处理并合并聚集结果集。这种技术简化了查询处理的复杂度并提高了并行加速比,但需要付出较大的空间代价。在列存储模型上,具有代表性的技术是将执行代价大的列间连接操作进行逻辑水平分片后再并行连接,然后将并行连接结果合并后再参与其后的列操作。该技术实现过程简单,但串行处理的负载比例较高,整体并行处理资源未能得到充分的发挥。对于磁盘数据库的应用场景,并行OLAP的处理性能受磁盘并行访问I/O性能的制约,较少采用基于水平分片模式的并行处理技术,而是采用共享磁盘扫描模式的并发查询处理技术。该并发查询处理技术的核心是最小化OLAP的内存处理时间,使一个I/O延迟内能够处理尽可能多的并发查询任务。传统的哈希连接在并发查询处理负载下产生大量的哈希表,这些哈希表将耗尽系统的内存资源,从而导致哈希连接的性能变差。OLAP查询的选择率相对较高,因此并发查询处理面临更大的性能瓶颈,在实践中难以获得理想的性能。
技术实现思路
本专利技术所要解决的技术问题在于提供一种面向列存储数据仓库,基于星型连接模型的多维OLAP查询处理方法。该方法可以提高列存储的I/O性能,实现基于一趟列扫描基础上的OLAP查询处理。为解决上述的技术问题,本专利技术采用下述的技术方案一种面向列存储数据仓库的多维OLAP查询处理方法,将OLAP查询分解为位图过滤操作、分组操作和聚集操作,事实表和维表采用列存储模型进行存储,其特征在于在位图过滤操作中,首先将谓词在维表上执行并生成谓词向量位图。在查询处理时,顺序扫描连接操作对应的多个事实表外键属性列,通过代理键地址映射将连接操作转换为对位图的直接按位置访问操作,并抽取相应维表谓词向量中相应位进行与操作来判断该事实表记录是否满足连接过滤条件;在分组操作中,将满足过滤条件的事实表记录按SQL命令中的分组属性预生成分 组单元并分配递增的ID,并在事实表过滤分组向量中将该记录位置对应的向量值设置为当前分组ID ;在聚集操作中,通过对事实表度量属性的一趟列扫描实现按事实表过滤分组向量进行分组聚集计算。其中较优地,将维属性列加载到内存形成内存维属性数组,所述主键对应所述内存维属性数组的下标;事实表记录的外键属性值映射为对应维表中内存维属性数组的下标;所述事实表和所述维表通过外键与主键的对应关系完成多表连接操作。其中较优地,当内存不能容纳全部维表时,将查询处理中需要访问的维表分组属性列加载入内存形成内存维向量,在维表上进行谓词操作,将谓词操作结果存储在一个与维表等长的位图中,作为谓词向量来记录每一个维表记录对谓词操作结果的满足状态。其中较优地,预创建分组聚集哈希表和事实表过滤分组向量,所述分组聚集哈希表以查询中的分组属性和附加ID为对象进行预创建,所述事实表过滤分组向量为与事实表等长的数值型向量。其中较优地,顺序扫描事实表中具有维表连接关系的外键属性组,读取每一条外键属性组记录,将事实表外键属性值直接映射为谓词向量下标并取出谓词向量中该位所记录的位数据进行与操作;如果位运算结果为假,则继续读取下一条外键属性组记录;如果位运算结果为真,则将各个外键的值映射为维表分组属性向量的下标。其中较优地,抽取分组维属性向量中指定的数据项后进行哈希分组;如果当前哈希键值已存在,则取出该哈希分组ID并记入事实表过滤分组向量中与当前事实表记录相对应的位置中;如果当前哈希键值不存在,则在分组哈希表中创建一个新的哈希分组,并分配递增的ID,同时将该哈希分组ID记录在事实表连接向量中与当前事实表记录相应的位置上。其中较优地,在事实表外键属性组扫描完毕后,得到事实表过滤分组向量和预设的分组聚集哈希表,按最大ID值创建聚集函数的数组作为分组聚集累加器。其中较优地,当在所述事实表过滤分组向量中扫描到一个非零数据项时,按向量下标位置访问磁盘列存储的度量属性,并将度量属性值送入所述事实表过滤分组向量中哈希分组ID值对应的分组聚集累加器数组下标的单元中进行聚集计算。其中较优地,在所有的度量属性列完成聚集计算后,将分组聚集哈希表与各分组聚集累加器按ID和数组下标顺序进行合并,生成最终的OLAP聚集结果。其中较优地,如果查询处理过程中包含多个聚集函数,依次通过扫描事实表过滤分组向量的方式处理每个聚集函数。本专利技术具有如下的有益效果(I)无须借助于索引实现高性能OLAP查询处理;(2)通过代理键的地址映射实现事实表按外键属性直接定位到维表中相匹配的记录项,降低了连接算法的复杂度,提高了星型多表连接操作的性能和效率; (3)只需要对事实表进行一趟列扫描即可完成全部的OLAP处理任务,避免了多趟列扫描的代价;(4)能够支持各类聚集函数的并行处理。附图说明下面结合附图和具体实施方式对本专利技术作进一步的说明。图I为本专利技术所提供的⑶DTA-JOIN方法的数据结构和查询处理流程示意图;图2为对非代理键的维表主键进行键值转换的示意图;图3为行访问模式下的⑶DTA-JOIN方法示意图;图4为当查询中包含多个聚集函数时的并行⑶DTA-JOIN方法示意图;图5为采用事实表水平分片模式的并行⑶DTA-JOIN方法示意图;图6为对于不可分布聚集函数,以中位数聚集函数为例的多核并行算法示意图。具体实施例方式OLAP查询处理的核心是星型连接(star-join),即在事实表与多个维表连接的基础上对连接结果进行分组聚集计算。在此基础上,本专利技术提供了一种多维OLAP查询处理方法。该方法在列存储数据仓库的基础上实现高性能的内存星型连接处理,通过对事实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
...

【专利技术属性】
技术研发人员:张延松王珊
申请(专利权)人:中国人民大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1