CN106202364A - 面向MapReduce的XML数据划分优化方法及其系统 - Google Patents

面向MapReduce的XML数据划分优化方法及其系统 Download PDF

Info

Publication number
CN106202364A
CN106202364A CN201610532546.0A CN201610532546A CN106202364A CN 106202364 A CN106202364 A CN 106202364A CN 201610532546 A CN201610532546 A CN 201610532546A CN 106202364 A CN106202364 A CN 106202364A
Authority
CN
China
Prior art keywords
result
mapreduce
interval
query
xml
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
CN201610532546.0A
Other languages
English (en)
Other versions
CN106202364B (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.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
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 South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN201610532546.0A priority Critical patent/CN106202364B/zh
Publication of CN106202364A publication Critical patent/CN106202364A/zh
Application granted granted Critical
Publication of CN106202364B publication Critical patent/CN106202364B/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/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8365Query optimisation

Abstract

本发明公开了一种面向MapReduce的XML数据划分优化方法,包括以下步骤:S1:服务器接收XPath查询请求;S2:根据XPath查询请求得到区间编码结果;S3:采用MapReduce模型对区间编码结果进行取样统计,得到取样结果;S4:对XPath查询请求所包含的查询语句进行解析,得到解析结果;S5:根据解析结果得到倾斜因子;S6:根据倾斜因子确定分区长度,并根据负载均衡算法得到分区映射表;S7:建立查询计划树;S8:根据查询计划树和分区映射表得到构造结果;S9:将构造结果发送至客户端。同时,本发明还公开了一种面向MapReduce的XML数据划分优化系统,上述的方法和系统在分布式环境下,通过对XML文档的编码以及取样统计,对数据的划分进行优化,使得本方法和系统成为一种新的XML查询机制。

Description

面向MapReduce的XML数据划分优化方法及其系统
技术领域
本发明涉及基于结构连接的XML查询处理的优化方法,特别涉及一种基于MapReduce的分布式环境下数据划分方法对查询时间的影响,具体为一种面向MapReduce的XML数据划分优化方法和系统。
背景技术
大规模的XML查询处理在当今越来越显得十分重要。目前处理大规模数据集的方法的思路主要还是集中在于分布式处理,而Hadoop是云计算和大数据处理中作为典型的一个支撑框架。
XML已经成为web上数据表示和数据传输的事实标准,XML数据体量激增。例如,维基百科提供了一个XML文件格式的网页仓库,其大小已经超过了40G。目前Hadoop被广泛应用于大数据处理。如何利用其MapReduce模型提高XML分布式查询处理效率值得研究。结构连接方法是实现XML查询处理的主要方法之一。基于MapReduce的XML结构连接处理,在Shuffle阶段如果分区的数量越多,那么造成的数据冗余度会越大,而如果分区的数量太少,则易造成数据大量集中在某个reducer节点上,使得MapReduce模型不能发挥其并行优势。
发明内容
本发明的目的在于提供一种基于MapReduce对海量XML数据进行XPath查询的优化方法,该方式在分布式环境下,通过对XML文档的编码以及取样统计,对数据的划分进行优化,使得本方法和系统成为一种新的XML查询机制;同时本发明还公开了一种基于MapReduce对海量XML数据进行XPath查询的优化系统。
本发明的具体的技术方案为:一种面向MapReduce的XML数据划分优化方法,包括以下步骤:
S1:服务器接收XPath查询请求;
S2:根据XPath查询请求,采用MapReduce模型对XML文档进行区间编码,得到区间编码结果;
S3:采用MapReduce模型对区间编码结果进行取样统计,得到取样结果;
S4:对XPath查询请求所包含的查询语句进行解析,得到解析结果;
S5:根据解析结果对取样结果进行最小二乘估计法处理,得到倾斜因子;
S6:根据倾斜因子确定XML文档的最大区间的分区长度,并根据负载均衡算法得到分区映射表;
S7:建立查询语句查询计划树;
S8:根据查询计划树和分区映射表对取样结果进行MapReduce查询作业,得到构造结果;
S9:将构造结果发送至客户端。
在上述的面向MapReduce的XML数据划分优化方法中,所述的S2中,采用MapReduce模型对XML文档进行区间编码的具体操作为:对XML文档进行Map阶段的部分编码结果和Reduce阶段的完全编码结果。
在上述的面向MapReduce的XML数据划分优化方法中,所述的S3具体为:首先将区间编码结果分为2kr个区间,分别统计每个区间上的数据量和每相邻两个区间的冗余数,数据分布数组为Pk[2kr],冗余数组为d[2kr-1];
然后可以通过区间合并操作向下合并k次得到一系列数据分布数组Pk,Pk-1,…..P1,P0
其中,r为完全编码结果的数量,k为区间合并操作向下合并的次数。
在上述的面向MapReduce的XML数据划分优化方法中,所述的S4具体为:对XPath形式的查询语句,将其拆解为标签名和连接符,并将解析结果保存到解析类中。
在上述的面向MapReduce的XML数据划分优化方法中,所述的S5具体为:根据标签名和连接符,得到需要连接的多个节点名称;根据节点名称对S3中的取样结果中取所需的节点对其分布频率数组进行合并,即P=(ΣtagnameP0,ΣtagnameP1,...,ΣtagnamePk)。
令P′=(m-h)/(P-h),那么常数项则为0,令解线性代数方程组:
解出θ值,θ值为倾斜因子。
在上述的面向MapReduce的XML数据划分优化方法中,所述的S6中的分区映射表为分区和完全编码结果之间的分区映射表。
在上述的面向MapReduce的XML数据划分优化方法中,所述的S8包括:
S81:执行MapReduce查询作业的Map阶段,根据查询语句进行谓词过滤和过滤后的数据进行连接判定,得到分区输出的中间结果;
S82:根据分区映射表将中间结果划分到各个完全编码结果上;
S83:执行MapReduce查询作业的Reduce阶段,读取完全编码结果中的每一个节点,并与祖先节点的栈中匹配每一个节点,如果连接判定成功,该数据是最终输出的数据;所述的最终输出的数据的集合为构造结果。
在上述的面向MapReduce的XML数据划分优化方法中,所述的S2之前还包括S21:服务器查看待查询文档是否已进行区间编码,若是则进行S3,若否,则进行S2。
在上述的面向MapReduce的XML数据划分优化方法中,所述的S3之前还包括S31:服务器查看是否已经进行取样统计;若是,则进行S4,若否,则进行S3。
同时,本发明还公开了一种用于上述的面向MapReduce的XML数据划分优化方法的系统,所述的系统包括客户端和服务器,所述的服务器包括以下模块:
请求接收模块:用于接收客户端发送的XPath查询请求;
编码模块:用于根据XPath查询请求,采用MapReduce模型对XML文档进行区间编码,得到区间编码结果;
取样模块:用于采用MapReduce模型对区间编码结果进行取样统计,得到取样结果;
解析模块:用于对XPath查询请求所包含的查询语句进行解析,得到解析结果;
倾斜因子计算模块:用于根据解析结果对取样结果进行最小二乘估计法处理,得到倾斜因子;
分区模块:用于根据倾斜因子确定分区长度,并根据负载均衡算法得到分区映射表;
查询计划树建立模块:用于建立查询计划树;
构造结果计算模块:用于根据查询计划树和分区映射表对取样结果进行MapReduce查询作业,得到构造结果;
输出模块:用于将构造结果发送至客户端。
与现有技术相比,本发明的有益效果在于:
本发明通过分区参数的调优实现数据分区的优化来提高分布式XML查询效率。
本发明对已有的一种基于MapReduce的XML结构连接处理算法,从数据分布的角度出发,进行进一步的优化和改善。本文的工作主要集中在优化MapReduce的分区策略,使得程序能够自动地估计出参数,把数据相对均匀地分配到各个计算节点中,达到最大化的效率;同时还进行进一步的负载均衡工作,来减少程序的误差。最后通过对优化后的算法进行实验评估,结果表面了数据分布优化后的算法有效地提高了整体查询任务的速率。
附图说明
图1为本发明实施例1的流程图。
图2为本发明实施例2的结构示意图。
图3为本发明实施例1的步骤103的一个XML文档的区间编码示例。
图4为本发明实施例1的MapReduce查询作业中区间编码下的节点分区示例。
图5为本发明实施例1的reducer和partition之间的关系示意图。
图6为本发明实施例1的步骤105的合并取样的过程示意图。
具体实施方式
下面结合具体实施方式,对本发明的技术方案作进一步的详细说明,但不构成对本发明的任何限制。
本发明实施例在基于MapReduce的XML结构连接处理系统上,增加了优化模块。该优化模块是本发明的核心内容。首先系统会对XML文档进行区间编码,编码完之后根据编码信息,可以很快速地判别2个XML节点之间的位置关系。因为本发明只针对XML离线查询,该编码操作只需要进行一次,之后便可以重复利用编码信息而不需要重新进行编码。编码完成后,优化模块就不同标签名的节点在不同分区数量下的分布进行统计,得到(分区数量,分区上最大数据数)的样本点。该操作也是只需要执行一次并且适用于多次查询。在每次查询处理之前,优化模将会根据输入节点来读取事先统计好的样本点,并计算出分区长度和经过负载均衡之后的分区方案。
本发明实施例提供基于MapReduce的分布式XPath查询系统,该系统接收用户的查询语句进行处理,最后将得到的查询结果展示给用户。该系统包含客户端模块和服务端模块。服务端模块对用户发出的查询语句进行解析,并且在服务端的Hadoop集群上进行处理,最后将查询结果返给至客户端。客户端则负责接收用户查询和查询结果的展示。
下面对本发明实施例提供的面向MapReduce的XML数据划分优化方法及系统做详细说明。
实施例1
首先,对本发明实施例提供的方法和系统中所涉及到的相关术语,我们给出如下定义,并结合定义说明该发明的基本原理:
定义1节点N表示XML树中的一个节点。
定义2节点的区间编码:区间编码算法将一个XML节点v编码成一个三元组(start,end,level),start和end强调了v的区间,level表示v所在的层次。其中start是节点在整棵XML树中前序遍历序号,end为以该节点为根节点的子树中最大的start值,如果节点是叶子节点,则其end等于start值.
根据区间编码我们可以很快速地判断节点之间的层次关系和位置关系。
1.如果u.start<v.start,则称节点u的文档顺序在节点v之前,表示为u<v;
2.如果u.start<v.start且u.end>v.end,则u的区间包含了v的区间,u是v的祖先节点;
3.如果u.start<v.start,u.end>v.end且u.level=v.level-1,则u是v的父节点,v是u的子节点。
图3是一个XML文档的区间编码示例。
定义3:(区间编码分区规则)给定一个分区长度L,对于Map阶段输出的每一个节点u(start,end,level),令节点u被分配到从first至last的分区。图4是一个区间编码分区规则示例,以根节点region作为最大的区间,分区长度L=4,则分区数量可以唯一确定,该XML文档被分为6个区间。如africa节点,其区间为(2,15,2), 因此该节将会产生4个副本,分别被分到了第0,1,2,3个区间中。该分区方法虽然保持了XML树的结构完整性,但是会产生数据冗余。
定义4:(分区分配规则)假设分区的标识为partitionID,reducer的标识为reducerID,那么分区和reducer有如下映射关系:分区将根据partitionID%reducerID的结果分配到对应的reducer上,如图5所示。为了使计算节点达到最大化的利用,我们通过控制分区长度使得分区数量与reducer数量对齐,即设置分区数量为reducer数量的整数倍。
本发明目标是使得整体的查询时间最优化,这里只关注拥有数据记录数量最多的reducer,并使其最小化。设第i个reducer上的数据总量为Ri,第j个分区上的数据总量为Pj,分区的d数量为n,reducer的数量为r,则有n=kr。查询输入的XML树的根节点区间长度为B,分区长度为L,分区数量n和分区长度有如下关系:
n=B/L
且单个reducer上的最大数据量为:
R max = max { R i } = max i = 0 r { &Sigma; k = 0 n r P i + k r } , n &GreaterEqual; r i , r , k &Element; N max i = 0 n P t , 0 < n < r n = k r
n<=r的情况下表示分区数量少于reducer数量,将会有reducer将处于闲置状态。以自变量x来表示分区长度,f(x)表示reducer上的最大数据数,Lopti是最优化的分区长度,最终问题可以表述为:
L o p t t = arg min f ( x ) =
即求得一个最优的分区长度Lopti,使得拥有数据量最多的reducer的数据量最小化。
定义5:(数据冗余)如果有分区长度L和分区数量n,那么分区间的边界为kL,k=1,2….n-1。对于一个任意的节点u(start,end,level),如果有单个分区边界kL∈[start,end],则节点u将会产生一份数据冗余。
定义6:(数据密度):对于区间[x0,x0+ε]上的数据总量为△m,则x0处的数据密度定义为
且有对于任意区域[a,b],该区域上的数据总量为:
P a , b = &Integral; a b &rho; ( x ) d x
定义7(数据均匀):假设有节点区间为[a,b],对于任意的x,y∈[a,b],其对应的数据密度分别为ρ(x),ρ(y),如果有|ρ(x)-ρ(y)|<ε,则称该区间[a,b]上的数据分布是均匀的。
假设某查询中,其数据分布是均匀的,按照分区规则将根节点区间分为n个等分区域,分区数量为n,对于其中任意的两个区域[a,b],[a+kL,b+kL],k∈Z,其数据量分别为P和P’,根据定义3和定义4,有如下关系:
P t - P = &Integral; a b &rho; ( x ) d x - &Integral; a + k L b + k L &rho; ( x ) d x = &Integral; a b &rho; ( x ) d x - &Integral; a b &rho; ( x + k L ) d x = &Integral; a b &lsqb; &rho; ( x ) - &rho; ( x + k L ) &rsqb; d x < &Element; ( b - a ) &RightArrow; 0
所以当数据均匀分布时,各个分区上的数据量P0,P1…Pn是相等的,且数据冗余量都相同。根据数据冗余的定义,每个区间上的数据冗余数为XML文档的层数,记为h,假设分区数量为n,则n个分区上的数据冗余数为(n-1)h,那么P0=P1=…=Pn=(m+(n-1)h)/n,m为整个查询处理输入的数据总量,对于公式2,则有
1)n>=r时
max i = n r { &Sigma; k = 0 n r P i + k r } = n r * P = n r * m + ( n - 1 ) h n = m - h r + n h r
2)n<r时
max i = 0 n { P i } = m + ( n - 1 ) h n
,且n=B/L,将公式3和4代入公式2可得:
L o p p t = arg min x &Element; R E h x r + m - h r , 0 < x &le; B / r i , r , k &Element; N ( m - h ) x B + h , x > B / r x = B / k r
因此在数据均匀分布的情况下,当分区长度x等于B/r时,即分区数量取reducer数量的时候,整个查询连接所需的时间最小。
定义8(数据倾斜):区域[a,b],其数据量为M,如果有子区域数据量为M’,且有则称在区域[a,b]的数据分布是倾斜的。
对于数据倾斜的查询语句,我们可以只考虑它数据集中的部分,忽略其他数据量极少的分区,在数据不均匀的情况下,假设数据量集中某几个分区中,其区间的集合为C,U为区间全集,如果将C内的数据分布看作是均匀的,其数据密度为ρc,根据定义7则有:
&Integral; a b &rho; ( x ) d x = &Integral; c &rho; o d x + &Integral; u - c &rho; ( x ) d x = ( 1 + &epsiv; ) &Integral; c &rho; o d x &ap; &Integral; c &rho; o d x = &theta; ( b - a ) &rho;
θ值表示数据集中的区域占整个区间的比例,我们将之称为倾斜因子。假设分区数量为n,那么有数据集中的区域所占的分区数量为θn,将其代入公式5得:
所以,当分区长度L=θB/r时,分区算法的效率最优,问题转化到对θ的求解上。本发明所采用的方法是在每次查询之前利用最小二乘法去估计一个θ。用分区的最大数据量去估计,表示为:P(x,θ)=(m-h)/(θx)+h。作变形:(m-h)/(P(x,θ)-h)=θx,将其变为线性函数。在每次执行查询连接的MapReduce任务之前先抽取样本x=(x0,x1,…,xn),reducer上最大的数据量为P=(P0,P1,…,Pn),令P′=(m-h)/(P-h),那么常数项则为0,令解线性代数方程组:
可求得θ值。
定义9(区间合并操作):相邻两个区间B1,B2,其数据量分别为m1,m2,它们的边界所产生的数据冗余两为d,将B1,B2合并成一个新的区间B’,其数据量为m’,有如下对应关系:
B′=B1∪B2
m′=m1+m2-d
考虑到reducer和分区的对齐关系,一般采样将分区设为reducer的整数倍。因此只要遍历一遍,将区间划分为2kr个,得到所有分区上的数据两和2kr-1个数据冗余,可以向下合并k次得到k+1个样本,用于最小二乘法估计θ,避免了直接多次遍历整个XML文档。图6为合并采样的过程。
步骤101:客户端发出XPath查询请求给服务器。
步骤102:服务器查看待查询文档是否已进行区间编码。
在此步骤中,服务器将会检查Hadoop集群是否已经对原XML文档进行区间编码,如果区间编码结果不存在,则执行步骤103。
步骤103:对XML文档进行区间编码。
本步骤中,使用MapReduce对XML进行编码,区间编码算法分成2个阶段,map阶段的部分编码和reduce阶段的完全编码。在算法中,输入的形式是键/值对。Map阶段中主要对2中不同类型的标签进行处理,分别是开始标签和结束标签。每当Map函数获取到组键值对,首先对其标签类型进行判断,并根据Map算法进行部分编码。Mapper处理完所有输入后,退出Map阶段前还要判断判断栈是否为空,如果栈不为空还要将栈中的信息保存起来,用于Reduce阶段的编码。Reducer则是对节点进行完整编码后输出。编码后的节点信息按从小到大的顺序存储到HDFS上不同的文件中。
编码阶段的Map和Reduce的算法如下。
IntervalMap Algorithm:
输入:标签数据集ENR
输出:不完整编码的数据集
IntervalReduce Algorithm:
输入:同标签名的一组不完整编码的数据集ENR;
输出:完整编码
步骤104:服务器查看是否已经进行取样统计。
为了计算出倾斜因子,需要取得一系列样本点来拟合单个分区上最大数据数量函数
P(x,θ)=(m-h)/(θx)+h。
步骤105:对区间编码结果进行取样统计。
本步骤中使用MapReduce对区间编码的结过进行取样操作。首先我们将区间分为2kr个区间,分别统计每个区间上的数据量和每相邻两个区间的冗余数,数据分布数组为Pk[2kr],冗余数组为d[2kr-1]。然后可以通过区间合并操作向下合并k次得到一系列数据分布数组Pk,Pk-1,…..P1,P0
统计操作的算法如下:
SamplingMap Algorithm:
输入:标签数据集ENR
输出:不完整的频率分布数组Pk[2kr],不完整的冗余数组d[2kr-1]
SamplingReduce Algorithm:
输入:同标签名的一组包含不完整的频率分布数组Pk[2kr],不完整的冗余数组d[2kr-1]的数据集ENR;
输出:不同分区数量下的频率数组Po,P1,…,Pk
步骤106:对查询语句进行解析。
本步骤中,要对查询语句进行解析,对XPath形式的查询语句,将其拆解为标签名和连接符,并将解析结果保存到解析类中。
步骤107:根据取样结果进行最小二乘估计。
在解析完语句之后,我们得到需要连接的多个节点名称,对步骤105中的取样结果中取所需的节点对其分布频率数组进行合并,即P=(∑tagnameP0,∑tagnameP1,...,∑tagnamePk)。
如定义9所述,令P′=(m-h)/(P-h),那么常数项则为0,令解线性代数方程组:
解出θ值。
步骤108:根据倾斜因子来确定分区长度,并进行负载均衡得到分区映射表。
根据公式6,分区长度为θB/r。为了更近一部优化数据分布,本发明还使用了基于贪心算法的负载均衡算法,来建立分区和reducer之间的映射关系。算法如下:
WorkBalance Algorithm:
输入:各个分区的频率数组P[n],每一项储存了数据对(partitionID,数据量:count),按数据量由大到小排序好
输出:分区和reducer的映射Map(partitionID,reducerID);
分区长度是一个单位区间长度,根据上述的区间编码定义,将XML文档的最大区间分为多个等分的区间,每个区间的长度就是分区长度。分区是一个逻辑上的数据划分,分区最终是要对应到各个reduce上,数据以分区为单位分配到各个reduce上,参考新的附图,下图中单条线段表示一个XML节点的区间编码记录,线段长度表示区间长度。虚线表示分2个区间的分割,如果实现线段被虚线分成n分,那么表示该记录在分区过程中会产生n个副本并且被分配到对应各个区间中。
步骤109:建立查询计划树
对于一个查询语句,不同的查询计划会使得执行代价不同。默认情况下查询计划树按照查询语句从左到右的顺序进行连接。
步骤110:执行MapReduce查询作业的Map阶段
本步骤中根据查询语句进行查询,在Map阶段,查询算法采取的策略是首先对读取的节点进行谓词过滤。根据查询计划树的不同有两种不同操作:第一种是进行两两元素之间的连接操作,对连接产生的中间结果进行区域划分;第二种是直接将读取到的节点进行输出,这是由于查询树中标签名是奇数个时导致的。在Map阶段的任务有两个:一是对读入的数据进行谓词过滤,二是对过滤完的数据进行连接判定。
当查询语句有谓词存在时,在Map阶段首先会其进行谓词过滤。读取到一个节点后,如果需要进行谓词连接,则进行相应的条件过滤,然后在Map阶段进行首次连接,Map阶段的连接如下算法所示。Map端进行过滤可以减少Map的输出节点数目,减少shuffle和reduce开销。
Map阶段进行组合的连接操作,每次读到一个节点的编码信息,就找出与其进行连接的祖先节点,进行连接判定,主要思想是:假设输入节点N,读取父亲节点Np,当N<Np时,进行关系判定,符合条件则进行分区输出,不符合则继续查找,直到N>Np则表明N不符合连接条件,读取下一个输入节点并从Np开始进行连接判断。具体过程参如下算法。
MapJoin Algorithm:
输入:节点数据集ENR,其祖先节点数据集AR
输出:节点对数据集
步骤111:根据分区映射表将map阶段的中间结果划分到各个reducer上
Map阶段的最后会进入Shuffle过程,对Map节点的结果进行分区。分区的过程如下:节点组合(parentEN,EN)的区间为EN的区间,根据分区规则,first=EN.start/partitionLenght,last=EN.end/partitionLenght,得到的partitionID为first到last,然后根据步骤108中分区和reducer的映射关系,将first到last个分区分配到对应的reducer中。
步骤112:执行MapReduce查询作业的Reduce阶段
Reduce阶段,Map阶段的中间结果将会被进一步处理,进行连接。shuffle阶段后,中间结果集已经按照编码的大小规则由小到大排序完毕,Reducer每读取一个节点,就会去其对应的祖先节点的栈中匹配每一个节点,如果连接判定成功,该数据是最终输出的数据,即该数据是查询节点的最后一个节点,则先则先判断partitionID是否为节点的最大partitionID,是的话才输出,不是则抛弃,这是为了避免不同分区输出相同的结果;如果该数据不是输出的数据,则压入到对应的栈中。
步骤113:根据MapReduce作业输出构造结果集返回给服务器。
本步骤中,根据作业的输出文件构造成XML数据返回给服务器。
步骤114:服务器将查询结果返回给客户端。
本步骤中,查询的结果将通过http协议,返回到客户端,客户端将查询结果进行整理并展示给用户。
实施例2
本实施例示出了用于实现实施例1的面向MapReduce的XML数据划分优化方法的系统,所述的系统包括客户端2和服务器1,所述的服务器1包括以下模块:
请求接收模块11:用于接收客户端2发送的XPath查询请求;
编码模块12:用于根据XPath查询请求,采用MapReduce模型对XML文档进行区间编码,得到区间编码结果;
取样模块13:用于采用MapReduce模型对区间编码结果进行取样统计,得到取样结果;
解析模块14:用于对XPath查询请求所包含的查询语句进行解析,得到解析结果;
倾斜因子计算模块15:用于根据解析结果对取样结果进行最小二乘估计法处理,得到倾斜因子;
分区模块16:用于根据倾斜因子确定分区长度,并根据负载均衡算法得到分区映射表;
查询计划树建立模块17:用于建立查询计划树;
构造结果计算模块18:用于根据查询计划树和分区映射表对取样结果进行MapReduce查询作业,得到构造结果;
输出模块19:用于将构造结果发送至客户端2。
客户端2包括:界面展示模块22和数据通信模块21;
界面展示模块22,用于与终端用户的交互,包括接收用户输入的查询语句,和服务端返回的查询结果进行整理展示。
数据通信模块21,用于服务端模块和客户端2模块之间的通信交互,本发明实施例中使用ajax方式通过http协议来传输查询语句和查询结果。
综上所述,本发明实施例提供面向MapReduce的XML数据划分优化方法及系统提供的一种分布式XML查询方法,该方式在分布式环境下,通过对XML文档的编码以及取样统计,对数据的划分进行优化,使得本方法和系统成为一种新的XML查询机制。
以上所述的仅为本发明的较佳实施例,凡在本发明的精神和原则范围内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种面向MapReduce的XML数据划分优化方法,其特征在于,包括以下步骤:
S1:服务器接收XPath查询请求;
S2:根据XPath查询请求,采用MapReduce模型对XML文档进行区间编码,得到区间编码结果;
S3:采用MapReduce模型对区间编码结果进行取样统计,得到取样结果;
S4:对XPath查询请求所包含的查询语句进行解析,得到解析结果;
S5:根据解析结果对取样结果进行最小二乘估计法处理,得到倾斜因子;
S6:根据倾斜因子确定XML文档的最大区间的分区长度,并根据负载均衡算法得到分区映射表;
S7:根据查询语句建立查询计划树;
S8:根据查询计划树和分区映射表对取样结果进行MapReduce查询作业得到构造结果;
S9:将构造结果发送至客户端。
2.根据权利要求1所述的面向MapReduce的XML数据划分优化方法,其特征在于,所述的S2中,采用MapReduce模型对XML文档进行区间编码的具体操作为:对XML文档进行Map阶段的部分编码结果和Reduce阶段的完全编码结果。
3.根据权利要求2所述的面向MapReduce的XML数据划分优化方法,其特征在于,所述的S3具体为:首先将区间编码结果分为2kr个区间,分别统计每个区间上的数据量和每相邻两个区间的冗余数,数据分布数组为Pk[2kr],冗余数组为d[2kr-1];
然后可以通过区间合并操作向下合并k次得到一系列数据分布数组Pk,Pk-1,…..P1,P0
其中,r为完全编码结果的数量,k为区间合并操作向下合并的次数。
4.根据权利要求3所述的面向MapReduce的XML数据划分优化方法,其特征在于,所述的S4具体为:对XPath形式的查询语句,将其拆解为标签名和连接符,并将解析结果保存到解析类中。
5.根据权利要求4所述的面向MapReduce的XML数据划分优化方法,其特征在于,所述的S5具体为:根据标签名和连接符,得到需要连接的多个节点名称;根据节点名称对S3中的取样结果中取所需的节点对其分布频率数组进行合并,即P=(∑tgnameP0,∑tagnameP1,...,∑tagnamePk)。
令P′(m-h)/(P-h),那么常数项则为0,令 解线性代数方程组:
解出θ值,θ值为倾斜因子。
6.根据权利要求5所述的面向MapReduce的XML数据划分优化方法,其特征在于,所述的S6中的分区映射表为分区和完全编码结果之间的分区映射表。
7.根据权利要求6所述的面向MapReduce的XML数据划分优化方法,其特征在于,所述的S8包括:
S81:执行MapReduce查询作业的Map阶段,根据查询语句进行谓词过滤和过滤后的数据进行连接判定,得到分区输出的中间结果;
S82:根据分区映射表将中间结果划分到各个完全编码结果上;
S83:执行MapReduce查询作业的Reduce阶段,读取完全编码结果中的每一个节点,并与祖先节点的栈中匹配每一个节点,如果连接判定成功,该数据是最终输出的数据;所述的最终输出的数据的集合为构造结果。
8.根据权利要求1所述的面向MapReduce的XML数据划分优化方法,其特征在于,所述的S2之前还包括S21:服务器查看待查询文档是否已进行区间编码,若是则进行S3,若否,则进行S2。
9.根据权利要求1所述的面向MapReduce的XML数据划分优化方法,其特征在于,所述的S3之前还包括S31:服务器查看是否已经进行取样统计;若是,则进行S4,若否,则进行S3。
10.一种用于实现权利要求1-9任一所述的面向MapReduce的XML数据划分优化方法的系统,其特征在于,所述的系统包括客户端和服务器,所述的服务器包括以下模块:
请求接收模块:用于接收客户端发送的XPath查询请求;
编码模块:用于根据XPath查询请求,采用MapReduce模型对XML文档进行区间编码,得到区间编码结果;
取样模块:用于采用MapReduce模型对区间编码结果进行取样统计,得到取样结果;
解析模块:用于对XPath查询请求所包含的查询语句进行解析,得到解析结果;
倾斜因子计算模块:用于根据解析结果对取样结果进行最小二乘估计法处理,得到倾斜因子;
分区模块:用于根据倾斜因子确定分区长度,并根据负载均衡算法得到分区映射表;
查询计划树建立模块:用于建立查询计划树;
构造结果计算模块:用于根据查询计划树和分区映射表对取样结果进行MapReduce查询作业,得到构造结果;
输出模块:用于将构造结果发送至客户端。
CN201610532546.0A 2016-07-07 2016-07-07 面向MapReduce的XML数据划分优化方法及其系统 Active CN106202364B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610532546.0A CN106202364B (zh) 2016-07-07 2016-07-07 面向MapReduce的XML数据划分优化方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610532546.0A CN106202364B (zh) 2016-07-07 2016-07-07 面向MapReduce的XML数据划分优化方法及其系统

