CN103631911A - 基于数组存储和向量处理的olap查询处理方法 - Google Patents

基于数组存储和向量处理的olap查询处理方法 Download PDF

Info

Publication number
CN103631911A
CN103631911A CN201310616688.1A CN201310616688A CN103631911A CN 103631911 A CN103631911 A CN 103631911A CN 201310616688 A CN201310616688 A CN 201310616688A CN 103631911 A CN103631911 A CN 103631911A
Authority
CN
China
Prior art keywords
array
processing
vector
predicate
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
Application number
CN201310616688.1A
Other languages
English (en)
Other versions
CN103631911B (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 CN201310616688.1A priority Critical patent/CN103631911B/zh
Publication of CN103631911A publication Critical patent/CN103631911A/zh
Application granted granted Critical
Publication of CN103631911B publication Critical patent/CN103631911B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于数组存储和向量处理的OLAP查询处理方法。在该方法中,根据数据仓库模式中的参照完整性约束对主-外键进行数组下标映射,使维表主键与事实表外键直接映射为数组下标地址,将复杂的模式转换为一个虚拟物化表,为不同的查询提供统一的数据访问视图。OLAP查询被简化为谓词处理、分组处理和聚集处理三个阶段。在谓词处理阶段使用选择向量多趟处理多个谓词在事实表上的选择结果,在分组处理阶段使用分组向量为每一个满足谓词条件的事实表记录分配分组数组下标,在聚集处理阶段使用聚集向量为聚集函数提供基于数组的聚集器。本发明简化了复杂模式下的OLAP查询处理过程,消除了表间的连接操作,提高了OLAP查询处理时的代码执行效率。

Description

基于数组存储和向量处理的OLAP查询处理方法
技术领域
本发明涉及一种OLAP(联机分析处理)查询处理方法,尤其涉及一种基于数组存储和向量处理的OLAP查询处理方法,属于数据库管理技术领域。
背景技术
数据库技术可以分为事务型查询处理(on-line transactionprocessing,OLTP)和分析型查询处理(on-line analytical processing,OLAP)两种主要类型,其中,分析型查询处理技术以采用多维存储模型(星形模型或雪花形模型)的数据仓库和多维分析处理OLAP为代表。
数据仓库中存储有海量数据,具有复杂的模式(数量众多的维表和复杂的多维数据结构),分析型查询具有复杂的多表连接操作和较多的分组聚集操作,其数据存储访问效率和查询处理性能是制约数据仓库应用的关键问题。
当前,数据仓库和分析型数据库普遍采用列存储技术以提高大数据的存储访问效率:列存储一方面在表属性较多但查询访问属性较少的分析型查询中能够根据查询命令只访问查询指定的属性,从而提高查询时的数据访问I/O效率或内存带宽效率;另一方面列存储将相同类型的数据连续存储,更加适合采用数据压缩技术,提高压缩效率。与行存储数据库采用的一次一条记录的迭代查询处理技术不同,列存储采用一次一列的查询处理技术,逻辑记录的处理过程被投影到多个列上,需要通过每个列处理后所产生的物化的中间列数据(记录的列处理输出记录的OID或值,如荷兰CWI的开源内存数据库MonetDB所采用的BAT存储和查询处理技术),记录查询相关属性每个列处理阶段的中间结果。这种列式查询处理技术会产生大量中间结果,增加查询处理时的空间代价和CPU执行代价,多个属性列上的谓词操作也会产生额外的中间OID列间的连接操作代价,这些额外的物化和列间连接操作代价减弱甚至抵消了列存储所带来的存储访问性能收益,而且列式处理在分组聚集操作中难以使用效率较高的哈希分组聚集技术。
当前主流的列存储分析型数据库,如MonetDB/X100、VectorWise、Greenplum、Vertica等通常采用向量处理技术(即一次将查询相关多个列按相同的向量长度加载到内存处理),将列存储转换为动态行存储结构,在列存储模型上实现基于流水线(pipelining)的行式处理,消除中间结果的物化和处理代价,并且更好地与传统的行存储查询处理引擎保持兼容,但这种行式流水线查询处理技术在代码执行效率(流水线处理一条记录时需要流水线上完整的处理代码)和数据传输效率(完整的记录在流水线操作符间的流动)方面相对于列存储(每列只执行相同的列处理代码,不传输无关的数据)有较大的不足。因此,列存储上的列式处理所面临的关键问题是如何最小化列处理时的中间数据物化代价和最小化列间连接操作代价。
除此之外,现有的OLAP查询处理主要涉及谓词处理、分组和聚集计算三个过程:在谓词处理过程中,列存储一次一列的处理技术具有较高的性能,但当谓词属性较多时,多个谓词属性处理的中间结果需要连接操作以合并谓词操作结果;而分组和聚集计算操作通常合二为一,将分组和聚集属性物化为输出记录后统一进行分组聚集处理(排序分组聚集或哈希分组聚集)。对于聚集计算的度量属性来说,列式处理具有更好的I/O或带宽效率,对于不同类型的聚集函数也能独立地支持。如聚集函数中既包含简单的SUM、COUNT等聚集函数,也包含MEDIAN中位数等复杂的聚集函数时,统一的哈希分组聚集计算增加了其复杂性。
发明内容
本发明所要解决的技术问题在于提供一种基于数组存储和向量处理的OLAP查询处理方法。该方法一方面通过数组列存储进一步优化列存储OLAP的性能,另一方面将传统的OLAP查询处理技术向量化,使其更好地适合未来众核协处理器平台的计算特点,提高OLAP性能。
为实现上述的发明目的,本发明采用下述的技术方案:
一种基于数组存储和向量处理的OLAP查询处理方法,根据数据仓库模式中的参照完整性约束关系在数据仓库设计底层完成数据的数组存储,数组存储采用数组下标作为隐式或显式的主键,所述参照完整性约束关系定义的主-外键参照关系转换为外键所在的表与主键所在的表之间的数组下标参照关系,使维表与事实表通过主-外键的参照关系直接映射为数组下标地址,使表间连接操作被虚拟物化表内部的数组地址访问替代,将OLAP查询简化为谓词处理、分组处理和聚集处理三个阶段,以向量为辅助数据结构,通过列式处理完成查询处理;其中,
在谓词处理阶段使用共享的选择向量多趟处理多个谓词在事实表上的选择结果;
在分组阶段使用分组向量为每一个满足谓词条件的事实表记录分配分组数组下标;
在聚集计算阶段使用聚集向量为聚集函数提供基于数组的聚集器。
其中较优地,所述参照完整性约束关系将多个表通过主-外键参照关系逻辑地构造成一个统一的视图;
事实表外键根据所述主-外键之间的参照完整性约束关系更新为维表主键对应的数组下标,更新后维表主键列消除,即具有参照完整性关系的表中的外键直接映射为维表属性数组的下标,替代从外键向维表主键的连接操作,通过数组下标参照实现表间数据的直接地址访问。
其中较优地,所述虚拟物化表是一个动态的虚拟物化视图;
所述虚拟物化视图通过外键内部的数组地址映射机制实时地在原始模式上动态构建查询视图,根据查询视图所包含的属性和属性所在的表动态地为虚拟属性设置嵌套的数组下标,实现对虚拟属性的访问。
其中较优地,所述虚拟物化表上的记录属性包括两类:事实表度量属性为实际记录属性,维表记录属性为逻辑属性,所述虚拟物化表将事实表记录属性和相关的维表记录属性逻辑地连接为一个虚拟记录,将OLAP查询处理简化为在此虚拟物化表上的查询处理。
其中较优地,所述多趟处理多个谓词是在共享的选择向量上多趟地更新谓词结果集数组下标;
所述选择向量记录每一个谓词操作所产生的满足谓词条件记录的数组下标,每一个谓词操作按照上一个谓词操作在选择向量上记录的数组下标随机访问当前谓词属性数组并执行当前谓词操作,新的谓词操作结果在选择向量上实时更新,用满足条件的数组下标覆盖不满足条件的数组下标。
其中较优地,按照谓词选择率确定谓词操作的顺序,对低选择率谓词优先处理。
其中较优地,所述选择向量中使用两个指针,一个写指针和一个读指针,其中所述读指针指向当前需要访问的数组下标位置,所述写指针指示不满足当前谓词条件的数组下标位置,并由其后满足谓词条件的数组下标覆盖。
其中较优地,所述聚集处理阶段使用多个同构的聚集向量支持列式聚集计算;
所述聚集向量是一个分组多维数组,每一个聚集表达式使用一个独立的多维分组聚集数组作为聚集器,对应不同聚集属性列上的聚集处理,通过所述选择向量在度量属性上选择指定位置的度量属性值,按照所述分组向量将其映射到聚集向量的数组下标位置进行聚集计算。
其中较优地,所述选择向量支持多个谓词的列式处理,所述分组向量支持多个分组属性以列式访问构造分组,在所述选择向量的基础上增加一个所述分组向量,相同的向量位置记录满足谓词条件的记录对应的分组多维数组下标;
所述选择向量和所述分组向量被所有度量属性共享访问。
其中较优地,所述选择向量的操作和所述分组向量的操作可以合并;当维表上有谓词操作和分组属性时,所述分组向量同时起到谓词过滤和分组的作用。
本发明是一种基于数组存储和向量处理的OLAP查询处理方法。把事实表中的外键值映射为维表属性数组下标,事实表与维表所构成的星形模型或雪花形模型能够通过主-外键参照关系连接为一个统一的数据视图,从事实表记录出发,根据外键映射的维表属性数组地址,能够直接(星形模型)或间接(雪花形模型)访问到任何一个维表属性值。数组存储的数组下标映射机制能够在模式层直接映射出一个统一的外模式(单表结构),从而使多样化的分析查询任务映射为统一的单一关系上的查询处理,简化查询处理引擎的设计并提高效率。在单一关系模式上的OLAP查询处理过程中,划分为独立的谓词处理、分组处理和聚集处理过程,并通过向量等辅助数据结构指示每一个处理过程的计算方法,最小化列处理时的中间数据物化代价和列间连接操作代价,提高了OLAP查询处理效率。
附图说明
图1为星形模型测试基准SSB的结构示意图;
图2为图1对应的虚拟物化表示意图;
图3为雪花形模型对应的虚拟物化表示意图;
图4为TPC-H测试基准结构示意图;
图5为图4对应的虚拟物化表示意图;
图6a为基于多个谓词处理的位图在查询处理时谓词操作过程的示意图;
图6b为基于多个谓词处理的递减向量在查询处理时谓词操作过程的示意图;
图7为分组向量的生成过程示意图;
图8为基于选择向量、分组向量和聚集向量的OLAP查询处理过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的详细说明。
本发明提供了一种基于数组存储和向量处理的OLAP查询处理方法。该方法简化了数据仓库复杂的多维数据模型的存储和处理,根据数据仓库模式中的参照完整性约束在数据仓库设计底层完成数据的数组存储,数组存储采用数组下标作为隐式或显式的主键,参照完整性约束关系定义的主-外键参照关系转换为外键所在的表与主键所在的表之间的数组下标参照关系,使维表与事实表通过主-外键的参照关系直接映射为数组下标地址,通过数组下标能够直接访问任何一个数组成员,将复杂的模式转换为一个虚拟物化表(Virtual Universal Table),为不同的查询提供统一的数据访问视图,简化查询处理过程。表间连接操作被虚拟物化表内部的数组地址访问替代,OLAP查询简化为谓词处理、分组处理和聚集处理三个阶段,以向量为辅助数据结构,通过列式处理完成查询处理;在谓词处理阶段使用选择向量多趟处理多个谓词在事实表上的选择结果,在分组阶段使用分组向量为每一个满足谓词条件的事实表记录分配分组数组下标,在聚集计算阶段使用聚集向量为聚集函数提供基于数组的聚集器。数据存储和向量处理简化了复杂模式下的OLAP查询处理过程,提高了OLAP查询处理时的代码执行效率,其向量处理技术尤其适合拥有众多计算核心的协处理器平台。下面对这一过程做详细的说明。
在本发明所提供的OLAP查询处理方法中,使用数组存储属性列连续的数据。数组存储可以看作是一种特殊的列存储方案,列数据以定长数组形式存储。但与单纯的列存储不同,数组是一个二元结构,即数组由隐式的数组下标和数组成员构成,通过数组下标能够直接访问任何一个数组成员,也就是说,数组下标是一个隐式的数据指针。因此,数组存储不仅具有通用列存储按查询命令只访问所需要属性的特征,而且具有按指定位置直接访问列中特定数据项的能力,这对于OLAP查询在低选择率时进一步提高列存储的I/O或内存带宽效率具有重要的作用。在本发明中,数组为定长存储,字符串数据存储其起始地址(即字符串数组起始地址),数组内可采用轻量压缩算法,主要采用面向OLAP中维层次属性低势集特点的字典表压缩技术和前缀压缩技术,保证数组的定长存储特点。如“cust00001”存储为前缀“cust00000”和压缩值1。在内存中,数组存储为连续的内存地址,在外存中数组存储为磁盘或闪存中顺序的存储区域,支持根据数组下标对数据的随机访问操作。
在本发明的一个实施例中,在数据仓库底层进行数据仓库设计时完成数据的数组存储,利用主-外键之间的参照完整性约束关系直接映射为数组下标地址,将主-外键连接操作消除,转换为数组下标地址引用,实现表间数据的直接访问。数组存储采用数组下标作为隐式或显式的主键,参照完整性约束关系所定义的主-外键参照关系转换为外键所在的表与主键所在的表之间的数组下标参照关系,即外键相当于指向主键所在表中记录的指针。数组存储的特征一方面体现于它是采用简单的数组数据结构的列存储模型,具有列存储的访问效率和数据压缩效率,另一方面体现于通过主-外键参照关系中的数组下标参照(ArrayIndex Referencing,简称为AIR)将主-外键连接操作消除,转换为数组下标地址引用,实现表间数据的直接访问,在存储访问层消除传统的基于值匹配的连接操作,将模式中的不同关系连接为一个统一的虚拟视图。在统一的虚拟视图的基础上,复杂的多维OLAP查询转换为在单一关系上的简单查询。
通过这种数组地址参照关系,复杂模式形成一个连接表。该连接表能够为用户提供一个统一的虚拟物化视图,因此称为虚拟物化表。查询相关的属性可以通过数组地址参照(AIR)动态构建一个虚拟物化视图,支持用户在虚拟物化视图上的简单查询处理。这样消除了事实表与维表之间的连接操作,提高了数据存储访问效率和查询处理性能。
其中,在数组存储模型中,表间的参照完整性约束关系定义了表间记录的参照关系。维表的主键(代理键,数据仓库通常采用连续1,2,3,…作为维表主键)被替换为数组下标,实现主键与数组存储之间的键值-地址直接映射,主键可以显式存储或隐式存储(即不存储主键列)。事实表外键根据主-外键之间的参照完整性约束关系更新为维表主键对应的数组下标,更新后维表主键列可以消除。即具有参照完整性关系的表中的外键可以直接映射为维表属性数组的下标,替代从外键向维表主键的连接操作,通过数组下标参照实现表间数据的直接地址访问。当两个表R和S具有参照完整性约束关系,但被参照表R的主键为复合键时(即多个属性组合而成为主键),需要为R表和S表增加额外的数组主键列和数组外键列,即在R表中增加数组主键列R_AK,为每一个复合键标示其数组下标值,在S表中增加一个数组外键列S_FAK,更新列数据为S表记录在参照的R表中的数组主键值。在R表和S表中更新复合主-外键后,原有的复合主-外键可以删除,用新的数组主-外键代替R表和S表中原始的主-外键。这种数组存储模型中主-外键之间的参照访问方式称为数组下标参照(AIR),对应于传统数据库中基于主-外键的连接操作,减少了连接操作代价,提高了查询处理效率。
数据仓库是面向主题的数据库,也就是说不管数据仓库采用的是多么复杂的星形模型或雪花形模型,在外模式层次上,为用户提供的是单一的数据逻辑视图。在本发明中,数据仓库面向主题的模式设计主要通过参照完整性约束关系将多个表通过主-外键参照关系逻辑地构造成一个统一的视图,本发明所提出的数组下标参照技术进一步将数据仓库模式所定义的逻辑视图转换为一个以数组下标为基础的物理访问视图,实现在逻辑视图上对数据的直接访问,简化查询处理引擎的设计并提高效率。
以AIR技术为基础,数据仓库的多维存储模型(星形模型和雪花形模型)转换为以事实表记录为起点的一个有向图,即事实表和维表记录为节点,事实表与维表之间或维表与下层维表之间的外键为有向边,从事实表记录出发,能够在一个星形模型或多个雪花形模型的AIR访问中访问到与事实表记录关联的任何维表属性。
通过这种有向图访问路径,以数组存储和数组下标参照技术为基础,一个复杂的模式可以优化为一个统一的虚拟物化视图,每一个事实表记录可以根据主-外键数组下标参照技术直接获取每一个所需要的维表属性值,如同拥有一个物化连接表。复杂模式通过一级或多级主-外键参照关系构成一个连接图,通过数组下标的嵌套访问能够从事实表记录直接或间接访问查询所需的各个属性。虚拟物化表是一个动态的虚拟物化视图,根据查询所包含的属性和属性所在的表动态地为虚拟属性设置嵌套的数组下标,实现对虚拟属性的访问。虚拟物化表上的记录属性包括两类:事实表度量属性为实际记录属性,维表记录属性为逻辑属性,即需要通过外键的数组下标参照间接访问。虚拟物化表将事实表记录属性和相关的维表记录属性逻辑地连接为一个虚拟记录,从而将复杂的OLAP查询处理简化为在此虚拟物化表上的简单查询处理,大大简化了查询处理过程,从而提高了OLAP查询处理效率。
如图1所示,星形模型的测试基准SSB对应的是一个事实表与四个维表,图2为图1对应的虚拟物化表示意图。本发明所提供的基于数组存储和向量处理的OLAP查询处理方法,表中的各个属性存储在以属性名命名的内存数组,维表主键规范化为维表数组下标,事实表外键存储的是事实表记录关联的维表记录数组下标,通过外键能够直接以数组地址加上数组下标得到关联维表属性的内存地址。图2中显示了事实表与其中三个维表部分属性所构成的虚拟物化视图,每个关联的维表属性通过存储在事实表外键中的数组下标能够直接访问,如事实表数组下标为i的记录对应的s_nation,d_year,c_region属性可以通过数组s_nation[lo_SK[i]],d_year[lo_DK[i]],c_region[lo_CK[i]]直接访问。事实表外键列相当于虚拟物化表视图的“轴”,能够将任何需要访问的属性以外键为数组下标“贴”到事实表属性上形成查询视图。通用的物化视图技术需要将表物理地连接到一起,形成一个统一的物理视图,消除连接操作。物化视图存储开销大,需要物理地改变数据库的模式。本发明所提出的基于数组下标参照技术的虚拟物化表技术实现了一种动态的虚拟物化视图机制,能够根据不同的查询实时地生成虚拟物化视图,视图数据不是通过物理地连接到一起,而是通过外键内部的数组地址映射机制实时地在原始模式上动态构建查询视图。
图3为具有维层次结构的雪花形模型的虚拟物化表示意图。雪花形模式是星形模式的扩展,是对维表的进一步分解。维表的层次结构通过主-外键关联形成一个层次结构,事实表外键可以映射到第一级维表记录数组下标,然后通过第一级维表外键映射到下一级维表记录下标,也就是说事实表外键通过“多跳”(多个外键数组下标映射操作)访问到维层次的具体属性值。图3的虚拟物化表结构示意图显示了这种嵌套的地址下标结构,对应传统的级联多表连接操作。在数据库的模式确定以后,雪花形模型各维属性的访问路径已经确定,可以预先定义从事实表到各级维表访问的嵌套数组下标结构,在虚拟物化表中可以直接使用对应的嵌套数组下标地址访问指定的维属性值。
图4为TPC-H测试基准的模式。TPC-H是一个具有双事实表结构的雪花形模型,PARTSUPP和LINEITEM是两个事实表,分别与PART和SUPPLIER维表关联,LINEITEM、ORDER、CUSTOMER构成雪花形维层次,NATION和REGION为共享维层次结构,分别与CUSTOMER、SUPPLIER关联。雪花形模式部分的虚拟物化表访问如图3所示。PARTSUPP和LINEITEM是两个事实表,但PARTSUPP通过复合键PARTKEY、SUPPKEY与LINEITEM具有参照完整性约束关系,如图5所示,在事实表中增加一个额外的外键l_PSK,与PARTSUPP的隐式数组下标构成主-外键,代替复合键PARTKEY、SUPPKEY成为PARTSUPP和LINEITEM之间的数组下标参照AIR关系。从事实表LINEITEM到维表PART和SUPPLIER存在两条访问路径,PARTSUPP事实表可以作为事实表LINEITEM到维表PART和SUPPLIER访问的中间节点,事实表LINEITEM也可以实现到维表PART和SUPPLIER的直接访问。通过附加数组下标参照列l_PSK的创建,TPC-H能够提供一个统一的虚拟物化视图,从事实表记录能够通过一个或几个数组下标转换操作访问任何维属性,为查询动态创建所需要的单一数据视图。
与传统基于流水线的连接技术相比,基于数组下标参照的虚拟物化表查询处理相当于在连接操作的流水线处理中进一步优化了连接代价,根据数据仓库模式中的参照完整性约束在数据仓库设计底层完成数据的数组存储,用基于数组下标的地址访问代替了基于值匹配的连接操作。基于流水线的查询处理技术需要同时从多个不同的列地址区域并行数据访问,增大了内存带宽访问冲突,而且多个谓词属性的处理在低选择率时产生大量的分支预测缺失,降低缓存(cache)效率。而基于向量处理的OLAP查询优化技术将典型的OLAP查询简化为三个阶段:谓词处理阶段、分组处理阶段和聚集处理阶段,以向量为辅助数据结构,通过列式处理完成查询处理。使用一个选择向量支持多个谓词的列式处理,使用一个分组向量支持多个分组属性以列式访问构造分组,使用多个同构的聚集向量支持列式聚集计算。将分组处理与聚集处理相分离,降低了其处理过程的复杂度,提高了查询效率。
在谓词处理时,使用一个共享的选择向量用于多个谓词处理,选择向量记录每一个谓词操作所产生的满足谓词条件记录的数组下标,每一个谓词操作按照上一个谓词操作在选择向量上记录的数组下标随机访问当前谓词属性数组并执行当前谓词操作,新的谓词操作结果在选择向量上实时更新,即选择向量在多趟谓词处理过程中更新每一次谓词过滤记录的数组下标,每一个谓词属性列的访问都是基于当前选择向量中所记录的数组下标进行的随机地址访问,并用当前谓词处理结果更新选择向量的数组下标值,用满足条件的数组下标覆盖不满足条件的数组下标,保证选择向量提供一个连续的满足谓词条件的数组下标序列用于标识当前和最终的谓词操作结果,通过多趟谓词处理和选择向量更新过程生成最终的选择向量。多个谓词处理是一个在共享的选择向量上多趟地更新谓词结果集数组下标的过程,当谓词数量较多时,共享选择向量机制和基于选择向量的多趟谓词处理机制能够有效的减少中间物化数据代价。
如图6a所示,基于多个谓词处理的位图在查询处理时谓词操作过程的示意图。一般列存储上的多谓词操作通常采用两种执行方案:一种方案是MonetDB(开源内存数据库)分别执行各列的谓词操作,物化选择出记录的OID(对象标示),通过OID之间的连接操作获得最后的谓词操作结果;另一种方案是C-store和HANA采用将各列谓词操作结果记录在位图中,通过位图与操作获得最终的谓词操作结果(参见图6a)。在这两种谓词处理方案中,各谓词列需要执行全列扫描操作,而且需要额外的OID连接或位图与操作代价。
为此,本发明提出如图6b所示的选择向量迭代处理技术。显示了在虚拟物化表上查询处理时谓词操作的工作过程。如图6b所示,首先按照谓词选择率确定谓词操作的顺序,对低选择率谓词优先处理,最大限度降低列数据访问代价。选择率的确定由维表上的谓词向量决定,为精确的选择率,而不是通过对谓词选择率估算而得到的模糊的选择率。谓词操作的结果从位图存储转换为向量存储,即只存储满足谓词条件的数组下标,最大限度的节省了内存空间。如s_region列扫描后选择向量中存储0、2、5三个满足谓词条件记录的下标。对第二个谓词列c_region的处理则根据选择向量中存储的数组下标值随机访问,即只访问c_region中数组下标为0,2,5的值并进行当前的谓词处理。满足谓词条件的数组下标保留,不满足谓词条件的数组下标被其后满足条件的数组下标所覆盖,保证选择向量更新为满足当前谓词条件的顺序数组下标序列。在本发明的一个实施例中,在选择向量中使用两个指针,一个是写指针(Wp),一个为读指针(Rp),读指针指向当前需要访问的数组下标位置,写指针指示当前位置为不满足当前谓词条件的数组下标,由其后满足谓词条件的数组下标覆盖。通过共享选择向量和多趟数组下标更新操作,选择向量不断根据当前谓词操作结果进行实时更新,直到处理完全部的谓词。在谓词处理过程中,选择向量数据结构在查询间可以重用,查询执行时进行初始化。谓词操作在列上执行的是随机访问,能够有效利用谓词选择率降低列数据访问代价,同时用选择向量多趟更新操作代替了OID列连接操作和位图与操作,降低了多谓词处理的CPU代价。
在分组处理时,首先通过在维表上的谓词操作创建分组向量(即选择出满足谓词条件的分组属性向量或分组属性组向量),并对分组向量进行字典编码,字典表存储于数组中,编码值为字典表数组下标,不满足谓词条件的维记录在向量中可以标识为-1;根据查询中分组的顺序构建一个多维数组用作分组器,称为分组多维数组。如定义分组多维数组Agg[2][3]表示有两个分组属性,第一个分组属性有两个成员a0,a1,第二个分组属性有三个成员b0,b1,b2,分组多维数组的下标对应不同的分组项编码,如Agg[1][2]表示记录的分组属性值为a0b1;将分组多维数组下标转换为一维下标后可以作为记录的分组ID存储于分组向量中。在选择向量的基础上增加一个分组向量,相同的向量位置记录满足谓词条件的记录对应的分组多维数组下标,分组多维数组下标的计算采用列式加权累加计算,即根据分组多维数组下标计算方法(如分组三维数组A[m][n][p],数组下标可以用公式a[i][j][k]=a[i*n*p+j*p+k]转换为一维数组下标),将当前分组属性维上的数组下标加权累加到分组向量中,分组属性的访问顺序可以与查询中分组属性的顺序不同。与选择向量类似,不论分组属性数量的多少,分组向量只需要创建一个,对分组属性的访问采用效率较高的列式访问,分组属性在扫描时实时更新分组向量内容。对于数据仓库应用,一个模式可以预先创建一个选择向量和一个分组向量,每个查询在执行时实时初始化向量内容,向量在查询间可以复用向量数据结构。
如图7所示,在维表谓词处理阶段将满足维表谓词条件的分组属性投影出来并进行字典压缩,将数组字典表数据项下标存储于向量中,构建分组向量,分组向量成员的数量构成分组多维数组各维的大小,分组向量中存储的非负值代表其在分组多维数组中当前维上的取值。谓词操作首先生成选择向量,然后根据选择向量在虚拟物化表的分组属性列访问对应的外键数组,将对应数组值映射到分组向量中对应的下标位置,获得该分组属性的维编码值,然后通过分组多维数组下标计算公式将其更新到分组向量对应的数组单元中。
选择向量的操作和分组向量的操作可以合并。当维表上既有谓词操作又有分组属性时,分组向量同时起到谓词过滤和分组的作用:非负值代表满足谓词条件,值代表分组在多维数组中的下标分量;负值代表当前记录不满足谓词条件。在对分组属性的访问时可以同步更新选择向量和分组向量。
在本发明的一个实施例中,采用多维数组作为分组的入口地址空间。首先将谓词操作作用于维表上并投影出相关的分组向量,对分组向量进行字典表压缩,将字典表存储于数组并用数组下标替换分组向量。字典表中成员的数量确定当前分组维的大小,分组向量中的值代表其在多维数组中的维坐标分量。通过选择向量依次随机扫描各个分组属性,将分组属性下标映射到分组向量并获得维坐标分量,根据多维数组下标计算公式将当前坐标值加权累加到分组向量中。通过多趟的分组属性处理,分组向量更新为最终的多维数组下标,用于为聚集计算提供分组的多维分组聚集数组入口地址。
然后,根据谓词处理阶段生成的分组向量创建聚集向量,即多维分组聚集数组,作为每一个聚集表达式的聚集器。使用多个同构的聚集向量支持列式聚集计算。而聚集向量的结构由聚集函数决定,如SUM聚集函数使用单一数组单元作为累加器,AVER聚集函数需要为每一个分组保留SUM和COUNT两个累加器,通过选择向量从度量属性列中访问指定位置的度量属性值,并根据对应的分组向量值将度量属性值映射到聚集向量对应的数组下标位置进行聚集计算。该技术相当于列存储的哈希分组聚集计算,适合于不同特性聚集函数的使用。当查询中包含多个不同特性的聚集函数时,如sum、aver、median,传统的行式哈希分组聚集计算难以解决问题,必须使用列式聚集计算。
其中,选择向量和分组向量被所有度量属性共享访问。每一个聚集表达式使用一个独立的多维分组聚集数组,对应不同聚集属性列上的聚集处理。所有聚集计算完成之后,各个多维分组聚集数组对应坐标单元进行合并,并将多维数组下标映射到维表分组向量字典表中获取原始的分组属性值,并合并为最终输出的分组聚集结果集。
图8显示了一种基于选择向量、分组向量和聚集向量的OLAP查询处理过程。其中,分组c_nation有两个成员,s_nation有三个成员,分组多维数组Agg[2][3]中某数组元素Agg[i][j]的下标计算公式为i*3+j,其中i来自c_nation,j来自s_nation。我们首先处理分组属性c_nation,如选择向量的第一个成员值为0,对应的外键数组下标0中存储的值为2,对应的分组向量下标2中存储的值为1,则当前分组多维数组下标的值更新为1*3+0=3,存储于分组向量下标为0的单元中。处理完选择向量对应的所有分组属性后,我们获得当前的分组向量,当前分组向量的下标值只表示二维数组Agg[2][3]第一维的下标值。然后再按照同样的方法处理分组属性s_nation,将第二维的下标累加到分组向量中,获得最终的分组向量,此时,分组向量中存储的是对应的输出事实表记录在分组多维数组中的下标位置值。
对于多个聚集函数,我们构建多个同构的多维数组用于聚集计算,这些多维数组称为聚集向量。当前的选择向量和分组向量被多个度量属性所共享,通过选择向量在度量属性列上访问指定位置的数据,按对应的分组向量映射到聚集向量指定的数组下标位置进行聚集计算。
在完成查询处理后,将聚集向量中的值按多维下标值向维表分组字典表映射,获得对应的原始分组属性值,输出查询处理结果。
在现有技术中,连接操作仍然是最核心的优化技术和难点问题,复杂模式导致连接优化代价迅速提高。列存储提高了数据访问效率,但没有改变连接操作的本质,而且列处理模型会增加额外的物化数据代价和额外的列连接操作代价。本发明是一种数组化的OLAP存储和向量化查询处理实现技术,通过数组存储、数组下标主键、数组下标外键、数组下标参照和基于向量的OLAP查询处理技术实现简单高效的OLAP查询处理。采用列存储访问优化技术,通过数组下标的内存地址访问特性将复杂模式在物理访问层连接为一个整体,实现了复杂模式上的单一数据访问视图,从而消除传统连接操作优化的问题,通过共享的选择向量和分组向量降低了列式处理的中间物化代价,提高了列式处理的性能,而且这种完全数组化存储和向量化处理的特点能够较好地适应多核处理器和众核协处理器强大向量处理能力的特点,支持在多核处理器和众核处理平台上的高性能OLAP查询处理。
本发明不仅适用于内存平台上的OLAP技术,由于本发明使用较小的维表向量和共享的选择向量和分组向量,同样适用于基于flash数据库的OLAP和基于磁盘数据库的OLAP技术,选择向量对度量属性的随机访问操作在flash存储和磁盘存储上都产生明显的优化作用。
以上对本发明所提供的基于数组存储和向量处理的OLAP查询处理方法进行了详细的说明。对本领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。

Claims (10)

1.一种基于数组存储和向量处理的OLAP查询处理方法,根据数据仓库模式中的参照完整性约束关系在数据仓库设计底层完成数据的数组存储,数组存储采用数组下标作为隐式或显式的主键,所述参照完整性约束关系定义的主-外键参照关系转换为外键所在的表与主键所在的表之间的数组下标参照关系,使维表与事实表通过主-外键的参照关系直接映射为数组下标地址,使表间连接操作被虚拟物化表内部的数组地址访问替代,其特征在于将OLAP查询简化为谓词处理、分组处理和聚集处理三个阶段,以向量为辅助数据结构,通过列式处理完成查询处理;其中,
在谓词处理阶段使用共享的选择向量多趟处理多个谓词在事实表上的选择结果;
在分组阶段使用分组向量为每一个满足谓词条件的事实表记录分配分组数组下标;
在聚集计算阶段使用聚集向量为聚集函数提供基于数组的聚集器。
2.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
事实表外键根据所述主-外键之间的参照完整性约束关系更新为维表主键对应的数组下标,更新后维表主键列消除,即具有参照完整性关系的表中的外键直接映射为维表属性数组的下标,替代从外键向维表主键的连接操作,通过数组下标参照实现表间数据的直接地址访问。
3.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
所述虚拟物化表是动态的虚拟物化视图;所述虚拟物化视图通过外键内部的数组地址映射机制在原始模式上动态构建查询视图,根据查询视图所包含的属性和属性所在的表动态地为虚拟属性设置嵌套的数组下标,实现对虚拟属性的访问。
4.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
所述虚拟物化表上的记录属性包括两类:事实表度量属性为实际记录属性,维表记录属性为逻辑属性,所述虚拟物化表将事实表记录属性和相关的维表记录属性连接为一个虚拟记录,将OLAP查询处理简化为在所述虚拟物化表上的查询处理。
5.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
所述多趟处理多个谓词是在共享的选择向量上多趟地更新谓词结果集数组下标;所述选择向量记录每一个谓词操作所产生的满足谓词条件记录的数组下标,每一个谓词操作按照上一个谓词操作在选择向量上记录的数组下标随机访问当前谓词属性数组并执行当前谓词操作,新的谓词操作结果在选择向量上实时更新,用满足条件的数组下标覆盖不满足条件的数组下标。
6.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
在所述谓词处理阶段中,按照谓词选择率确定谓词操作的顺序,对低选择率谓词优先处理。
7.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
所述选择向量中使用两个指针,一个写指针和一个读指针,其中所述读指针指向当前需要访问的数组下标位置,所述写指针指示不满足当前谓词条件的数组下标位置,并由其后满足谓词条件的数组下标覆盖。
8.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
在所述聚集处理阶段中,使用多个同构的聚集向量支持列式聚集计算;所述聚集向量是一个分组多维数组,每一个聚集表达式使用一个独立的多维分组聚集数组作为聚集器,对应不同聚集属性列上的聚集处理,通过所述选择向量在度量属性上选择指定位置的度量属性值,按照所述分组向量将其映射到聚集向量的数组下标位置进行聚集计算。
9.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
所述选择向量支持多个谓词的列式处理,所述分组向量支持多个分组属性以列式访问构造分组,在所述选择向量的基础上增加所述分组向量,相同的向量位置记录满足谓词条件的记录对应的分组多维数组下标;所述选择向量和所述分组向量被所有度量属性共享访问。
10.如权利要求1所述的基于数组存储和向量处理的OLAP查询处理方法,其特征在于:
当维表上有谓词操作和分组属性时,所述分组向量同时起到谓词过滤和分组的作用。
CN201310616688.1A 2013-11-27 2013-11-27 基于数组存储和向量处理的olap查询处理方法 Active CN103631911B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310616688.1A CN103631911B (zh) 2013-11-27 2013-11-27 基于数组存储和向量处理的olap查询处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310616688.1A CN103631911B (zh) 2013-11-27 2013-11-27 基于数组存储和向量处理的olap查询处理方法

Publications (2)

Publication Number Publication Date
CN103631911A true CN103631911A (zh) 2014-03-12
CN103631911B CN103631911B (zh) 2017-11-03

Family

ID=50212952

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310616688.1A Active CN103631911B (zh) 2013-11-27 2013-11-27 基于数组存储和向量处理的olap查询处理方法

Country Status (1)

Country Link
CN (1) CN103631911B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104361113A (zh) * 2014-12-01 2015-02-18 中国人民大学 一种内存-闪存混合存储模式下的olap查询优化方法
CN105701200A (zh) * 2016-01-12 2016-06-22 中国人民大学 一种内存云计算平台上的数据仓库安全olap方法
CN107122490A (zh) * 2017-05-18 2017-09-01 郑州云海信息技术有限公司 一种分组查询中聚合函数的数据处理方法及系统
CN107133320A (zh) * 2017-05-03 2017-09-05 广州虎牙信息科技有限公司 在Hive中连接运算的转化方法及装置
CN107408114A (zh) * 2014-12-22 2017-11-28 亚马逊技术有限公司 基于事务访问模式识别联结关系
CN107515899A (zh) * 2017-07-24 2017-12-26 北京国电通网络技术有限公司 数据库联合分片方法、装置以及存储介质
CN110019575A (zh) * 2017-08-04 2019-07-16 北京京东尚科信息技术有限公司 对地理地址进行标准化的方法和装置
CN110263038A (zh) * 2019-06-11 2019-09-20 中国人民大学 一种基于分组向量的哈希多表连接实现方法
CN111797425A (zh) * 2019-04-02 2020-10-20 Sap欧洲公司 利用字典编码的安全数据库
US10831759B2 (en) 2014-12-22 2020-11-10 Amazon Technologies, Inc. Efficient determination of join paths via cardinality estimation
CN111930313A (zh) * 2020-08-12 2020-11-13 中国银行股份有限公司 主机中数据关联访问的方法和装置
CN112732841A (zh) * 2020-12-04 2021-04-30 广州橙行智动汽车科技有限公司 一种数据处理的方法和装置
CN113010596A (zh) * 2021-03-19 2021-06-22 上海达梦数据库有限公司 一种动态性能视图的构建方法、装置、设备及存储介质
CN116028584A (zh) * 2023-03-28 2023-04-28 华腾数云(北京)科技有限公司 混合事务分析处理的数据仓库
CN117076547A (zh) * 2023-10-16 2023-11-17 江苏量界数据科技有限公司 基于虚拟分布式服务器的数据存储方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101201A1 (en) * 1999-03-23 2003-05-29 Saylor Michael J. System and method for management of an automatic OLAP report broadcast system
US20080168375A1 (en) * 2007-01-07 2008-07-10 International Business Machines Corporation Systems and methods for simultaneous summarization of data cube streams
US20120173476A1 (en) * 2011-01-04 2012-07-05 Nasir Rizvi System and Method for Rule-Based Asymmetric Data Reporting
CN102663117A (zh) * 2012-04-18 2012-09-12 中国人民大学 面向数据库与Hadoop混合平台的OLAP查询处理方法
CN102663114A (zh) * 2012-04-17 2012-09-12 中国人民大学 面向并发olap的数据库查询处理方法
CN102663116A (zh) * 2012-04-11 2012-09-12 中国人民大学 面向列存储数据仓库的多维olap查询处理方法
CN103294831A (zh) * 2013-06-27 2013-09-11 中国人民大学 列存储数据库中基于多维数组的分组聚集计算方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101201A1 (en) * 1999-03-23 2003-05-29 Saylor Michael J. System and method for management of an automatic OLAP report broadcast system
US20080168375A1 (en) * 2007-01-07 2008-07-10 International Business Machines Corporation Systems and methods for simultaneous summarization of data cube streams
US20120173476A1 (en) * 2011-01-04 2012-07-05 Nasir Rizvi System and Method for Rule-Based Asymmetric Data Reporting
CN102663116A (zh) * 2012-04-11 2012-09-12 中国人民大学 面向列存储数据仓库的多维olap查询处理方法
CN102663114A (zh) * 2012-04-17 2012-09-12 中国人民大学 面向并发olap的数据库查询处理方法
CN102663117A (zh) * 2012-04-18 2012-09-12 中国人民大学 面向数据库与Hadoop混合平台的OLAP查询处理方法
CN103294831A (zh) * 2013-06-27 2013-09-11 中国人民大学 列存储数据库中基于多维数组的分组聚集计算方法

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104361113B (zh) * 2014-12-01 2017-06-06 中国人民大学 一种内存‑闪存混合存储模式下的olap查询优化方法
CN104361113A (zh) * 2014-12-01 2015-02-18 中国人民大学 一种内存-闪存混合存储模式下的olap查询优化方法
CN107408114B (zh) * 2014-12-22 2021-06-22 亚马逊技术有限公司 基于事务访问模式识别联结关系
US10831759B2 (en) 2014-12-22 2020-11-10 Amazon Technologies, Inc. Efficient determination of join paths via cardinality estimation
US10685042B2 (en) 2014-12-22 2020-06-16 Amazon Technologies, Inc. Identifying join relationships based on transactional access patterns
CN107408114A (zh) * 2014-12-22 2017-11-28 亚马逊技术有限公司 基于事务访问模式识别联结关系
CN105701200A (zh) * 2016-01-12 2016-06-22 中国人民大学 一种内存云计算平台上的数据仓库安全olap方法
CN105701200B (zh) * 2016-01-12 2019-08-20 中国人民大学 一种内存云计算平台上的数据仓库安全olap方法
CN107133320B (zh) * 2017-05-03 2019-11-22 广州虎牙信息科技有限公司 在Hive中连接运算的转化方法及装置
CN107133320A (zh) * 2017-05-03 2017-09-05 广州虎牙信息科技有限公司 在Hive中连接运算的转化方法及装置
CN107122490A (zh) * 2017-05-18 2017-09-01 郑州云海信息技术有限公司 一种分组查询中聚合函数的数据处理方法及系统
CN107515899A (zh) * 2017-07-24 2017-12-26 北京国电通网络技术有限公司 数据库联合分片方法、装置以及存储介质
CN107515899B (zh) * 2017-07-24 2020-05-22 北京中电普华信息技术有限公司 数据库联合分片方法、装置以及存储介质
CN110019575A (zh) * 2017-08-04 2019-07-16 北京京东尚科信息技术有限公司 对地理地址进行标准化的方法和装置
CN111797425B (zh) * 2019-04-02 2024-04-19 Sap欧洲公司 利用字典编码的安全数据库
CN111797425A (zh) * 2019-04-02 2020-10-20 Sap欧洲公司 利用字典编码的安全数据库
CN110263038A (zh) * 2019-06-11 2019-09-20 中国人民大学 一种基于分组向量的哈希多表连接实现方法
CN111930313A (zh) * 2020-08-12 2020-11-13 中国银行股份有限公司 主机中数据关联访问的方法和装置
CN111930313B (zh) * 2020-08-12 2023-12-22 中国银行股份有限公司 主机中数据关联访问的方法和装置
CN112732841A (zh) * 2020-12-04 2021-04-30 广州橙行智动汽车科技有限公司 一种数据处理的方法和装置
CN113010596A (zh) * 2021-03-19 2021-06-22 上海达梦数据库有限公司 一种动态性能视图的构建方法、装置、设备及存储介质
CN113010596B (zh) * 2021-03-19 2024-02-23 上海达梦数据库有限公司 一种动态性能视图的构建方法、装置、设备及存储介质
CN116028584A (zh) * 2023-03-28 2023-04-28 华腾数云(北京)科技有限公司 混合事务分析处理的数据仓库
CN117076547A (zh) * 2023-10-16 2023-11-17 江苏量界数据科技有限公司 基于虚拟分布式服务器的数据存储方法
CN117076547B (zh) * 2023-10-16 2024-01-02 江苏量界数据科技有限公司 基于虚拟分布式服务器的数据存储方法

Also Published As

Publication number Publication date
CN103631911B (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
CN103631911B (zh) 基于数组存储和向量处理的olap查询处理方法
US8660985B2 (en) Multi-dimensional OLAP query processing method oriented to column store data warehouse
US11520760B2 (en) System and method for providing bottom-up aggregation in a multidimensional database environment
US7171427B2 (en) Methods of navigating a cube that is implemented as a relational object
US8868544B2 (en) Using relational structures to create and support a cube within a relational database system
CN108536692B (zh) 一种执行计划的生成方法、装置及数据库服务器
US11797509B2 (en) Hash multi-table join implementation method based on grouping vector
CN104361113B (zh) 一种内存‑闪存混合存储模式下的olap查询优化方法
US20120011144A1 (en) Aggregation in parallel computation environments with shared memory
Siqueira et al. The SB-index and the HSB-index: efficient indices for spatial data warehouses
US20150006509A1 (en) Incremental maintenance of range-partitioned statistics for query optimization
CN113688127B (zh) 数据压缩技术
EP2469423B1 (en) Aggregation in parallel computation environments with shared memory
WO2015042070A1 (en) Densely grouping dimensional data
CN113032427B (zh) 一种用于cpu和gpu平台的向量化查询处理方法
Tang et al. Locationspark: In-memory distributed spatial query processing and optimization
US11294816B2 (en) Evaluating SQL expressions on dictionary encoded vectors
CN105930388A (zh) 一种基于函数依赖关系的olap分组聚集方法
Dhanasree et al. A survey on OLAP
Lee et al. Scalable distributed data cube computation for large-scale multidimensional data analysis on a Spark cluster
Ordonez et al. A survey on parallel database systems from a storage perspective: rows versus columns
Khalil et al. An Approach for Implementing Online Analytical Processing Systems under Column-Family Databases.
Li et al. SP-phoenix: a massive spatial point data management system based on phoenix
Chaalal et al. T-plotter: A new data structure to reconcile OLAP and OLTP models
Boukraâ et al. A layered multidimensional model of complex objects

Legal Events

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