CN102663117B - 面向数据库与Hadoop混合平台的OLAP查询处理方法 - Google Patents
面向数据库与Hadoop混合平台的OLAP查询处理方法 Download PDFInfo
- Publication number
- CN102663117B CN102663117B CN2012101141120A CN201210114112A CN102663117B CN 102663117 B CN102663117 B CN 102663117B CN 2012101141120 A CN2012101141120 A CN 2012101141120A CN 201210114112 A CN201210114112 A CN 201210114112A CN 102663117 B CN102663117 B CN 102663117B
- Authority
- CN
- China
- Prior art keywords
- olap
- hadoop
- result
- node
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-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
本发明公开了一种面向数据库与Hadoop混合平台的OLAP查询处理方法。该方法以Hadoop的多复本容错机制为基础,在进行OLAP查询处理时,首先在主工作复本上执行,并将查询处理结果记录于本地数据库的聚集结果表中;当工作节点出现故障时,通过namenode查找主工作复本对应的容错复本的节点信息,并调用MapReduce任务在容错复本上完成OLAP查询处理任务。本发明将数据库技术与Hadoop技术相结合,以双存储引擎、双查询处理引擎的方式将数据库的存储性能和Hadoop的高可扩展性、高可用性进行结合;利用主-从式复本管理机制将数据库查询处理与MapReduce查询处理以松散耦合的方式进行集成,既保证了高查询处理性能,又保证了高容错性能。
Description
技术领域
本发明涉及一种OLAP(联机分析处理)查询处理方法,尤其涉及一种面向数据库与Hadoop混合平台的并行OLAP查询处理方法,属于数据库管理技术领域。
背景技术
OLAP(On-Line Analytical Processing,联机分析处理)的设计目标是满足决策支持或者多维环境下特定的查询和报表需求。数据仓库一般采用多维模型存储面向主题的分析型数据集,主要采用多个维表和单一事实表的星型存储模型。OLAP查询的核心是星型连接(star-join),即在事实表与多个维表连接的基础上对连接结果进行分组聚集计算。事实表与维表之间的连接操主要采用哈希连接技术。哈希连接技术的关键是提高哈希表的存储效率和哈希探测效率,降低哈希连接延迟。在OLAP中,优化事实表与多个哈希表的连接顺序是提高OLAP查询处理性能的关键技术。
由于维表相对事实表而言较小,现有的典型技术是采用维表全复制和事实表水平分片技术支持在事实表分片上的局部OLAP处理,然后对局部OLAP聚集结果进行全局归并。这种技术路线一方面需要付出大量的维表冗余复制代价,另一方面在实时OLAP应用中,维表的更新需要付出高昂的同步更新代价,难以满足实时OLAP的要求。
为了减少并行连接操作的网络传输代价,有的数据库系统采用按事实表与维表连接键值协同分区(哈希或范围分区)的方式将事实表与所连接的维表中相应的主外键值按相同的分区函数进行分布存储,使事实表与维表连接的记录预先分配在相同的节点,从而在连接操作时减少网络传输代价。但是相对于数据仓库的多维数据模型,按多个维度进行分区在效率上有很大问题,难以实现事实表与多个维表的星型连接结构上的协同分布,而且分布在各个节点上的维表分区同样面临着更新时的巨大同步代价。
对于较小的维表和较低的选择率,一般通过将维表中满足条件的子表或哈希表进行网络广播的方式实现动态数据分布。但在OLAP查询负载中,维表上的选择率相对较高,广播的网络代价较高。另一方面,Hadoop是一种能够对大量数据进行分布式处理的软件平台。HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)是相应的分布式文件系统。Hadoop定义Map(映射)和Reduce(归并)任务来完成OLAP查询处理的各个子任务。在MapReduce的星型连接处理过程中,大量的物化数据和数据分布会占用大量磁盘I/O和网络带宽,严重地影响了整体性能。
提高Hadoop性能主要体现在两个方面,一是提高本地数据处理性能,二是提高网络传输性能。本地数据处理性能包括处理过程中的I/O和CPU性能两个方面。为提高Hadoop平台处理过程中的I/O性能,有人在Hadoop平台中引入了列存储模型。
在申请号为201010546473.3的中国发明专利申请中,公开了一种基于Hadoop的海量流数据存储和查询方法及系统。所述方法包括下列步骤:构建段级列簇式存储结构:将流数据依次存储为列簇记录,并对列簇记录从前往后进行压缩得到压缩数据页,将该压缩数据页写到一个列簇数据,同时将该压缩数据页的页面概要信息追加写入到列簇数据的尾端,得到完整的数据段;在查询语句执行的过程中,根据过滤条件,利用存储在数据段尾端的所述页面概要信息构建出一张扫描表对数据进行快速过滤。从压缩算法的本质技术来看,该专利所涉及的数据压缩技术与列存储数据库所采用的压缩技术并没有本质的不同,只是应用领域的不同。
对于I/O性能优化技术而言,一种方案是将成熟的列存储压缩技术移植到Hadoop中,改进Hadoop的存储效率和性能;另一种方案是将列存储数据库做为完整的存储引擎引入Hadoop系统做为辅助存储引擎,从系统集成的角度来提高I/O性能。
列存储技术采用一次一列的访问模式,OLAP查询处理需要产生物化的连接索引或连接结果位图来标识连接列中满足连接条件的数据位置。而行存储技术采用一次一行的访问模式,OLAP查询处理通常采用流水线(pipeline)模式来消除连接表之间物化数据的代价,但需要将连接操作的局部结果在流水线之间传递。因此在存储模型的基础上进行多维查询连接优化需要将列存储的I/O性能和行存储的查询处理效率更好地结合起来,通过查询优化技术进一步提高本地数据处理性能。
发明内容
本发明所要解决的技术问题在于提供一种面向数据库与Hadoop混合平台的OLAP查询处理方法。该方法将数据库查询处理与Hadoop查询处理以松散耦合的方式进行集成,既保证了高查询处理性能,又保证了高容错性能。
为解决上述的技术问题,本发明采用下述的技术方案:
一种面向数据库与Hadoop混合平台的OLAP查询处理方法,其特征在于:
以Hadoop的多复本容错机制为基础,将事实表存储于数据库集群和Hadoop集群中,设置所述事实表的主工作复本和至少一个容错复本,并将主工作复本导入到工作节点本地的数据库中,按统一命名规则为该主工作复本对应的表进行命名;删除在Hadoop分布式文件系统中的主工作复本,并将namenode中主工作复本的元信息更新为本地数据库的JDBC连接和该主工作复本对应的表名称;
在进行OLAP查询处理时,首先在所述主工作复本上执行,并将查询处理结果记录于本地数据库的聚集结果表中;
当工作节点出现故障时,通过namenode查找所述主工作复本对应的容错复本的节点信息,并调用MapReduce任务在所述容错复本上完成OLAP查询处理任务。
其中较优地,所述OLAP查询处理方法用在具有双存储引擎和双OLAP查询处理引擎的混合平台中,所述双存储引擎为数据库存储引擎和Hadoop存储引擎,所述双OLAP查询处理引擎为数据库OLAP引擎和Hadoop查询处理引擎。
其中较优地,对于本地数据库的主工作复本,采用并行OLAP查询处理技术;对于Hadoop分布式文件系统中的容错复本,采用MapReduce查询处理技术。
其中较优地,如果查询处理过程中产生节点故障,则由数据库集群完成部分数据集上的OLAP查询处理任务,根据故障节点号从namenode中查找该工作节点中主工作复本对应的容错复本的存储节点,并调用MapReduce任务在容错复本上完成OLAP查询处理任务;将数据库集群的OLAP查询处理结果与所述MapReduce任务的OLAP查询处理结果进行合并。
其中较优地,在各工作节点的OLAP查询结果进行归并时,如果局部聚集结果向归并节点插入的过程中没有节点故障,各归并节点插入全部聚集结果记录后,重新执行分组操作进行全局聚集;然后将各归并节点中的聚集结果记录加载到指定的归并节点中,进行最后的聚集结果归并操作,并返回OLAP查询处理结果。
其中较优地,在各工作节点的OLAP查询结果进行归并时,如果局部聚集结果向归并节点插入的过程中有节点故障时,在各归并节点完成聚集结果的插入工作后根据故障节点号,在重新执行分组操作时过滤掉发生故障节点所插入的聚集结果记录,获得部分节点聚集归并结果;然后在故障节点恢复或由其他容错节点重做故障节点复本对应的OLAP查询处理后,将故障节点所影响的复本上产生的聚集结果记录重新插入到归并节点的聚集结果表中,然后通过重新执行分组操作的方式将两次OLAP查询处理阶段的聚集结果子集进行全局合并。
其中较优地,将维表集中存于中心节点,事实表按Hadoop分布式文件系统的数据分布策略分布在工作节点上,形成以维表为中心的反转星型存储结构。
其中较优地,将SQL语句中的谓词作用于维表上并选择出相应的分组属性向量,然后对分组属性向量中的数据进行按位编码,用编码填充谓词向量中满足谓词条件的维表记录对应的位置;
在SQL语句执行时,在中心节点进行谓词操作,为每一个对应的维表生成一个编码谓词向量,存储在主向量缓存中,然后通过广播机制同步到各工作节点的从属向量缓存中,各工作节点基于编码谓词向量生成局部聚集计算结果,其中分组属性用编码代替;
当完成全局聚集结果归并后,在中心节点根据谓词结果编码表将聚集结果中的分组属性编码用原始分组属性值代替,返回给用户最终的查询处理结果。
其中较优地,当并发查询较多并且维表的分组属性更新较少时,将连接操作需要的查询过滤器最小化为位图,将分组操作所需要的维表分组属性缓存于工作节点的缓存中。
本发明具有如下的有益效果:
(1)将数据库技术与Hadoop技术相结合,以双存储引擎、双查询处理引擎的方式将数据库的存储性能(列存储)和Hadoop的高可扩展性、高可用性进行结合;
(2)利用主-从式复本管理机制将数据库查询处理与Hadoop查询处理以松散耦合的方式进行集成,既保证了高查询处理性能,又保证了高容错性能;
(3)分布式缓存和谓词向量技术保证了低网络传输延迟和同步代价;
(4)谓词向量技术支持了业务OLTP系统和分析型OLAP系统的融合,实现了实时OLAP处理。
附图说明
下面结合附图和具体实施方式对本发明作进一步的说明。
图1为本发明中双OLAP查询处理引擎的基本架构示意图;
图2为面向星型存储模型的OLAP查询处理技术示意图;
图3为基于数据库哈希聚集算法的归并技术示意图;
图4为本发明中使用的反转星型存储结构示意图;
图5为本发明中使用的编码谓词向量缓存技术示意图;
图6为本发明中使用的分布式缓存技术示意图;
图7为OLTP与Hadoop OLAP混合模型的示意图。
具体实施方式
并行OLAP处理包括本地OLAP处理和全局OLAP处理两个阶段,性能取决于本地OLAP查询处理引擎的性能和网络传输性能。海量数据仓库上的OLAP处理需要解决的关键问题是数据分布模型、并行OLAP查询处理模型和网络通讯模型。
为此,本发明公开了一种数据库与Hadoop混合平台上的OLAP查询处理方法。该方法包括反转星型存储模型、分布式缓存技术、DDTA-JOIN技术、混合复本管理技术、混合OLAP查询处理引擎技术、基于数据库哈希聚集算法的归并技术等技术内容。其中,反转星型存储模型用于实现数据仓库星型存储模型的分布式存储。分布式缓存技术通过网络将工作节点的内存管理为虚拟共享内存,实现主-从式更新传播。DDTA-JOIN技术是以维表代理键和谓词向量为特征的星型连接处理技术。混合复本管理技术是以HDFS系统的3复本管理机制为基础,通过1+2主-容错复本管理机制将1个主工作复本和2个容错复本分别存储于数据库和HDFS系统中,实现高性能实时OLAP支持和高可用性OLAP查询处理。混合OLAP查询处理引擎技术是指在系统采用基于数据库的并行OLAP查询处理和基于Hadoop的查询处理混合引擎。基于数据库哈希聚集算法的归并技术是指使用数据库作为Reduce(归并)引擎,即将各工作节点的OLAP查询结果子集插入到归并节点的数据库表中,然后通过重新执行分组操作完成全局聚集结果归并任务。下面对此展开详细具体的说明。
对于磁盘存储的OLAP查询处理而言,I/O性能是OLAP查询效果最重要的制约因素,因此我们需要在列存储的基础上优化OLAP查询处理方法,在存储引擎和查询处理引擎两个层次上获得最佳的性能。
本发明所提供的OLAP查询处理方法用在双存储引擎(以数据库和HDFS作为主-从式存储引擎)和双OLAP查询处理引擎(数据库OLAP引擎和Hadoop查询处理引擎)的混合平台中,利用分布式缓存技术实现。其中,数据库存储引擎和OLAP查询处理引擎负责高性能的OLAP查询处理,Hadoop平台的存储引擎和OLAP查询处理引擎负责数据容错级的后备数据存储和查询处理。该架构可以作为独立的数据库集群与Hadoop平台来满足不同的需求,在数据仓库和OLAP应用中可以相互融合,提高整个系统的实时处理性能、存储效率、可扩展性和容错性能。
本发明中的混合复本管理技术是指以Hadoop平台的多复本容错机制为基础(HDFS系统中的每个数据块都有副本,默认复本数量为3),将复本划分为一个主工作复本和两个容错复本。按HDFS系统的分布式存储策略将事实表存储于数据库集群中,将第一个复本作为主工作复本,并将主工作复本导入到工作节点本地的数据库中,按统一命名规则为该复本对应的表进行命名,删除在HDFS系统中的主工作复本,并将namenode中主工作复本的元信息更新为本地数据库的JDBC连接和该复本对应的表名称。
具体而言,首先改造HDFS系统的3复本管理机制,为工作节点部署一个插件化数据库存储引擎,如列存储引擎来提高数据存储与I/O访问性能。数据加载入HDFS系统,并采用HDFS系统的复本策略和分布策略进行存储。在本发明的一个实施例中,将3复本定义为1个主工作复本和2个容错复本,主工作复本加载到主工作复本节点的数据库中,采用统一的命名规则将该主工作复本存储为数据表,并在Hadoop平台的namenode中将该主工作复本的元信息按数据表信息进行更新,记录该主工作复本的JDBC信息和表名等访问信息。在HDFS系统中删除该主工作复本。在进行上述数据处理后,HDFS系统中的分布式数据库中保存了一套完整的数据库结构化数据复本,Hadoop平台中保存了两套文件格式的非结构化复本,混合复本的分布遵循Hadoop平台的容错策略。图1显示了本发明中双OLAP查询处理引擎的基本架构。其中,深颜色的数据块代表HDFS系统中文件复本的主工作复本,主工作复本从HDFS系统迁移到数据库中。在数据库的主工作复本上,采用DDTA-JOIN为核心的并行OLAP查询处理技术;在HDFS系统的容错复本上,采用Hadoop查询处理技术。
在混合OLAP查询处理引擎技术中,OLAP查询处理任务首先在数据库集群的主工作复本上通过DDTA-JOIN技术进行处理,并将查询处理结果记录于本地数据库中的聚集结果表中。当查询处理过程中没有节点故障时,由数据库集群完成全部的OLAP查询处理任务;如果查询处理过程中产生节点故障,则由数据库集群完成部分数据集上的OLAP查询处理任务,根据故障节点号从namenode中查找该节点中主工作复本对应的容错复本的存储节点,并调用预设的MapReduce任务在容错复本上完成OLAP查询处理任务,将数据库集群OLAP查询处理结果与容错级MapReduce任务所完成的OLAP查询处理结果进行合并。
将数据库查询处理与Hadoop查询处理以松散耦合的方式进行集成是指数据库与Hadoop系统在存储引擎和查询处理引擎上保持独立,可以独立地进行维护和系统升级。数据库系统为Hadoop系统提供辅助的存储和查询处理服务,二者之间是高层逻辑功能调用而不需要在数据访问底层进行系统接口级调用。当出现节点故障时,数据库引擎通过复本元数据向Hadoop提出容错复本执行请求,并由Hadoop系统独立地通过MapReduce任务完成容错数据处理,并将容错复本上的查询结果与数据库系统的查询结果进行聚集合并。因此,我们并不需要象当前很多数据库厂商那样需要通过扩展数据库系统的功能以实现在数据库的查询处理引擎中支持直接调用MapReduce的复杂功能升级。
上述的DDTA-JOIN技术是面向星型存储模型的OLAP查询处理技术。如图2所示,其主要特征是维表在内存中采用列存储模型、谓词操作生成谓词向量标识谓词结果、维表主键使用代理键以支持将键值直接映射为内存列存储维属性数组的偏移地址(数组下标地址)、事实表顺序扫描时按外键所映射的维表记录和内存偏移地址直接访问谓词向量和维表分组属性列,从而实现星型连接中谓词向量的流水线连接位图过滤操作和对维表分组属性的后物化访问技术。
在DDTA-JOIN技术中,OLAP查询中的谓词操作应用于维表并产生谓词结果位图,称为谓词位图向量。该谓词位图向量用来记录每一条维表记录是否满足该维表上的所有谓词条件(1表示满足,O表示不满足)。维表主键采用代理键,即自然递增数据列1,2,3,…,维表分组属性加载到内存中形成分组属性数组,维表代理键可以直接映射为维属性数组下标。OLAP查询处理时,谓词位图向量作为查询过滤器完成多表连接(即星型连接,star-join),即将事实表记录外键值映射为对应维表谓词位图向量下标,直接抽取各维表谓词位图向量的标识位进行位运算(逻辑与操作,AND)。位运算结果为假的记录被忽略,继续扫描下一条事实表记录;当位运算结果为真时,按事实表外键值映射的维属性数组下标直接抽取分组属性数据项进行后续的哈希分组聚集处理。DDTA-JOIN技术支持列存储模型、多核并行OLAP和基于磁盘共享扫描的多核并发OLAP查询处理,在本发明中为高性能OLAP处理引擎所使用。
在本发明所提供的基于数据库哈希分组聚集算法的归并技术中,采用数据库中的哈希分组来实现归并操作,即将各工作节点的OLAP查询结果子集插入到归并节点的数据库表中,然后通过重新执行分组(group by)操作完成全局聚集结果归并任务。当数据库系统需要多个归并节点时,在指定节点中创建聚集结果表。各工作节点完成本地的OLAP查询处理并将聚集结果存储于本地的聚集结果表中,按数据库系统指定的哈希函数为聚集结果表中的分组记录分配归并节点号,通过归并节点的元信息(JDBC)建立与归并节点的连接,通过插入(insert)命令将本地聚集结果记录附加上节点号插入到归并节点的聚集结果表中。
1)如图3所示,当局部聚集结果向归并节点插入的过程中没有节点故障时,各归并节点插入全部的聚集结果记录后,重新执行分组操作进行全局聚集。然后,将各归并节点中的聚集结果记录加载到指定的归并节点中,做最后的聚集结果归并操作,并返回OLAP查询处理结果。
2)当局部聚集结果向归并节点插入的过程中有节点故障时,在各归并节点完成聚集结果的插入工作后根据故障节点号,在重新执行分组操作时过滤掉发生故障节点所插入的聚集结果记录,获得部分节点聚集归并结果。在故障节点恢复或由其他容错节点重做故障节点复本对应的OLAP查询处理后,将故障节点所影响的复本上产生的聚集结果记录重新插入到归并节点的聚集结果表中,然后通过重新执行分组操作的方式将两次OLAP查询处理阶段的聚集结果子集进行全局合并。
如果数据库集群的可靠性较高时,可以设置基于流数据的实时分组聚集归并模块将来自各工作节点的聚集结果记录不插入聚集结果表中而是直接导入到分组聚集哈希表中实现实时聚集处理。
当需要较多的归并节点时,采用Hadoop平台的策略分配多个归并节点。各工作节点生成聚集结果集时为每一条聚集结果记录分配归并节点,并通过JDBC将聚集结果记录插入到指定归并节点的聚集结果表中。当各归并节点全部完成聚集结果归并任务时,将各归并节点上的聚集结果表归并到一个节点的聚集结果表中完成最后的聚集结果归并操作,生成最终的OLAP查询处理结果。
要实现海量数据上的实时OLAP处理,实时OLAP中的数据更新在维表上体现为实时数据更新,包括插入、删除和修改。由于数据仓库遵循参照完整性约束条件,维表记录删除时必须先删除相关的事实表记录,因此维表上的删除操作发生频率较低。我们可以通过对维表记录增加删除标记的方式延迟删除操作,采用批处理方式周期性处理删除操作。维表的代理键主键由系统预分配,不支持修改,其他维表属性支持实时修改操作。实时OLAP中的数据更新在事实表中体现为追加操作。记录追加采用批量处理方式,而维表上的更新可以支持对既有维表数据的实时更新。
在本发明中,数据存储采用如图4所示的反转星型存储结构。数量多但数据量小的维表集中存于中心节点(或称主节点),数据量大的事实表按HDFS系统的数据分布策略分布在工作节点上,形成以维表为中心的反转星型存储结构(与星型存储模型中以事实表为中心的结构相反)。这种反转星型存储结构尤其适合支持实时更新操作。
另外,在本发明中采用主-从式向量缓存设计,用于在中心节点和工作节点间同步谓词向量和维表分组属性向量。在向量缓存设计中,可以采用以下两种缓存技术:
1)编码谓词向量缓存技术
如图5所示,将SQL语句中的谓词作用于维表上并选择出相应的分组属性向量,然后对分组属性向量中的数据进行按位编码,用编码填充谓词向量中满足谓词条件的维表记录对应的位置。如00表示维表记录1不满足谓词条件,10表示维表记录2满足谓词条件,而且对应的分组属性c_nation的编码为10,以此类推。SQL语句执行时需要在中心节点进行谓词操作,为每一个对应的维表生成一个编码谓词向量,存储在主向量缓存中,然后通过广播机制同步到各工作节点的从属向量缓存中。各工作节点基于编码谓词向量采用DDTA-JOIN技术生成局部聚集计算结果,其中分组属性用编码代替。当完成全局聚集结果归并后,在中心节点根据谓词结果编码表将聚集结果中的分组属性编码用原始分组属性值代替,返回给用户最终的查询处理结果。在这种向量缓存技术中,谓词向量为查询私有数据,不具有共享性,因此在查询执行前需要根据新查询所生成的编码谓词向量进行广播更新。
2)维表分组属性缓存技术
当并发查询较多并且维表的分组属性更新较少时,采用维表分组属性缓存技术将连接操作需要的查询过滤操作最小化为位图操作,将分组操作所需要的维表分组属性缓存于工作节点的缓存中以提高共享访问能力。
在具体实现时,可以采用如图6所示的分布式缓存技术。分布式缓存技术是指将主节点所产生的共享访问数据更新到分布式缓存中。分布式缓存由数据库集群中工作节点的内存构成。如果缓存的数据量较大且较少变化,可以物化到本地磁盘上形成主缓存-从缓存-本地磁盘缓存三级存储模式。谓词向量作为查询过滤操作需要在查询执行时实时生成并广播到每个工作节点。维表分组属性具有公共访问特性,因此将查询中访问到的维表分组属性缓存于数据库系统的分布式缓存中。在图6采用了多级存储结构:中心节点内存维表属性列→共享缓存(如Memcached分布式缓存技术[http://memcached.org/])→工作节点内存→工作节点磁盘。在这种存储策略下,维表分组属性采用增量式缓存模式,以内存维属性向量的方式缓存在Memcached(→种分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载)中。工作节点执行本地OLAP处理时,可以直接访问Memcached中缓存的维属性向量,也可以将Memcached中缓存的维属性向量缓存在本地工作节点的内存中供本地OLAP查询处理访问。
当内存空间不足时,可以将维属性向量物化于本地磁盘中,然后按访问需求在内存与磁盘之间进行交换。当维表分组属性被更新时,可以通过分布式缓存同步工作节点缓存中的分组属性。如果内存容量不足以容纳全部维表记录,也可以按如下优先级进行维表内存化:分组属性→谓词操作属性→全部维属性。维属性在内存列中存储时可以应用数据压缩技术进一步降低内存消耗。分组属性和谓词操作属性可以在查询处理时通过增量的方式加载,并在内存维属性管理中按LRU(Least Recently Used,最近最少使用)策略淘汰访问频率低的维属性列以容纳新的维属性列。
为了进一步满足实时OLAP查询处理的需求,可将前端业务OLTP系统与基于Hadoop的OLAP系统融合为统一的OLAP分析平台。如图7所示,在中心节点上部署OLTP系统,可采用高性能的内存数据库或磁盘数据库系统。OLTP系统中的事实表数据周期性地批量加载到HadoopOLAP系统中,OLTP系统存储实时更新的数据。Hadoop OLAP系统与OLTP系统共享一套维表存储,OLTP系统中的维表支持实时更新。HadoopOLAP系统在执行OLAP查询处理时,首先在OLTP系统中生成谓词向量,通过主-从式缓存广播到Hadoop数据库集群进行并行OLAP处理,同时在OLTP系统的最新数据集中进行OLAP处理,最后将OLTP系统和Hadoop OLAP系统的OLAP聚集计算结果进行归并,返回给用户实时数据上的OLAP查询处理结果。
本发明不受具体采用的数据库技术和Hadoop版本的限制,是一种松散耦合的系统级集成技术。通过主-从式复本管理机制将数据库查询处理与MapReduce查询处理以松散耦合的方式进行集成,既保证了高查询处理性能,又保证了高容错性能。
以上对本发明所提供的面向数据库与Hadoop混合平台的OLAP查询处理方法进行了详细的说明。对本领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (8)
1.一种面向数据库与Hadoop混合平台的OLAP查询处理方法,基于反转星型存储结构实现,所述反转星型存储结构将维表集中存于中心节点,事实表按Hadoop分布式文件系统的数据分布策略分布在工作节点上,其特征在于:
以Hadoop的多复本容错机制为基础,将事实表存储于数据库集群中,设置所述事实表的主工作复本和至少一个容错复本,并将主工作复本导入到工作节点本地的数据库中,按统一命名规则为该主工作复本对应的表进行命名;删除在Hadoop分布式文件系统中的主工作复本,并将namenode中主工作复本的元信息更新为本地数据库的JDBC连接和该主工作复本对应的表名称;
在进行OLAP查询处理时,首先在所述主工作复本上执行,并将查询处理结果记录于本地数据库的聚集结果表中;
当查询处理过程中工作节点出现故障时,由数据库集群完成部分数据集上的OLAP查询处理任务,根据故障节点号从namenode中查找该工作节点中主工作复本对应的容错复本的存储节点,并调用MapReduce任务在所述容错复本上完成OLAP查询处理任务;
最后,将数据库集群的OLAP查询处理结果与所述MapReduce任务的OLAP查询处理结果进行归并,返回给用户最终的查询处理结果。
2.如权利要求1所述的面向数据库与Hadoop混合平台的OLAP查询处理方法,其特征在于:
所述OLAP查询处理方法用在具有双存储引擎和双OLAP查询处理引擎的混合平台中,所述双存储引擎为数据库存储引擎和Hadoop存储引擎,所述双OLAP查询处理引擎为数据库OLAP引擎和MapReduce查询处理引擎。
3.如权利要求1所述的面向数据库与Hadoop混合平台的OLAP查询处理方法,其特征在于:
对于本地数据库的主工作复本,采用并行OLAP查询处理技术;对于Hadoop分布式文件系统中的容错复本,采用MapReduce查询处理技术。
4.如权利要求1所述的面向数据库与Hadoop混合平台的OLAP查询处理方法,其特征在于:
在各工作节点的OLAP查询结果进行归并时,如果局部聚集结果向归并节点插入的过程中没有节点故障,各归并节点插入全部聚集结果记录后,重新执行分组操作进行全局聚集;然后将各归并节点中的聚集结果记录加载到指定的归并节点中,进行最后的聚集结果归并操作,并返回OLAP查询处理结果。
5.如权利要求1所述的面向数据库与Hadoop混合平台的OLAP查询处理方法,其特征在于:
在各工作节点的OLAP查询结果进行归并时,如果局部聚集结果向归并节点插入的过程中有节点故障时,在各归并节点完成聚集结果的插入工作后根据故障节点号,在重新执行分组操作时过滤掉发生故障节点所插入的聚集结果记录,获得部分节点聚集归并结果;然后在故障节点恢复或由其他容错节点重做故障节点复本对应的OLAP查询处理后,将故障节点所影响的复本上产生的聚集结果记录重新插入到归并节点的聚集结果表中,然后通过重新执行分组操作的方式将两次OLAP查询处理阶段的聚集结果子集进行全局合并。
6.如权利要求1所述的面向数据库与Hadoop混合平台的OLAP查询处理方法,其特征在于:
将SQL语句中的谓词作用于维表上并选择出相应的分组属性向量,然后对分组属性向量中的数据进行按位编码,用编码填充谓词向量中满足谓词条件的维表记录对应的位置;
在SQL语句执行时,在中心节点进行谓词操作,为每一个对应的维表生成一个编码谓词向量,存储在主向量缓存中,然后通过广播机制同步到各工作节点的从属向量缓存中,各工作节点基于编码谓词向量生成局部聚集计算结果,其中分组属性用编码代替;
当完成全局聚集结果归并后,在中心节点根据谓词结果编码表将聚集结果中的分组属性编码用原始分组属性值代替。
7.如权利要求1所述的面向数据库与Hadoop混合平台的OLAP查询处理方法,其特征在于:
当并发查询较多并且维表的分组属性更新较少时,将连接操作需要的查询过滤器最小化为位图,将分组操作所需要的维表分组属性缓存于工作节点的缓存中。
8.如权利要求1所述的面向数据库与Hadoop混合平台的OLAP查询处理方法,其特征在于:
在中心节点上部署OLTP系统,所述OLTP系统中的事实表数据周期性地加载到Hadoop OLAP系统中,由所述OLTP系统存储实时更新的数据;所述Hadoop OLAP系统在执行OLAP查询处理时,首先在所述OLTP系统中生成谓词向量,通过主-从式缓存广播到Hadoop数据库集群进行并行OLAP处理,同时将所述OLTP系统的最新数据集中进行OLAP处理,最后将所述OLTP系统和所述Hadoop OLAP系统的OLAP聚集计算结果进行归并,返回给用户实时数据上的OLAP查询处理结果。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101141120A CN102663117B (zh) | 2012-04-18 | 2012-04-18 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
US13/514,296 US9501550B2 (en) | 2012-04-18 | 2012-05-16 | OLAP query processing method oriented to database and HADOOP hybrid platform |
PCT/CN2012/075622 WO2013155752A1 (zh) | 2012-04-18 | 2012-05-16 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101141120A CN102663117B (zh) | 2012-04-18 | 2012-04-18 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102663117A CN102663117A (zh) | 2012-09-12 |
CN102663117B true CN102663117B (zh) | 2013-11-20 |
Family
ID=46772608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101141120A Active CN102663117B (zh) | 2012-04-18 | 2012-04-18 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102663117B (zh) |
WO (1) | WO2013155752A1 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982103A (zh) * | 2012-11-06 | 2013-03-20 | 东南大学 | 一种olap海量多维数据维存储方法 |
CN103279543B (zh) * | 2013-05-13 | 2017-05-17 | 清华大学 | 海量图数据上的路径模式查询系统 |
CN103366015B (zh) * | 2013-07-31 | 2016-04-27 | 东南大学 | 一种基于Hadoop的OLAP数据存储与查询方法 |
CN103425772B (zh) * | 2013-08-13 | 2016-08-10 | 东北大学 | 一种具有多维信息的海量数据查询方法 |
CN104424231B (zh) * | 2013-08-26 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 多维数据的处理方法及装置 |
EP2849091A1 (en) | 2013-09-16 | 2015-03-18 | Siemens Aktiengesellschaft | Method and system for merging data into a database table |
CN103631911B (zh) * | 2013-11-27 | 2017-11-03 | 中国人民大学 | 基于数组存储和向量处理的olap查询处理方法 |
CN103701906B (zh) * | 2013-12-27 | 2017-06-09 | 北京奇安信科技有限公司 | 分布式实时计算系统及其数据处理方法 |
CN104778182B (zh) * | 2014-01-14 | 2018-03-02 | 博雅网络游戏开发(深圳)有限公司 | 基于HBase的数据导入方法和系统 |
CN103955502B (zh) * | 2014-04-24 | 2017-07-28 | 科技谷(厦门)信息技术有限公司 | 一种可视化olap的应用实现方法及系统 |
CN103995879B (zh) * | 2014-05-27 | 2017-12-15 | 华为技术有限公司 | 基于olap系统的数据查询方法、装置及系统 |
CN105243063B (zh) * | 2014-06-18 | 2019-11-15 | 北京新媒传信科技有限公司 | 信息推荐的方法和装置 |
CN104270412A (zh) * | 2014-06-24 | 2015-01-07 | 南京邮电大学 | 一种基于Hadoop分布式文件系统的三级缓存方法 |
CN104239530A (zh) * | 2014-09-19 | 2014-12-24 | 浪潮(北京)电子信息产业有限公司 | 并发查询HBase表的方法和装置 |
CN104462479B (zh) * | 2014-12-18 | 2017-11-24 | 杭州华为数字技术有限公司 | 跨节点的晚期物化方法和装置 |
CN105094828B (zh) * | 2015-07-28 | 2018-09-11 | 北京京东尚科信息技术有限公司 | Hadoop数据文件的生成方法与解析方法 |
CN105426467B (zh) * | 2015-11-16 | 2018-11-20 | 北京京东尚科信息技术有限公司 | 一种用于Presto的SQL查询方法及系统 |
CN105701200B (zh) * | 2016-01-12 | 2019-08-20 | 中国人民大学 | 一种内存云计算平台上的数据仓库安全olap方法 |
CN106021285A (zh) * | 2016-04-29 | 2016-10-12 | 武汉佰钧成技术有限责任公司 | 一种基于Hadoop平台的海量数据增量抽取与分析方法 |
CN107545015B (zh) | 2016-06-29 | 2020-12-04 | 华为技术有限公司 | 一种查询故障的处理方法及处理装置 |
CN107870954B (zh) * | 2016-09-28 | 2021-09-21 | 中国移动通信集团广东有限公司 | 一种分布式数据库的扩展方法及装置 |
CN106569896B (zh) * | 2016-10-25 | 2019-02-05 | 北京国电通网络技术有限公司 | 一种数据分发及并行处理方法和系统 |
CN108073595B (zh) * | 2016-11-10 | 2020-09-18 | 北京国双科技有限公司 | 一种在olap数据库实现数据更新和快照的方法及装置 |
CN106528833A (zh) * | 2016-11-14 | 2017-03-22 | 天津南大通用数据技术股份有限公司 | 一种mpp数据库数据动态重分布的方法及装置 |
CN108153759B (zh) * | 2016-12-05 | 2021-07-09 | 中国移动通信集团公司 | 一种分布式数据库的数据传输方法、中间层服务器及系统 |
CN106951338B (zh) * | 2017-03-31 | 2019-11-29 | 湖南智擎科技有限公司 | 一种基于GlusterFS的高容错分布式存储方法 |
CN107423390B (zh) * | 2017-07-21 | 2020-10-27 | 上海德拓信息技术股份有限公司 | 一种基于oltp-olap混合关系型数据库系统内部的数据实时同步方法 |
CN107491544B (zh) * | 2017-08-25 | 2020-12-29 | 上海德拓信息技术股份有限公司 | 一种增强非关系型数据库分析能力的数据处理平台 |
CN109992372A (zh) * | 2017-12-29 | 2019-07-09 | 中国移动通信集团陕西有限公司 | 一种基于映射归约的数据处理方法及装置 |
CN108170535A (zh) * | 2017-12-30 | 2018-06-15 | 北京工业大学 | 一种基于MapReduce模型的提升表连接效率的方法 |
CN110555080B (zh) * | 2018-03-30 | 2023-02-14 | 华为技术有限公司 | 一种联机分析处理方法、装置及系统 |
US20190362004A1 (en) * | 2018-05-23 | 2019-11-28 | Microsoft Technology Licensing, Llc | Data platform fabric |
US11030204B2 (en) | 2018-05-23 | 2021-06-08 | Microsoft Technology Licensing, Llc | Scale out data storage and query filtering using data pools |
CN109062949B (zh) * | 2018-06-21 | 2021-10-01 | 东南大学 | 一种提高在线聚集中多表连接查询效率的方法 |
CN110096274B (zh) * | 2019-05-13 | 2021-04-02 | 电子科技大学 | 分布式内存列式数据库的生成代码复用匹配管理方法 |
CN110134695B (zh) * | 2019-05-21 | 2022-08-16 | 电子科技大学 | 一种面向流水线结构化数据查询的数据库智能分区方法 |
CN110263038B (zh) * | 2019-06-11 | 2021-06-15 | 中国人民大学 | 一种基于分组向量的哈希多表连接实现方法 |
CN110502539B (zh) * | 2019-07-17 | 2022-07-01 | 苏宁云计算有限公司 | 一种olap动态缓存方法及装置 |
CN112637067A (zh) * | 2020-12-28 | 2021-04-09 | 北京明略软件系统有限公司 | 基于模拟网络广播的图并行计算系统和方法 |
CN113792787B (zh) * | 2021-09-14 | 2022-05-06 | 江苏速度遥感大数据研究院有限公司 | 遥感大数据处理方法及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007020B1 (en) * | 2000-03-10 | 2006-02-28 | Hewlett-Packard Development Company, L.P. | Distributed OLAP-based association rule generation method and system |
US20050165733A1 (en) * | 2004-01-14 | 2005-07-28 | Biq, Llc | System and method for an in-memory roll up-on-the-fly OLAP engine with a relational backing store |
US20070022120A1 (en) * | 2005-07-25 | 2007-01-25 | Microsoft Corporation | Caching and modifying portions of a multi-dimensional database on a user device |
CN101183368B (zh) * | 2007-12-06 | 2010-05-19 | 华南理工大学 | 联机分析处理中分布式计算及查询海量数据的方法和系统 |
US20100153377A1 (en) * | 2008-12-12 | 2010-06-17 | Palaniswamy Rajan | System and method for enhanced automation of information technology management |
CA2713039C (en) * | 2009-08-31 | 2014-06-10 | Accenture Global Services Gmbh | Flexible cube data warehousing |
CN101996250B (zh) * | 2010-11-15 | 2012-07-25 | 中国科学院计算技术研究所 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
CN102332029B (zh) * | 2011-10-15 | 2013-04-17 | 西安交通大学 | 一种基于Hadoop 的海量可归类小文件关联存储方法 |
-
2012
- 2012-04-18 CN CN2012101141120A patent/CN102663117B/zh active Active
- 2012-05-16 WO PCT/CN2012/075622 patent/WO2013155752A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN102663117A (zh) | 2012-09-12 |
WO2013155752A1 (zh) | 2013-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102663117B (zh) | 面向数据库与Hadoop混合平台的OLAP查询处理方法 | |
US9501550B2 (en) | OLAP query processing method oriented to database and HADOOP hybrid platform | |
US11461356B2 (en) | Large scale unstructured database systems | |
Padhy et al. | RDBMS to NoSQL: reviewing some next-generation non-relational database’s | |
Lin et al. | Log analysis in cloud computing environment with Hadoop and Spark | |
CN103312791B (zh) | 物联网异构数据存储方法及系统 | |
US20170337224A1 (en) | Targeted Processing of Executable Requests Within A Hierarchically Indexed Distributed Database | |
CN102638584B (zh) | 数据分布缓存方法及系统 | |
CN108600321A (zh) | 一种基于分布式内存云的图数据存储方法和系统 | |
CN104866608A (zh) | 一种数据仓库中基于连接索引的查询优化方法 | |
CN102663116A (zh) | 面向列存储数据仓库的多维olap查询处理方法 | |
CN106874437A (zh) | 面向数据库一体机的内存数据仓库行列存储转换实现方法 | |
AU2012290042A1 (en) | Cloud-based distributed persistence and cache data model | |
CN102999584A (zh) | 电力gis跨平台空间数据服务方法及系统 | |
CN104484472A (zh) | 一种混合多种异构数据源的数据库集群及实现方法 | |
CN105354250A (zh) | 一种面向云存储的数据存储方法及装置 | |
CN116541427B (zh) | 数据查询方法、装置、设备及存储介质 | |
CN115114374B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN102693312B (zh) | 一种键值库数据存储中柔性事务管理方法 | |
Chrysafis et al. | Foundationdb record layer: A multi-tenant structured datastore | |
CN105677761A (zh) | 一种数据切分的方法及系统 | |
CN115083538B (zh) | 一种药物数据的处理系统、运行方法及数据处理方法 | |
CN117677943A (zh) | 用于混合数据处理的数据一致性机制 | |
CN115114294A (zh) | 数据库存储模式的自适应方法、装置、计算机设备 | |
US11789971B1 (en) | Adding replicas to a multi-leader replica group for a data set |
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 |