CN104699698A - 基于海量数据的图查询处理方法 - Google Patents
基于海量数据的图查询处理方法 Download PDFInfo
- Publication number
- CN104699698A CN104699698A CN201310654842.4A CN201310654842A CN104699698A CN 104699698 A CN104699698 A CN 104699698A CN 201310654842 A CN201310654842 A CN 201310654842A CN 104699698 A CN104699698 A CN 104699698A
- Authority
- CN
- China
- Prior art keywords
- query
- graph
- tree
- inquiry
- path
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于海量数据的图查询处理方法,带来一系列有益的技术效果,如在面对海量的图数据,无论是在庞大的数据规模上,或是数据的内部结构和关系的多样和复杂上,都能有效的进行处理,可以在查询研究工作中很好的解决top-k问题,也能够直接的求解top-k的子图匹配。
Description
技术领域
本发明涉及计算机科学,尤其涉及一种基于海量数据的图查询处理方法。
背景技术
随着物联网、移动互联网、云计算以及各种数据自动采集技术的迅猛发展,许多应用领域在迅速积累着大量的数据。大数据将成为继云计算、物联网之后信息技术产业又一次颠覆性的技术变革。大数据不单指数据的量大,也指数据的结构多样化、内部关系复杂。图模型是一类表现力强而通用性高的数据结构,用于描述对象及对象之间相互联系的数据结构模型。简言之,图是是由节点(即对象)与连线(即对象间的联系)构成的。图数据是具有此类网络结构的各类数据的统称。
当前研究的图结构是许多海量数据如社会化媒体数据和生物数据的重要表现,所以图数据处理、查询和挖掘算法是解决大数据问题的关键技术。目前,国内外知名企业和高校对图的研究非常重视。比如:Microsoft研究院基于云计算的Trinity项目,研究用于数据中心的Querying Large Distributed Graph项目;Google用于大图处理的系统Pregel和MapReduce;亚虎研究院的GraphPartitioning项目;Neo4j公司的开源图数据库;UCSB大学的“Massive Graphs inClusters”项目。
图查询语言:从查询语言的功能来看,图的查询语言大体可分为两类。一类是Ad-hoc图查询语言:用以完成图中的某单项查询任务。通常这类图的查询没有明确的规定查询语言的语法,比如可达性类查询,最短路径/距离类查询,最近邻节点类查询,子图类查询。另一类是通用图查询语言:可以完成多项查询任务,通常这类图的查询明确定的规定了查询语言的语法及其表达能力,比如GraphQL、SoQL、ECRPQs等。
目前的一个研究是通过扩展已有的图查询语言来设计新型的图查询语言,通过增加其表达能力,来适应新的应用带来的需求。新型语言的设计需要在图的表达能力和查询复杂性之间有一个权衡。其中子图同构查询结构保持严密,但查询时间复杂度高(NP-complete),而图模拟查询虽然复杂性较低(多项式时间),但结构损失严重。目前这个问题没有得到很好的解决。而这个问题是解决大规模图查询的关键问题之一。本质上,这是一个查全率、查准率和查时间复杂性的权衡问题。
当微博数据表示为图时,图的顶点和边都带有类型。比如,顶点可以分为用户、应用、微群等类型,而这些不同类型顶点之间的边也有不同的类型。目前有很多传统的查询,如PageRank,关键字查询等,在多类型图上缺少合理的语义。而这是分析多类型图必须要解决的一个重要的问题。我们发现这方面的研究工作相对欠缺,只有很少的文献对这类问题进行了初步的探讨。
图的查询处理:图查询的研究包括图数据的查询、并行图查询和分布式图查询。因为不同的图查询的共性较少,大家主要针对某种特定查询语言做研究。另外,也研究如何通过建立图索引等方法来进行查询的优化。目前,有很多并行的图查询的软件包,Google也提供了Pregel和MapReduce来支持分布式图查询。但由于图的查询语言的特点,这些系统并不能有效的支持所有的查询语言,并且其中关键的功能仍然需要用户自己实现。
数据库应用里,早就存在着对子图匹配问题的研究,传统上,子图匹配是指子图同构,根据给定查询图的大小和结构来查找匹配,即一个小图是否完全包含在另一个图中或者是否包含在一个大型图数据的集合中。子图同构在数据库方面的主要应用是频繁子图挖掘:对于许多包含上千个节点的小型数据图集合的情况。
针对单个大型数据图所包含的子图进行匹配查询,我们将所有的这种同类工作可按照是否存在给定查询图来进一步区分。若用户没有指定查询图,采用关键字查找类研究,要求在数据图中找出包含用户给定的关键字的top-k连通树。
另外,许多工作是针对给出查询图的情况,也是本发明要研究的方向。许多研究并没有考虑找出查询图的top-k匹配。有的只研究了给定查询图的k个较好的匹配,可能其算法找出的k个匹配并不一定是所有最好的匹配,所以该论文中的问题定义与本文不同。有的在算法研究给定查询图的嵌入查询。如相似函数,比如图编辑距离,用于衡量匹配与查询图之间的相似度。可能其算法找到的top-k查询不要求所有的连接约束都满足数据图中的连接路径。但是,本发明的查询要求匹配结果与查询图具有相同的结构(精确匹配)。有的算法首先找出全部匹配,因为首先找出全部匹配再按权重排序并选出top-k解,这样会十分耗时,也不能直接用于kGPM。
发明内容
本发明的目的在于提供一种基于海量数据的图查询处理方法,能够快速和方便的基于海量数据进行图查询处理。
为了达到上述目的,本发明提供了一种基于海量数据的图查询处理方法,其包括以下步骤:
S1、定义路径长度S,遍历不同节点的出发路径,记录长度不大于所述路径长度S的路径,并重复通过Map、Reduce方法获得多个连接表;
S2、采用所述多个连接表构建一个多重排序匹配列表,并对该排序匹配列表进行全部查询,找到最接近的K个匹配来多维表示;
S3、采用所述多维表示建立一个图模型;
S4、根据所述图模型来定义一个查询区域,并计算所述排序匹配列表中序列的大小;
S5:定义查询图Q,并根据该查询图Q获得其任意生成树;
S6:根据所述排序匹配列表中序列的大小生成按从大到小顺序排列的查询树,得排好序的查询树匹配列表;
S7:对每条查询树缺失的边进行最短路径计算;
S8:通过所述查询树缺失的边的最短路径寻找对应的查询图Q;
S9:所述查询图Q采用评分函数计算出其权重,以得到查询图Q的top-k解。
优选的,在步骤S1中,所述Map、Reduce方法采用MapReduce计算模型分解而来。
优选的,在步骤S3中,所述图模型包含查询图和查询树的图嵌入。
优选的,在步骤S4中,对于查询区域,需完全覆盖这个查询区域,覆盖方法包括:移动垂直于每个坐标轴的平面来扫描整个空间,匹配区域必须包含在其中至少一个扫描平面的区域中。
优选的,在S9中,所述采用的评分函数为其中,u,v∈MQ,(A,D)=(Λ-1(u),Λ-1(v))为Q中的边,c(A,D)为与查询边(A,D)关联的系数。
本发明提供了一种基于海量数据的图查询处理方法,带来一系列有益的技术效果,如在面对海量的图数据,无论是在庞大的数据规模上,或是数据的内部结构和关系的多样和复杂上,都能有效的进行处理,可以在查询研究工作中很好的解决top-k问题,也能够直接的求解top-k的子图匹配。
附图说明
图1为本发明中基于海量数据的图查询处理方法的流程图;
图2为本发明中基于社会网络中的子图匹配示意图;
图3为本发明中示例数据图GD的示意图;
图4为本发明中示例数据图上的查询/匹配的示意图;
图5为本发明中图的存储模式的示意图;
图6为本发明中查询树与排序表的示意图;
图7为本发明中进行MapReduce并行处理处理的构架示意图;
图8为本发明中进行MapReduce并行程序的任务粒度;
图9为本发明中生成树及其对应t-list;
图10为本发明中进行扫描读取连接表生成排序列表的过程示意图。
具体实施方式
下面将结合附图以及具体实施例来对本发明作进一步详细说明。
请参考图1至图10本发明提供了一种基于海量数据的图查询处理方法,其包括以下步骤:
S1、定义路径长度S,遍历不同节点的出发路径,记录长度不大于所述路径长度S的路径,并重复通过Map、Reduce方法获得多个连接表;
S2、采用所述多个连接表构建一个多重排序匹配列表,并对该排序匹配列表进行全部查询,找到最接近的K个匹配来多维表示;
S3、采用所述多维表示建立一个图模型;
S4、根据所述图模型来定义一个查询区域,并计算所述排序匹配列表中序列的大小;
S5:定义查询图Q,并根据该查询图Q获得其任意生成树;
S6:根据所述排序匹配列表中序列的大小生成按从大到小顺序排列的查询树,得排好序的查询树匹配列表;
S7:对每条查询树缺失的边进行最短路径计算;
S8:通过所述查询树缺失的边的最短路径寻找对应的查询图Q;
S9:所述查询图Q采用评分函数计算出其权重,以得到查询图Q的top-k解。
优选的,在步骤S1中,所述Map、Reduce方法采用MapReduce计算模型分解而来。
优选的,在步骤S3中,所述图模型包含查询图和查询树的图嵌入。
优选的,在步骤S4中,对于查询区域,需完全覆盖这个查询区域,覆盖方法包括:移动垂直于每个坐标轴的平面来扫描整个空间,匹配区域必须包含在其中至少一个扫描平面的区域中。
优选的,在S9中,所述采用的评分函数为其中,u,v∈MQ,(A,D)=(Λ-1(u),Λ-1(v))为Q中的边,c(A,D)为与查询边(A,D)关联的系数。
请参照图1至图10,下面以一个具体实施例进行说明,本发明提供了如何在一个大型数据图中给定查询图的top-k匹配问题。首先,定义顶点-标签数据图GD=(V,E,Σ,Λ),其中V为顶点集合;E为无向边的集合;Σ为顶点标签的集合,通常远不及GD中的所有顶点数;Λ是顶点集合到标签集合的映射函数,若vi∈V,一个标签X∈Σ,则Λ(vi)表示顶点vi的标签。给定一个标签X∈Σ,则X的扩展为ext(X),该集合中包含了GD中所有标签为X的顶点。定义路径的权重为包含的边的权重之和,若边(u,v)∈E,每条边权重为1,用δ(u,v)表示顶点u和v之间的最短路径的权重。下面用集合V(G)和E(G)来表示任意图G的顶点集合和边集合。
请参考图2,其为一个简单的数据图GD,其中所有边的权重值为1。为简化说明,省略其他的标签,设标签集合为{CEO,Doctor,Manager}。图3显示了两顶点之间的两种连接线,其中,实线代表图中的边,虚线代表路径,该路径包含多个标签不同于以上三种标签的顶点,因此,忽略这些路径上的顶点,每条路径的长度标在图中。
定义查询图Q=(V(Q),E(Q),WQ),为加权无向连通图,其中,V(Q)为标签集合Σ的一个子集,E(Q)为V(Q)中顶点之间边的集合。为简化说明,本文假定V(Q)中没有重复的标签。对于重复的标签,本文中的方法很容易扩展。对于每一条边(X,Y)∈E(Q),权重函数WQ(X,Y)为(X,Y)指定一个系数c(X,Y)。若一个查询图Q中没有环,则称为树查询(tree query),若有环,则称为环查询(cyclic query)或图查询(graph query)。下文中提到的查询图均为环查询。图4中(a)部分中的查询图有三个标签,分别是CEO(简写为C)、Doctor(D)、Manager(M),各边系数c(C,D),c(D,M),c(C,M)均为1。
给定一个查询图Q,子图匹配问题(graph pattern matching problem,GPM)要求找出Q在数据图GD中的匹配MQ,MQ是一个n维顶点元组<v1,v2,...,vn,>,其中,vi∈V(GD)且n=|V(Q)|。若Q在GD中存在匹配MQ,则Q和MQ之间存在一一映射,该映射满足两个条件,标签条件和结构条件。
标签条件:任意顶点X∈V(Q),存在顶点x∈MQ,x的标签是X。
结构条件:对于任意边(X,Y)∈E(Q),存在两个对应的顶点x,y∈MQ,x的标签是X,y的标签是Y,x和y在GD中有路径相连。
GPM要求找出给定查询的全部匹配。对一个大型数据图进行查询会返回大量的匹配结果,将所有的匹配返回给用户并不利于用户对结果的分析和处理,而且计算全部的匹配结果会十分耗时,因此本发明研究快速的top-k子图匹配算法。
kGPM问题:定义top-k的子图匹配问题需要定义评分函数,许多已有的评分函数是基于顶点评分和边评分。若MQ为Q在GD中的匹配,顶点评分反映MQ中顶点的重要性,边评分反映MQ中边的连接是否紧密。
为简单起见,本文的评分函数仅考虑边评分。评分函数如下:
其中,u,v∈MQ,(A,D)=(Λ-1(u),Λ-1(v))为Q中的边,c(A,D)为与查询边(A,D)关联的系数。因此,对于Q的每条查询边,MQ中就有相应的元组权重值。等式(1)表示MQ中所有属于|E(Q)|的权重之和。GD中,两顶点的最短路径权重越小,认为这两个顶点连接越紧密,因此score(MQ)值越小,则认为匹配MQ越好。
top-k子图匹配问题:给定一个查询图Q和数据图GD,Q的top-k匹配就是在GD中的k个匹配,即列表(MQ (1),MQ (2),…,MQ (k)),并且这k个匹配满足两个条件:(1)在这k个匹配中,若i<j,则score(MQ (i))≤score(MQ (j)),i,j∈1,2,…,k;(2)对Q的任何不在该列表中的匹配MQ,有score(MQ (i))≤score(MQ),i∈1,2,…,k。本发明研究带环查询的kGPM问题。
图4中(b)和(c)部分分别显示了权重值均为8的两个匹配结果MQ (1)=<8,6,9>和MQ (2)=<4,2,3>。
找出环查询的top-k匹配很难,对于top-k的子树匹配问题,存在着线性时间和线性空间复杂度的算法。为了找到查询图Q的top-k解,需要动态构建查询树的排序匹配列表。也就是说,给定一个查询图Q,我们选择一棵或多棵查询树来构建这些查询树的排序匹配列表,同时,对每个查询树的匹配结果,我们将其扩展成查询图Q的匹配。当成功获得top-k匹配后,子树匹配的计算过程就会停止。
方法综述:找出环查询的top-k匹配很难,对于top-k的子树匹配问题,存在着线性时间和线性空间复杂度的算法。为了找到查询图Q的top-k解,需要动态构建查询树的排序匹配列表。也就是说,给定一个查询图Q,我们选择一棵或多棵查询树来构建这些查询树的排序匹配列表,同时,对每个查询树的匹配结果,我们将其扩展成查询图Q的匹配。当成功获得top-k匹配后,子树匹配的计算过程就会停止。
具体来说,对于一个查询图Q,其任意一棵生成树都可以作为寻找Q的top-k匹配的查询树。生成树的匹配结果是按照权重大小排序的,因此对于每一个查询树,其匹配结果形成了排好序的查询树匹配列表。为了简化说明,用t-lsits表示这个排序列表。与排序列表的连续扫描一样,t-lsits也是逐渐创建和处理的:在查询树t-lsits里,所有的查询树匹配都要被验证,返回的最新匹配会立即被处理。最后根据Q中有的而查询树中缺失的边,将查询树的匹配拓展成Q的匹配。对于每条缺失的边,比如(A,D),查询树匹配已有对应的顶点为a和d,我们只需找到a和d之间的最短路径,以及考虑对应Q的权重。当满足以上条件之后,也就得到了Q的匹配。
如图6所示,T1和T2是图4(a)部分中Q的查询树,L1和L2分别是T1和T2的排序匹配列表。表中的第1列是按权重值从小到大排列的所有T1或T2的匹配,第3列是匹配的权重值。要得到总权重值,还需考虑缺失边的权重,因此,L1和L2表中的匹配排列顺序区别很大。
创建生成树匹配列表:我们简单回顾创建生成树匹配列表t-lsits的创建和存储所花费的代价。对于一个给定的查询树T的top-k匹配,我们采用自底向上的方法:首先考虑T的最小的子树,然后考虑较大的子树,最后是整个树T。数据图GD以边传递闭包的形式存储,传递闭包可能很大,但存在较好的方法对其进行压缩,如2-hop覆盖方法,而且能有效的支持大规模数据图的复杂查询。
传递闭包以数据库中表的形式存储,若R(A,D)为图中一个表,则其具有如下形式:AD_CONN_(A,D,dist),列A和D表示标签为A和标签为D的顶点,dist表示相应顶点之间最短路径的距离。若(a,d,δ(a,d))为表中的一个记录,则有a,d∈V(GD),a的标签为A,d的标签为D,δ(a,d)为顶点a和d的最短路径的权重,表中的记录按照dist值从小到大排列。下文用R(A,D)来指代这样的表。图GD的标签集合为Σ,因此图GD会有O(|Σ|2)个这样的表。当t表示R(A,D)中的一个记录,对于a,d∈t,t·dist就是δ(a,d)。这样的表支持顺序访问,可以按顺序扫描,当给定两个顶点a,d,根据索引很容易找到对应顶点的最短路径权重值δ(a,d),比如B+树。图5列出了图2中数据图GD中的三个表格:R(M,D)、R(D,C)、R(M,C)。
该算法存在线性时间和空间的复杂度O(Σ(X,Y)∈E(T)|R(X,Y)|)。若查询树为T,算法返回top-1匹配的时间和空间复杂度为O(Σ(X,Y)∈E(T)|R(X,Y)|),而返回其他匹配的时间和空间复杂度为固定的量Δ,它们与给定的数据图的大小并不相关。子树匹配算法首先需要对查询树进行自底向上的分解,但对一个带环的查询图无法进行这种分解操作,因此子树匹配算法并不能直接用来求解子图匹配问题。
挑战性:虽然创建一个t-lsits可以花费最小的代价,但是使用多个t-lsits解决kGPM问题的代价并不一定更高。因为,一个排序列表里面的前k个匹配并不包含所有的kGPM匹配结果,这时,若果将T扩展成Q,那么相应的Q的总匹配权重可能会增加许多。另一方面,不同的t-lsits可以包含kGPM匹配的不同部分,这样使用多个列表可能比单一列表快。下面的示例会说明这一点。图6中的任何一个排序列表,必须验证不少于7个匹配来获得top-k匹配。当同时考虑两个排序列表时,两个表上最好的两个匹配就是kGPM的匹配结果。
另一方面,对于kGPM问题,使用的查询树也不是越多越好,因为创建许多的排序表需花费很大代价。因此,问题的难点就是如何选择一组查询树,使得查找给定kGPM的代价最小。即使给定一组查询树,还有一个问题:循环方式访问每一个排序列表,每次循环返回一条记录。但是,对于查询图的生成匹配,不同的列表有不同的选择度。因此,给定一组查询树,本发明进一步研究一个最好的办法来协调各个t-lsits以达总体代价最优化。
为此,可采用最优化查询来解决上述难题,通过基于代价的最优化查询,找出最优查询方案。其基本思路是设定代价模型来估计每种查询方案的最小代价,然后找出所有查询方案中代价最小的查询方案。为了到达这个目的,我们首先基于多重的t-lsits定义kGPM的一个多维表示。接着,我们用这个多维表示建立了一个实际的最优化模型。在这个模型中我们提出一个代价模型和每个t-lsits的大小估计。这样就可以计算出kGPM问题中代价最小的查询方案。
在此,我们简要的介绍一下多维表示。它包含Q和查询树的图嵌入,kGPM的匹配区域定义以及如何在h维空间中查找匹配结果的陈述。通常,查询方案P中指定了h个查询树,T1,T2,…,Th,我们将所有Q的匹配分解成查询树并插入到相应的h维空间的顶点上,Ti 1≤i≤h表示第i维定点。在这个h维空间中,每个查询图Q的匹配MQ指定以下坐标(Y1(MQ),Y2(MQ),…,Yh(MQ)),其中Yi(MQ)由第i个查询树来定义。这样Q的top-k的匹配对应于该空间中的一个区域,叫做匹配区域。可以发现,要找到kGPM的匹配,必须覆盖这个匹配区域。覆盖方法如下:移动垂直于每个坐标轴的平面来扫描整个空间,匹配区域必须包含在其中至少一个扫描平面的某个区域内。那么查询第i个查询树以及对应的匹配列表的过程可以看成是对第i维空间的扫描操作。
设Mi是一个查询树匹配,MQ是Q的匹配。Yi(MQ)是查询树Ti的评分函数。其定义如下:
其中,(A,D)=(∧-1(u),∧-1(v)),u,v∈Mi为Ti中的查询边,c(A,D)为等式(1)中给定的系数,n(A,D)为查询边(A,D)在T1,T2,…,Th中出现的总次数。因此,对于给定的h查询树有:
score(MQ)≥Y1(MQ)+Y2(MQ)+…+Yh(MQ) (3)
上述等式在h查询树中至少有一个包含Q的查询边时成立。在本文例子中,有 和
使用h个变量,y1,y2,…,yh来构造一个h维空间,其中第i维度有yi来定义。对于给定的查询图Q的匹配结果MQ,其第i维度的值是由Yi(MQ)y1,1≤i≤h确定的。因此,每个匹配结果MQ可以映射到h维空间的点(Y1(MQ),Y2(MQ),…,Yh(MQ))上。图7的(a)部分举例说明了一个由y1和y2确定的二维空间,在这个二维空间上,可以用(Y1(MQ),Y2(MQ))来确定一个匹配MQ的位置。
若MQ可以从查询树匹配结果Mi扩展得到,那么Mi在h维空间中的位置与MQ的位置相同。因为,Mi包含了MQ的所有节点,所以Mi在每个维度上的值跟MQ是相同的。在图7的(a)部分中,实心点表示了所有的查询图和查询树的匹配结果。
使用yi直接表示score(MQ),根据等式(3)有:
score(MQ)≥y1+y2+…+yh (4)
设MAX是Q的第k个匹配结果的得分,那么其他的k-1个匹配必须满足y1+y2+…+yh≤MAX。因此,所有的kGPM的结果都必须在以下的空间范围内:
图7的(a)部分中举例说明了当k=4的时候的二维空间,即被两条坐标轴和直线y1+y2=MAX所包含的三角区域。
设αi为第i个t-lsits中权重最大的,即对于所有的查询树匹配结果Mi都有score′(MQ)≤αi,设第i个t-lsits中最后一个匹配结果,score′(MQ)≤αi。所以,每个查询树的匹配过程可以看成是用一个垂直于坐标轴的平面从坐标轴开始到yi=αi扫描。所有的Q的匹配结果都能够识别。
这样,查找kGPM的过程就可以看成通过移动一个平面来扫描整个匹配区域。图7中(c)部分举例说明了仅使用一个查询树(可以使用T1或者T2)的情况。当使用T1或者T2进行扫描时,最小的扫描区域分别是C1或者C2。在这种情况下,α1=α2=MAX。
当使用多颗树的查询方案时,每个查询树的查询操作可以以比MAX小很多的查询权重。例如在图7的(d)部分中,T1和T2可以分别在α1和α2,α1+α2=MAX处停止查询操作。因此,对于α1和α2,我们不需要生成M1和M2,其中α1≤score′(M1)≤MAX,α2≤score′(M2)≤MAX。根据以上结论,用一个查询树的方案所得到的匹配结果可能比使用多棵树的方案所得到的匹配结果更多。
在实现高可扩展的分布并行方式处理子图模式匹配查询需要把处理细化为路径搜索和查询时计算两个部分分别考虑。由于这些都是数据密集型处理,适合考虑通过Map任务和Reduce任务的分解、综合及流水化(pipeline)完成达到并行。整体上说,路径搜索部分的处理是遍历所有不同节点出发的到图中附近所有顶点长度小于S的最短路径,并生成所有的连接表(如R(A,D)等等);而查询时计算顺序数据访问路径搜索部分所得的连接表,并且进行大量的分布的聚集操作得到所有生成树的树匹配排序列表,最后按上述快速图查询处理方法完成所有处理。
路径搜索:面向海量数据处理的云计算技术核心是MapReduce计算模型。MapReduce计算模型将复杂的分布式计算简化分解成Map和Reduce两类基本任务,彼此有机的协作。这些Map任务和Reduce任务分散在集群计算环境中不同的计算节点上,以实现大规模分布计算的可扩展性。Map任务从分布式文件系统读入数据,再将不同数据元素生成(key,value)对,其中value可为任何元组,对象或数据块。Map任务将(key,value)对按key值分别存储。Master节点则通知一个Reduce任务取得同一个key的所有(key,value)对作为这个Reduce任务的输入。这个Reduce任务使用所有的value数据计算。即Map任务的结果作为Reduce操作的输入,Reduce操作的结果作为输出。而且,Reduce的输出可再一次成为新一轮的Map操作的输入。这样,系统以流水化的方式执行多重MapReduce并行程序,直至程序算法的整体逻辑完全执。
为了能快速遍历所有不同节点出发的所有长度小于等于S的路径,我们考虑通过Map任务和Reduce任务对路径搜索任务分解。简单地说,我们使用多个计算节点同时遍历从多个不同源节点出发的路径。这里关键的问题是我们无须一次遍历至距离为S的节点以一次产生所有长度小于等于S的路径,因为那样会使某一节点产生大量的路径而无法完成该节点的计算,另外,如果该节点读取大量结果路径出错更会使系统需要重新分配计算。基于以上考虑,我们设计一套具有可调任务粒度的MapReduce并行程序。通过粒度的调节,可以更好控制多个运算节点的负载平衡。这种粒度由从某一源节点遍历至其他目标节点的最远距离决定。
如图8所示,考虑给定的统一初始距离值d,由节点υ遍历至其他目标节点u1,u2,…,uk的这个距离范围d内所有路径由某一Map任务节点找出(图中围绕υ的内部阴影部分)。同理,从节点u1,u2,…,uk的遍历也可由其相应Map任务节点完成。而Reduce任务将所有遍历出的路径通过中间结点连接为更长的最短路径,比如通过图中u1,u2,…,uk,可将从υ出发的路径连接至长度为d+1到2×d的路径而得到距离范围2×d内的所有路径(图中围绕υ的内部阴影部分)。输出可以在次进行MapReduce,直到所得的路径是所有需要的路径,即长度可以为S。这个统一初始距离值d控制任务粒度的大小。粒度越大则完成一次MapReduce所需的内存和CPU代价越多,但整体MapReduce次数较少。当d=1时,路径由两条边的连接生成;当d=S时,Map任务直接完成某一源节点的路径搜索。所以,基于1≤d≤S的任务粒度可调;通过优化任务粒度能使整个处理最佳,我们将研究任务粒度的优化问题。
具体地说,首次Map任务生成的(key,value)要使用value记录所有长度小于d的所有最短路径一次,其中key为路径的最后一个节点;并要生成(key,value)使用value记录所有等于d的所有路径两次,key分别为路径的第一个节点或最后一个节点。在以前的例子中,假设从υ出发的长度小于d的所有路径为长度等于d的所有路径为υ的Map任务将产生:
所有的路径被Map任务按同一个源节点(有“from”的key-value对)和目标节点(有“to”的key-value对)分配给同一个Reduce任务。这个Reduce任务可以将具有同一个连接节点的两段路径得到成更长的路径,并以此类推。比如可由处理key为u1的Reduce任务将为连接为一系列长度为d+1,d+2,…,2×d的最短路径。所得路径按源节点υ和其他目标节点u1,u2,…,uk的标签存到磁盘上的所有的连接表(如R(A,D)等等)。
查询时计算:该阶段处理HDFS上存储的大量连接表得到执行所给定kGPM的所有t-lists这一个过程。其余kGPM处理均可参照在上述子图模式匹配的快速高效处理方法部分内容。
图9根据我们kGPM的示例数据图的例子,给出了1棵生成树和它对应的t-list。该排序列表的生成过程是扫描读取(M,D)和(M,C)的连接表,根据标签为M的不同节点,如9、10和3,组合(M,D)和(M,C)的连接表的路径。此过程可由图10说明。
可以发现此过程是针对不同具有M标签的顶点的聚集操作,我们从HDFS上读取连接表的时候,以不同具有M标签的定点为key分派数据,各自组合(Map阶段)。然后归并所得相同具有M标签的顶点的组合得到,并排序得到最终的排序列表t-list(Reduce阶段)。而如何分解较大的生成树,以较少的MapReduce遍数和中间结果数完成处理,仍将在本项目中仔细研究。
为了更好地支持现今互联网上真实的大规模图应用,本发明考虑了千万和数亿规模的大图。在高可扩展的分布并行方式处理子图模式匹配查询研究上,我们提出了新颖的技术路线。具体的是,将计算不确定图的任务分解为基于图遍历的路径搜索以及查询时计算。适合考虑通过Map任务和Reduce任务的分解、综合及流水化(pipeline)完成达到并行。
综合来说,本发明带来一系列有益的技术效果,如在面对海量的图数据,无论是在庞大的数据规模上,或是数据的内部结构和关系的多样和复杂上,都能有效的进行处理,可以在查询研究工作中很好的解决top-k问题,也能够直接的求解top-k的子图匹配。
可以理解的是,对于本领域的普通技术人员来说,可以根据本发明的技术构思做出其他各种相应的改变与变形,而所有这些改变与变形都应属于本发明权利要求的保护范围。
Claims (5)
1.一种基于海量数据的图查询处理方法,其特征在于,包括以下步骤:
S1、定义路径长度S,遍历不同节点的出发路径,记录长度不大于所述路径长度S的路径,并重复通过Map、Reduce方法获得多个连接表;
S2、采用所述多个连接表构建一个多重排序匹配列表,并对该排序匹配列表进行全部查询,找到最接近的K个匹配来多维表示;
S3、采用所述多维表示建立一个图模型;
S4、根据所述图模型来定义一个查询区域,并计算所述排序匹配列表中序列的大小;
S5:定义查询图Q,并根据该查询图Q获得其任意生成树;
S6:根据所述排序匹配列表中序列的大小生成按从大到小顺序排列的查询树,得排好序的查询树匹配列表;
S7:对每条查询树缺失的边进行最短路径计算;
S8:通过所述查询树缺失的边的最短路径寻找对应的查询图Q;
S9:所述查询图Q采用评分函数计算出其权重,以得到查询图Q的top-k解。
2.根据权利要求1所述的基于海量数据的图查询处理方法,其特征在于,在步骤S1中,所述Map、Reduce方法采用MapReduce计算模型分解而来。
3.根据权利要求1所述的基于海量数据的图查询处理方法,其特征在于,在步骤S3中,所述图模型包含查询图和查询树的图嵌入。
4.根据权利要求1所述的基于海量数据的图查询处理方法,其特征在于,在步骤S4中,对于查询区域,需完全覆盖这个查询区域,覆盖方法包括:移动垂直于每个坐标轴的平面来扫描整个空间,匹配区域必须包含在其中至少一个扫描平面的区域中。
5.根据权利要求1所述的基于海量数据的图查询处理方法,其特征在于,在S9中,所述采用的评分函数为其中,u,v∈MQ,(A,D)=(Λ-1(u),Λ-1(v))为Q中的边,c(A,D)为与查询边(A,D)关联的系数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310654842.4A CN104699698A (zh) | 2013-12-05 | 2013-12-05 | 基于海量数据的图查询处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310654842.4A CN104699698A (zh) | 2013-12-05 | 2013-12-05 | 基于海量数据的图查询处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104699698A true CN104699698A (zh) | 2015-06-10 |
Family
ID=53346833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310654842.4A Pending CN104699698A (zh) | 2013-12-05 | 2013-12-05 | 基于海量数据的图查询处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104699698A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138601A (zh) * | 2015-08-06 | 2015-12-09 | 中国科学院软件研究所 | 一种支持模糊约束关系的图模式匹配方法 |
CN106446143A (zh) * | 2016-09-21 | 2017-02-22 | 四川长虹电器股份有限公司 | 基于图结构匹配的智能推荐系统及方法 |
CN106528757A (zh) * | 2016-11-03 | 2017-03-22 | 北京中安智达科技有限公司 | 一种面向大数据的关系分析展示方法 |
CN106547817A (zh) * | 2016-09-28 | 2017-03-29 | 昆明理工大学 | 一种针对环境法律法规的查询方法 |
WO2017076296A1 (zh) * | 2015-11-03 | 2017-05-11 | 华为技术有限公司 | 处理图数据的方法和装置 |
CN106874422A (zh) * | 2017-01-25 | 2017-06-20 | 东南大学 | 一种面向关系型数据库的图查询方法 |
CN106991195A (zh) * | 2017-04-28 | 2017-07-28 | 南京大学 | 一种分布式的子图枚举方法 |
CN107817996A (zh) * | 2017-10-13 | 2018-03-20 | 贵州白山云科技有限公司 | 一种GraphQL请求的优化方法及系统 |
CN108197491A (zh) * | 2017-12-29 | 2018-06-22 | 西安电子科技大学 | 一种基于密文的子图检索方法 |
CN109658033A (zh) * | 2018-12-26 | 2019-04-19 | 江苏满运软件科技有限公司 | 货源路线相似度计算方法、系统、设备及存储介质 |
CN113064911A (zh) * | 2020-01-02 | 2021-07-02 | 北京中关村科金技术有限公司 | 查询方法、装置以及存储介质 |
CN115842684A (zh) * | 2023-02-21 | 2023-03-24 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种基于mdata子图匹配的多步攻击检测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7330848B2 (en) * | 2003-05-23 | 2008-02-12 | Microsoft Corporation | Method and apparatus for generating statistics on query expressions for optimization |
CN101421729A (zh) * | 2006-03-03 | 2009-04-29 | 奥多比公司 | 有效表示和搜索数据库中的有向无环图结构的系统和方法 |
US8296327B2 (en) * | 2009-05-28 | 2012-10-23 | Microsoft Corporation | Short paths in web graphs with small query time |
CN103077216A (zh) * | 2012-12-28 | 2013-05-01 | 中国科学院深圳先进技术研究院 | 子图匹配装置及子图匹配的方法 |
CN103345509A (zh) * | 2013-07-04 | 2013-10-09 | 上海交通大学 | 获取路网上复反向最远邻居的层次分区树方法及系统 |
-
2013
- 2013-12-05 CN CN201310654842.4A patent/CN104699698A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7330848B2 (en) * | 2003-05-23 | 2008-02-12 | Microsoft Corporation | Method and apparatus for generating statistics on query expressions for optimization |
CN101421729A (zh) * | 2006-03-03 | 2009-04-29 | 奥多比公司 | 有效表示和搜索数据库中的有向无环图结构的系统和方法 |
US8296327B2 (en) * | 2009-05-28 | 2012-10-23 | Microsoft Corporation | Short paths in web graphs with small query time |
CN103077216A (zh) * | 2012-12-28 | 2013-05-01 | 中国科学院深圳先进技术研究院 | 子图匹配装置及子图匹配的方法 |
CN103345509A (zh) * | 2013-07-04 | 2013-10-09 | 上海交通大学 | 获取路网上复反向最远邻居的层次分区树方法及系统 |
Non-Patent Citations (1)
Title |
---|
CHENG JIEFENG等: "《Top-k graph pattern matching over large graphs》", 《DATA ENGINEERING (ICDE), 2013 IEEE 29TH INTERNATIONAL CONFERENCE ON》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138601B (zh) * | 2015-08-06 | 2019-03-26 | 中国科学院软件研究所 | 一种支持模糊约束关系的图模式匹配方法 |
CN105138601A (zh) * | 2015-08-06 | 2015-12-09 | 中国科学院软件研究所 | 一种支持模糊约束关系的图模式匹配方法 |
WO2017076296A1 (zh) * | 2015-11-03 | 2017-05-11 | 华为技术有限公司 | 处理图数据的方法和装置 |
CN106446143A (zh) * | 2016-09-21 | 2017-02-22 | 四川长虹电器股份有限公司 | 基于图结构匹配的智能推荐系统及方法 |
CN106446143B (zh) * | 2016-09-21 | 2019-12-24 | 四川长虹电器股份有限公司 | 基于图结构匹配的智能推荐系统及方法 |
CN106547817B (zh) * | 2016-09-28 | 2019-11-08 | 昆明理工大学 | 一种针对环境法律法规的查询方法 |
CN106547817A (zh) * | 2016-09-28 | 2017-03-29 | 昆明理工大学 | 一种针对环境法律法规的查询方法 |
CN106528757A (zh) * | 2016-11-03 | 2017-03-22 | 北京中安智达科技有限公司 | 一种面向大数据的关系分析展示方法 |
CN106874422A (zh) * | 2017-01-25 | 2017-06-20 | 东南大学 | 一种面向关系型数据库的图查询方法 |
CN106874422B (zh) * | 2017-01-25 | 2019-07-26 | 东南大学 | 一种面向关系型数据库的图查询方法 |
CN106991195A (zh) * | 2017-04-28 | 2017-07-28 | 南京大学 | 一种分布式的子图枚举方法 |
CN106991195B (zh) * | 2017-04-28 | 2020-08-11 | 南京大学 | 一种分布式的子图枚举方法 |
CN107817996A (zh) * | 2017-10-13 | 2018-03-20 | 贵州白山云科技有限公司 | 一种GraphQL请求的优化方法及系统 |
CN108197491A (zh) * | 2017-12-29 | 2018-06-22 | 西安电子科技大学 | 一种基于密文的子图检索方法 |
CN109658033A (zh) * | 2018-12-26 | 2019-04-19 | 江苏满运软件科技有限公司 | 货源路线相似度计算方法、系统、设备及存储介质 |
CN113064911A (zh) * | 2020-01-02 | 2021-07-02 | 北京中关村科金技术有限公司 | 查询方法、装置以及存储介质 |
CN113064911B (zh) * | 2020-01-02 | 2024-04-19 | 北京中关村科金技术有限公司 | 查询方法、装置以及存储介质 |
CN115842684A (zh) * | 2023-02-21 | 2023-03-24 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种基于mdata子图匹配的多步攻击检测方法 |
CN115842684B (zh) * | 2023-02-21 | 2023-05-12 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种基于mdata子图匹配的多步攻击检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699698A (zh) | 基于海量数据的图查询处理方法 | |
CN105550268B (zh) | 大数据流程建模分析引擎 | |
Yan et al. | Quegel: A general-purpose query-centric framework for querying big graphs | |
CN106874426B (zh) | 基于Storm的RDF流式数据关键词实时搜索方法 | |
EP2932412A2 (en) | Graph query processing using plurality of engines | |
Ji et al. | Inverted grid-based knn query processing with mapreduce | |
CN104462351B (zh) | 一种面向MapReduce范型的数据查询模型与方法 | |
CN106021457A (zh) | 基于关键词的rdf分布式语义搜索方法 | |
CN106528648A (zh) | 结合Redis内存数据库的分布式RDF关键词近似搜索方法 | |
Kacem et al. | MapReduce-based k-prototypes clustering method for big data | |
Wang et al. | Cleanix: A parallel big data cleaning system | |
CN106445913A (zh) | 基于MapReduce的语义推理方法及系统 | |
Gu et al. | Effective and efficient clustering methods for correlated probabilistic graphs | |
Jin et al. | Querying web-scale knowledge graphs through effective pruning of search space | |
Ji et al. | Scalable nearest neighbor query processing based on inverted grid index | |
CN115237937A (zh) | 一种基于星际文件系统的分布式协同查询处理系统 | |
CN106971005A (zh) | 一种云计算环境下基于MapReduce的分布式并行文本聚类方法 | |
Gopalakrishnan et al. | Big Data in building information modeling research: survey and exploratory text mining | |
Bordogna et al. | A flexible framework to cross-analyze heterogeneous multi-source geo-referenced information: The J-CO-QL proposal and its implementation | |
Zhou et al. | Clustering analysis in large graphs with rich attributes | |
Kumar et al. | A review on recent trends in query processing and optimization in big data | |
CN108804580B (zh) | 一种在联邦型rdf数据库中查询关键字的方法 | |
Guo et al. | Cohesive group nearest neighbor queries on road-social networks under multi-criteria | |
Alkathiri et al. | Geo-spatial big data mining techniques | |
Yuan et al. | Big RDF Data Storage, Computation, and Analysis: A Strawman's Arguments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150610 |