Publications (2)

Publication Number Publication Date
CN106202364A true CN106202364A (zh) 2016-12-07
CN106202364B CN106202364B (zh) 2019-05-17

Family

ID=57472584

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610532546.0A Active CN106202364B (zh) 2016-07-07 2016-07-07 面向MapReduce的XML数据划分优化方法及其系统

Country Status (1)

Country Link
CN (1) CN106202364B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628972A (zh) * 2018-04-25 2018-10-09 咪咕音乐有限公司 一种数据表的处理方法、装置及存储介质
CN109698847A (zh) * 2017-10-23 2019-04-30 航天信息股份有限公司 一种基于请求处理时间的云存储系统均衡负载的读取方法及系统
CN110673794A (zh) * 2019-09-18 2020-01-10 中兴通讯股份有限公司 分布式数据的均衡处理方法、装置、计算终端和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793438A (zh) * 2012-11-05 2014-05-14 山东省计算中心 一种基于MapReduce的并行聚类方法
CN105005606A (zh) * 2015-07-03 2015-10-28 华南理工大学 基于MapReduce的XML数据查询方法和系统
CN105975440A (zh) * 2016-05-05 2016-09-28 浙江理工大学 一种基于图计算模型的矩阵分解并行化方法
CN106056427A (zh) * 2016-05-25 2016-10-26 中南大学 一种基于Spark的大数据混合模型的移动推荐方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793438A (zh) * 2012-11-05 2014-05-14 山东省计算中心 一种基于MapReduce的并行聚类方法
CN105005606A (zh) * 2015-07-03 2015-10-28 华南理工大学 基于MapReduce的XML数据查询方法和系统
CN105975440A (zh) * 2016-05-05 2016-09-28 浙江理工大学 一种基于图计算模型的矩阵分解并行化方法
CN106056427A (zh) * 2016-05-25 2016-10-26 中南大学 一种基于Spark的大数据混合模型的移动推荐方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109698847A (zh) * 2017-10-23 2019-04-30 航天信息股份有限公司 一种基于请求处理时间的云存储系统均衡负载的读取方法及系统
CN108628972A (zh) * 2018-04-25 2018-10-09 咪咕音乐有限公司 一种数据表的处理方法、装置及存储介质
CN108628972B (zh) * 2018-04-25 2020-11-06 咪咕音乐有限公司 一种数据表的处理方法、装置及存储介质
CN110673794A (zh) * 2019-09-18 2020-01-10 中兴通讯股份有限公司 分布式数据的均衡处理方法、装置、计算终端和存储介质
WO2021052169A1 (zh) * 2019-09-18 2021-03-25 中兴通讯股份有限公司 分布式数据的均衡处理方法、装置、计算终端和存储介质
CN110673794B (zh) * 2019-09-18 2021-12-17 中兴通讯股份有限公司 分布式数据的均衡处理方法、装置、计算终端和存储介质

