一种olap海量多维数据维存储方法

文档序号:6380659阅读:323来源:国知局
专利名称:一种olap海量多维数据维存储方法
技术领域
本发明涉及一种OLAP海量多维数据维存储方法,适用OLAP系统中多维海量数据的快速分析情况,尤其是能区别OLAP分析中维的层次特性。
背景技术
首先对本发明中用到的缩写及名词进行说明
OLAP 0nline Analytical Processing,联机分析处理;
ROLAP ReIationaI 0LAP,关系 0LAP;
MOLAP !Multidimensional 0LAP,多维 OLAP ;
Hadoop 一个分布式系统基础架构;
Hive :基于Hadoop的一个数据仓库工具;
Pig :一种数据流语言和运行环境,用以检索非常大的数据集;
HDFS Hadoop Distributed File System, Hadoop 分布式文件系统;
HDFile HDFS Dimension File,分布式维存储文件;
MapReduce :—种并行编程框架;
随着大规模的数据库尤其是数据仓库系统的日益增多,无论是政府部门还是企业都积累了海量的业务处理和市场变化数据。特别是随着Internet技术的高速发展,各行业的信息量呈指数级的爆炸性增长趋势,一些应用中数据量已经从几十个TB发展到PB级,如商业智能、环境气象、数字城市、生物信息等应用。如何对这些海量数据进行有效地分析和挖掘,从中发现有用的信息和潜在的规律?为此,联机分析处理(OLAP)成为了当前数据库应用的研究热点。
OLAP是一种软件技术,它使分析人员、管理人员或执行人员能从多种角度对信息进行快速、一致、交互地存取,从而更深入地了解数据。OLAP的目标是满足决策支持或多维环境中特定的查询和报表需求,其技术核心是“维”这一概念,因此OLAP也可说是多维数据分析工具的集合。
在传统OLAP中,应用比较广泛的有基于关系型存储的ROLAP和基于多维数组存储的M0LAP。然而,面向行存储的ROLAP往往需要扫描整行数据,进而影响整体查询效率; MOLAP以多维数组存储预聚集的数据,可以快速响应OLAP聚集计算,但是其更新代价高且预处理数据所占用的空间随着维数的增加呈指数型增长。以往的OLAP存储技术已经无法适应日益增长的OLAP海量多维数据查询分析,有学者提出基于Hadoop的海量数据仓库系统Hive和Pig应对OLAP海量数据分析。Pig可以并行处理数据的同时依然是面向行存储,面临扫描全行的行暴力扫描问题;Hive虽然可以避免全行检索,但它缺乏有效的索引机制。发明内容
发明目的为了克服传统数据库中的OLAP数据存储的不足,Pig中行暴力扫描问题以及Hive中缺乏有效索引问题,并结合维的层次特性,本发明提出一种OLAP海量多维数据维存储方法,显著缩短了 OLAP海量多维数据分析时间。
技术方案一种OLAP海量多维数据维存储方法,首先提取源数据中每一维的信息,按维分割OLAP海量多维数据,然后利用维层次特性进行编码,保持维数据的语义信息, 得到维层次编码,维层次编码是具有前缀特性的二进制编码,实现数据的高效压缩、快速运算和定位;同时设计基于HDFS的HDFile维存储文件结构,有利于加快OLAP聚集计算,有效避免OLAP查询分析中的行暴力扫描。接着有效利用具有语义特征的维层次编码,构建B+树索引,实现OLAP海量多维数据按维值的快速查找、定位及传输,节省了 I/O开销。最后根据 HDFile维存储结构,设计基于MapReduce框架设计高效并行查询算法,进一步提高了 OLAP 查询效率。
有益效果本发明的方法与现有技术相比,其显著优点是为OLAP海量多维数据维存储方法科学实验统计、环境气象、生物信息计算等海量数据分析的应用提供一套高效、 易用、可扩展的存储方法。