Also Published As

Publication number Publication date
CN106202364B (zh) 2019-05-17

Similar Documents

Publication Publication Date Title
Shang et al. DITA: Distributed in-memory trajectory analytics
Zhao et al. Modeling MongoDB with relational model
CN103412897B (zh) 一种基于分布式结构的并行数据处理方法
CN106227800B (zh) 一种高度关联大数据的存储方法及管理系统
Dezert et al. A new probabilistic transformation of belief mass assignment
JP6928677B2 (ja) オンライン分析処理を行うためのデータ処理方法及び装置
CN104462609A (zh) 结合星型图编码的rdf数据存储与查询方法
CN103116625A (zh) 一种基于Hadoop的海量RDF数据分布式查询处理方法
CN105005606A (zh) 基于MapReduce的XML数据查询方法和系统
CN106294695A (zh) 一种面向实时大数据搜索引擎的实现方法
CN106202364A (zh) 面向MapReduce的XML数据划分优化方法及其系统
Ngu et al. B+-tree construction on massive data with Hadoop
CN104504154A (zh) 一种数据聚合查询的方法及装置
CN103678550A (zh) 一种基于动态索引结构的海量数据实时查询方法
CN101887458A (zh) 一种基于路径编码的xml文档索引方法
Deng et al. Lcjoin: Set containment join via list crosscutting
CN114911823A (zh) 面向云边端协同查询的深度学习代价估计系统、方法及设备
Ketsman et al. Distribution policies for datalog
CN114372174A (zh) 一种xml文档分布式查询方法及系统
CN103294791A (zh) 一种可扩展标记语言模式匹配方法
CN113722600A (zh) 应用于大数据的数据查询方法、装置、设备及产品
CN102841944A (zh) 一种实现大数据实时处理的方法
KR101515304B1 (ko) 하둡 기반의 리듀스-사이드 조인 처리 시스템의 리듀스-사이드 조인 질의 처리 방법
CN101667202A (zh) 一种多核架构下基于语义的发布订阅系统中并行匹配方法
DE102007056522A1 (de) Schnelle Berechnung von kompakten Poset-Isomorphie-Zertifikaten

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