图I为本发明实施例中表I中地区维的维层次树;
图2为本发明实施例中的HDFile结构;
图3是本发明实施例的基于维层次编码的B+树索引。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
本实施例中,源数据的形式如附表I所示,包含TID列、维层次属性列和度量列。TID表示该维层次属性值在原始数据基表中出现的位置,quantity是度量列,TID和 quantity之间是维层次属性列。
I)按维分割
针对OLAP分析通常以维为单位进行聚集计算的特点,以维为单位提取每一维对应的度量信息。按维独立组织数据区别于传统关系数据库中以行记录组织数据,避免了数据检索过程中不必要的行扫描时间。具体的维分割思路如下
首先,根据用户的OLAP分析模式定义数据源中维的个数,提取每一维的信息。将附表I中的continent、country和city三列提取出来构成地区维,而时间维由year、month 和day三列组成。
其次,根据每一维成员值在行记录中的位置,提取对应的度量列。通常每个维通常包含多个层次,每个层次对应一列,并且维的层次之间有一定的语义关系,如附表I中 continent的范畴比country要大,而year又可以包含month。基于维数据的这种层次特性,本文把原始数据中相关的列以维为单位抽取出来,作为一个存储单位。
2)维层次编码
维层次编码是根据维数据的层次特性创建的编码,其形式化描述如下。
定义1:维层次树DTree= (V,E),其中节点V是维中各个层次所有取值的集合;根节点是一个抽象节点,不具有实际含义。边E是各个取值之间的层次关系。若两个取值具有层次关系,则在DTree中,层次较高的值成为层次较低的值的父节点。
如地区维从上往下的层次为(洲,国家,城市),其维层次树如图1所示。地区维层次树中的节点由洲、国家和城市的所有取值组成。亚洲与中国、韩国和日本具有层次关系, 因此在维层次树中,“亚洲”成为“中国”、“韩国”和“日本”的父节点。
定义2 :层次属性编码长度—/.⑶(/.)=「Iog2 /' 1 _是L层中不同成员的最大个数。需要说明的是,本实施例全零的编码没有使用,所以在确定编码位数的时候要多一位。并且为了适应一定程度的数据更新,会预留一些编码位数。如果一个维层次属性包含30个不同的属性值,则基本编码长度至少设为5位。
定义3 :层次属性编码
DL_Code (Ln) = {(— (D^Code(L1) < < DL_Code_Len (L2) | DL_Code (L2))…) <<DL_Code_Len (Ln) | < bk_r..V..b0 > 匕 e {0,1}。其中 k 表示维 D 的所有维层次二进制编码的位数之和,Ln为维D中的第η层次属性,其值域为dom(Ln) = W1, ···,<,,…,dj。 对于分层的维,为维层次属性的每一个不同属性值指定一个唯一的编码(编码的分配基于属性值在原数据中的先后次序)。
维层次树中,根节点没有维层次编码。非根节点的维层次编码为自根节点至该节点的路径上,除根节点外,所有节点的值编码由定义3生成。如图1地区维层次树中, 假定大洲这一层设定两位编码,除掉00,亚洲编码为01,欧洲编码为10 ;国家这一层设定三位编码,则亚洲中的中国编码为01001 ;城市这一层设定四位编码,则中国上海的编码为 010010001。
维层次编码隐含了维层次之间的语义关系,有利于索引的创建和查询中的范围检索。本发明对数据采用维层次编码,可以充分利用维的层次性,有效支持OLAP中的范围查询。并且编码后的数据其位数减少使得对数据本身进行操作时可以大大缩减时间开销,同时也节约了数据存储空间。
3)基于 HDFS 的 HDFile
根据步骤I)中获取的维信息及其对应的度量数据,以每一维最细粒度的层次属性值为单位存储其对应的TID和度量值,本文将最基本的存储单位定义为HDFiIe。根据步骤2)中构造的维层次编码,提取维成员属性值对应的编码为HDFile文件名,HDFile文件内容定义为二元组〈TID,measure-list>的集合,按行分割二元组。在构建HDFile的同时将其存储于HDFS上,基于HDFS中对文件的基本操作,可以对HDFile进行新建、读取、写入、 追加、删除等操作。
其中TID和measure-list以空格分隔,通过计算多组TID的交集可以确定待查询数据在基表中的确切位置以供数据立方体计算所使用measure表示度量,根据measure可以求得聚集数据单元的度量值。考虑到数据表中一般包含多个度量值,本发明用“ I ”分隔符加以区分,即measure-list中各个度量值之间以“ I ”分隔。
HDFile按维存储的结构,有助于快速定位被筛选的数据。在选择OLAP聚集计算中涉及的维时,不检索无关的列数据,可以有效降低聚集操作的I/O开销。HDFile基于HDFS 的文件存储,使得MapReduce并行编程模型通过HDFS的文件接口能够并行读取数据,加快了数据检索速度。图2给出了 HDFile的结构。
4)基于维层次编码的B+树索引
在大规模数据存储方面,大量数据存储在外存磁盘中,而在外存磁盘中读取/写入块中某些数据时,首先需要定位到磁盘中的某块,如何有效地查找磁盘中的数据,需要一种合理高效的外存数据结构,B+树最基本的价值是在基于块的存储方式存储数据从而能够有效的提高检索效率。和其他的结构如二元查找树不同,B+树有很高的出度(通常是100 或更高阶),这就减少了在一个树中查找一个元素需要的I/O操作次数。
B+树以维层次编码作为关键字,可以实现快速定位HDFile文件。
基于维层次编码的B+树索引其构造方法与一般的B+树构造方法类似,这里将维层次编码作为关键码,其大小遵循以下规则
a)编码长度与关键码大小成正比。
b)编码长度相等时,相同位置I大于O。
根据上述关键码的比较规则,按照传统B+树的构建算法,即可生成基于维层次编码的B+树索引。如图3所示,每个叶子节点包含若干关键码,假设一个关键码A对应一个维层次属性值B,它所指向的文件即按照维层次属性值B归类的HDFile。
本实施例构建基于维层次特性的索引时以维为单位,单独建立B+树索引,这样既减小了整棵索引树的存储空间,又增加了读取维对应度量值的灵活性,减少了多余的I/o 操作。针对OLAP海量多维数据大多具有层次性并且属性值重复性比较高,以属性值的编码作为键值,可以有效减少B+树中关键字的个数,从而减少整棵树的占用空间,提高查询效率。
5) MapReduce 查询算法
针对一个OLAP查询,首先要检索维相关的维层次B+树索引获得对应的存储在 HDFS上HDFile,接着将获取的文件目录作为MapReduce的输入,然后启动一个MapReduce Job。MapReduce分析操作完成对HDFile的聚集操作,最后将计算结果输出到指定的文件中。
输入查询相关的维
输出聚集结果
I)提取查询命令中的维属性值,扫描维层次编码文件,提取维属性值对应的编码
2)根据获取的编码值,扫描B+树索引,查找HDFS上对应的HDFile的目录
如果目录不为空,贝U启动一个MapReduce Job,转到3)
否则,返回空值
3)将MapReduce任务的输出结果写到指定文件中,即为聚集结果。
表 Isales
权利要求
1.ー种OLAP海量多维数据维存储方法,其特征在于包括步骤如下 O按维分割OLAP海量多维数据,构建维层次编码,设计HDFile维存储文件结构; 2)构建基于维层次特性和维层次编码的索引; 3)根据HDFile维存储结构,设计基于MapReduce框架的并行查询算法。
2.根据权利要求I所述的ー种OLAP海量多维数据维存储方法,其特征在于 所述步骤I)中构建的维层次编码是具有前缀特性的ニ进制编码。
3.根据权利要求I所述的ー种OLAP海量多维数据维存储方法,其特征在于所述步骤2)中基于维层次特性和编码的索引中,利用具有语义特征的维层次特性,以维层次编码为键值构建的B+树索引。
全文摘要
本发明公开了一种OLAP海量多维数据维存储方法,首先,按维分割OLAP多维数据,构建维层次编码,设计HDFile维存储文件结构,使得聚集计算只需访问相关维对应数据,避免了检索无关数据;接着构建基于维层次编码的B+树索引,快速定位维存储数据,节省了I/O开销;最后设计高效并行查询算法,进一步提高了OLAP查询效率。从而为科学实验统计、环境气象、生物信息计算等海量数据分析的应用提供一套高效、易用、可扩展的存储方法。
文档编号G06F17/30GK102982103SQ201210438298
公开日2013年3月20日 申请日期2012年11月6日 优先权日2012年11月6日
发明者宋爱波, 何战国, 罗军舟 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1