CN109710774B - 结合平衡策略的图数据划分与分布式存储方法 - Google Patents
结合平衡策略的图数据划分与分布式存储方法 Download PDFInfo
- Publication number
- CN109710774B CN109710774B CN201811568696.2A CN201811568696A CN109710774B CN 109710774 B CN109710774 B CN 109710774B CN 201811568696 A CN201811568696 A CN 201811568696A CN 109710774 B CN109710774 B CN 109710774B
- Authority
- CN
- China
- Prior art keywords
- graph
- vertex
- weight
- edge
- label
- 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
Landscapes
- Image Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种结合平衡策略的图数据划分与分布式存储算法。以标签图作为初始划分图,将标签图转化为节点与边都带权值的无向图,进行边融合时使用HEM算法将大权的边优先进行融合,可以将关系密切的节点划分到同一分区;在初始划分阶段,使用趋近公式将图的顶点总权值尽可能的平均分割给k个集群;同时本发明充分考虑到知识碎片在分布式环境下的存储问题,提出平衡策略对知识碎片进行存储。
Description
技术领域
本发明属于知识图谱下的海量数据存储与检索技术,具体为一种结合平衡策略的图数据划分与分布式存储方法。
背景技术
由于知识图谱拥有强大的语义处理能力和开放组织能力,大规模知识图谱库的研究和应用在不同领域中都引起了足够的注意力。知识图谱是以RDF(Resource DescriptionFramework)作为元数据的基本表达方式,对知识图谱的存储本质上是对RDF图数据的存储。随着RDF图数据的不断增长,传统的单机存储和处理已经无法满足海量数据存储的需求,必须将图数据划分到多台机子上进行分布式处理。传统的在分布式环境下对图数据进行划分时是基于文件进行水平分割而没有充分考虑图结构的特性,可能导致两个联系比较紧密的数据被划分到不同的存储节点上,带来大量跨存储节点的边。在对图进行遍历查询时可能导致集群分区间大量的跳跃访问,增大了检索响应时间,影响查询性能。而图数据的动态性也给分布式存储带来了巨大的挑战。
发明内容
本发明的目的在于针对上述问题,提供一种结合平衡策略的图数据划分与分布式存储方法,以标签图作为初始划分图,将标签图转化为节点与边都带权值的无向图,进行边融合时使用HEM算法将大权的边优先进行融合,可以将关系密切的节点划分到同一分区;在初始划分阶段,使用趋近公式将图的顶点总权值尽可能的平均分割给k个集群。同时本发明充分考虑到知识碎片在分布式环境下的存储问题,提出平衡策略对知识碎片进行存储。
为实现上述目的,本发明的技术方案是:一种结合平衡策略的图数据划分与分布式存储方法,包括如下步骤:
步骤S1、采用Metis+算法对初始图数据进行粗糙化;
步骤S2、对经步骤S1粗糙化处理的图数据,采用Metis+算法进行初始划分,并将初始划分数据存入分布式存储集群的对应分区中;
步骤S3、根据步骤S2的初始划分存储结果,实施平衡策略对动态知识碎片进行存储。
在本发明一实施例中,所述Metis+算法为改进的Metis算法。
在本发明一实施例中,所述步骤S1,实现方式为:将初始属性图G转换成对应的标签图GL,再将标签图GL转换成带权无向图GL0后,运行HEM边融合算法,得到粗糙化后的图,并判断图中的顶点总数是否满足|Vm|<100,若否,则再次进行粗糙化;若是,得到最终的粗糙化后的图GLm。
在本发明一实施例中,所述步骤S2,实现方式为:对粗糙化后的图GLm,运行加权LND算法,同时结合趋近公式对图GLm进行划分。
在本发明一实施例中,所述步骤S1,具体实现方式如下:
假设在Neo4j分布式集群中有k个分区,每个分区的存储容量为M,集群总容量为kM,P={P(1),P(2),...,P(k)}为当前所有分区状态总和,|P(i)|=n表示下标为i的分区中节点总数,1≤i≤k,P(i)表示分区i当前已有的节点和边状态;
设初始属性图G,G=<N,R,L,P>表示图中节点,边,标签,属性状态,|G|为属性图中节点总数,Memory(G)表示属性图的容量大小;存在关系M<Memory(G)<kM,因此需要对初始属性图G=<N,R,L,P>进行划分,划分过程如下:
步骤S11、粗糙化的预处理步骤:
(1.1)将属性图转化为标签图GL作为划分的初始状态图;
(1.2)标签图中的每个标签即为一类实例节点的组合,节点初始权重为该标签中所有实例节点总数,边的初始权重为两个标签出度入度的实例边数量总和,因此可将标签图GL初始化为节点与边都带权值的无向图GL0;
(1.3)在带权值的无向图GL0中,边权值越大表示该边联系的两个节点关系越紧密,为了达到将关系紧密的节点放入同一个分区,在图分割阶段应该减少对关系紧密的大权边的切割,因此要对大权边进行融合;
(1.4)将带权值的无向图GL0中的悬挂顶点进行简化,得到没有悬挂顶点的图;
(1.5)对没有悬挂顶点的带权值的无向图GL0进行图文件格式转化,图文件格式中,第一行为顶点个数与边个数,接下来每行为每个顶点连接的顶点编号与边的权重;
步骤S12、HEM边融合算法步骤:
(2.1)使用贪心思想将权重从大到小排序,获得权重总和最大且无相交顶点的边进行融合,将图中的点集进行融合组成下一次图的一个顶点;
(2.2)对边的融合操作:对于被融合的任意两个顶点vi,vj,如果e(vi,vj)∈GLi=(Vi,Ei),e(vi,vj)为顶点vi到vj之间的一条通路,则将边e(vi,vj)消除;
(2.3)顶点融合时顶点权重变换方式:新顶点的权重是原来顶点集合中所有顶点权值之和;
(2.4)边权值变换方式:将被选中的两条边之间,具有公共顶点的边进行权重相加,得到融合后边的权值;
经上述步骤,得到粗糙化后的图,并判断图中的顶点总数是否满足|Vm|<100,若否,则再次进行粗糙化;若是,得到最终的粗糙化后的图GLm。
在本发明一实施例中,所述步骤(4)中,悬挂顶点,即:在带权值的无向图GL0中,只有一条与节点关联的边时,该节点被称为悬挂顶点,而与该节点关联的边称为悬挂边。
在本发明一实施例中,所述步骤S2,具体实现方式如下:
在图GLm=(Vm,Em)中,Vm={vm_0,vm_1,...,vm_n}为图中的顶点集合,|Vm|为图GLm顶点总数;vm_i∈Vm,W(vm_i)为顶点vm_i的权值;
令,平均顶点权重Average_W表示理想情况下分配给每个分区的顶点权重,计算公式如下:
式(1)中,首先累加Vm={vm_0,vm_1,...,vm_n}中的所有顶点权重,获得GLm中的顶点总权重,总权重/k获得平均顶点权重;
采用加权LND算法对图GLm进行初始划分:
步骤S21、随机选取图中一个的顶点v,标号0,记为v0;
步骤S22、按照先广遍历的方式,从标号0开始遍历图,与标号0相邻的顶点均标号1,记为v1,...,与标号i相邻的顶点均标号i+1;对于标号为i的顶点可能有多个标号为i+1的下一跳顶点,这里记vi的下一跳顶点集合为{vi+1_0,vi+1_1,...,vi+1_n},Border_W(vi,vi+1_j)为顶点vi与下一跳顶点vi+1_j间的边权;
步骤S23、对图进行遍历累加顶点权值:从顶点集{vi+1_0,vi+1_1,...,vi+1_n}中选择最优的顶点累加;相关公式定义如下:
A、顶点权值总和Sum_W(vi),表示标号为0到标号为i(i≥0)的所有顶点权值之和,计算公式如下:
B、最大边权之和Sum_BorderW(i,i+1),表示下一跳定点集合{vi+1_0,vi+1_1,...,vi+1_n}中目前已经被选定的定点与i之间边权的累加和;为了获得最小的割边,选取标号为i的下一跳标号为i+1的顶点时,应该优先选取边权最大的进行累加;计算公式如下:
其中,Border_W(vi,vi+1_j),vi+1_j∈{vi+1_0,vi+1_1,...,vi+1_n},表示vi与vi+1_j间的边权,max表示让累加的边权之和趋近最大;
C、趋近公式APP(i,i+1),调整累加顶点的权重,让顶点权值总和与Average_W之间的差值最小,计算公式如下:
其中,对应i的下一跳标号i+1的顶点集合为{vi+1_0,vi+1_1,...,vi+1_n},依据最大边权之和公式Sum_BorderW(i,i+1)选择边权最大的优先进行累加;最后要求Sum_W{Sum_BorderW(i,i+1)}+Sum_W(vi)的总顶点权值要接近Average_W,即获得两者最小的差值;调整Sum_BorderW(i,i+1)中被选中的下一跳顶点,直到总的累加顶点权最趋近Average_W;最后,将初始划分数据存入分布式存储集群的对应分区中;
在本发明一实施例中,所述步骤S3,具体实现方式如下:
根据步骤S2的初始划分存储结果,对动态流入的动态知识碎片进行分布式存储时进行判断,步骤如下:
步骤S31、流入动态知识碎片;
步骤S32、将动态知识碎片映射到对应标签L,L={L1,L2,...,Lt};
步骤S33、选取Li(Li∈L);
步骤S34、判断分布式存储集群的k个分区中是否存在对应的标签Li;若否,则运行平衡策略进行存储;若是,则进入下一步判断;
步骤S35、判断标签对应的分区容量是否充足;若是,则将知识碎片存入标签对应的分区;若否,则进入下一步;
步骤S36、运行平衡策略将知识碎片存入其他容量充足的分区;
步骤S37、L=L-Li;
步骤S38、若L非空表示还有碎片知识未被存储,则返回步骤S32;若否,则表示当前流入的动态知识碎片存储完毕。
在本发明一实施例中,所述平衡策略,即对k个分区P={P(1),P(2),...,P(k)}判断分区状态,0≤i≤k,优先选择min(|P(i)|),集分区i,|P(i)|值越小越优先被选中,如果有多个分区满足要求,则从中随机选择一个;公式如下,返回分区编号index;
Index=random({i|min(|P(i)|),i∈|k|}) 式(5)
其中,index为分区编码。
相较于现有技术,本发明具有以下有益效果:本发明方法在初始图处理时,以标签图作为初始划分图,将标签图转化为节点与边都带权值的无向图,进行边融合时使用HEM算法将大权的边优先进行融合,可以将关系密切的节点划分到同一分区;在初始划分阶段,使用趋近公式将图的顶点总权值尽可能的平均分割给k个集群;同时本发明充分考虑到知识碎片在分布式环境下的存储问题,提出平衡策略对知识碎片进行存储。
附图说明
图1为本发明标签预处理排序与查询总框架。
图2为本发明GL转换GL0示例。
图3为本发明图文件格式转化。
图4为本发明一次融合示例。
图5为本发明APP(i,i+1)图解过程。
图6为本发明动态知识碎片存储流程图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明提供了一种结合平衡策略的图数据划分与分布式存储方法,包括如下步骤:
步骤S1、采用Metis+算法对初始图数据进行粗糙化;
步骤S2、对经步骤S1粗糙化处理的图数据,采用Metis+算法进行初始划分,并将初始划分数据存入分布式存储集群的对应分区中;
步骤S3、根据步骤S2的初始划分存储结果,实施平衡策略对动态知识碎片进行存储。
以下为本发明的具体实现过程。
图数据分布式存储算法阶段包括初始图数据分布式划分与动态知识碎片存储两个部分。图1为图数据库分布式存储总体框架图,分布式存储过程主要包含以下几个步骤:
Step1、对初始图数据进行分布式划分,将初始属性图G转换成对应的标签图GL,再将标签图转换成带权无向图GL0后,运行HEM边融合算法。对粗糙化后的图GLm判断图中的顶点总数|Vm|<100,否则再次进行粗糙化,是则运行加权LND算法同时结合趋近公式对GLm进行划分。
Step2、将数据存入“分布式存储集群”部分的对应分区中。
Step3、对实时流入的知识碎片进行存储处理,先映射到对应标签L。
Step4、选取Li(Li∈L)。
Step5、判断k个分区是否存在对应标签Li,如果存在再判断标签对应分区容量是否充足,是则存入标签对应分区,否则运行平衡策略。
Step6、根据平衡策略选取分区节点数最少的分区进行存储,以达到最大程度上的负载均衡。L=L-Li,判断L是否为空,否则Step6。
Step7、数据实时流入“分布式存储集群”部分的对应分区中。
初始图数据分布式划分算法Metis+:
1、Metis+粗糙化
假设在Neo4j分布式集群中有k个分区,每个分区的存储容量为M,集群总容量为kM,P={P(1),P(2),...,P(k)}为当前所有分区状态总和,|P(i)|=n表示下标为i的分区中节点总数,1≤i≤k,P(i)表示分区i当前已有的节点和边状态。
设初始属性图G,G=<N,R,L,P>表示图中节点,边,标签,属性状态,|G|为属性图中节点总数,Memory(G)表示属性图的容量大小。存在关系M<Memory(G)<kM,因此需要对初始属性图G=<N,R,L,P>进行划分,划分过程需要考虑以下几点:
1)在属性图G中标签L为一类节点的组合,为了方便查询,同一个标签中的实例节点应该尽可能的划分到同一个分区中,为了满足此条件,本文将属性图转化为标签图GL作为划分的初始状态图。
2)标签图类似于超图的思想,在超图中每个节点都有若干实例节点组成,超边为一类边的集合。标签图中的每个标签即为一类实例节点的组合,节点初始权重为该标签中所有实例节点总数,边的初始权重为两个标签出度入度的实例边数量总和,将标签图初始化为节点与边都带权值的无向图GL0。
3)在带权无向图中,边权值越大表示该边联系的两个节点关系越紧密,为了达到将关系紧密的节点放入同一个分区,在图分割阶段应该减少对关系紧密的大权边的切割,因此要对大权边进行融合。
图2为标签图GL初始化为带权无向图GL0示例。
图2中,左边为部分标签图GL,右边为带权无向图GL0,每个标签为一类实例节点的组合,实例节点总数为带权无向图中的节点权值,标签间的出度入度实例总数量为带权无向图中边的权重。在粗糙化之前,要对带权无向图进行消除悬挂顶点的操作。
定义1(悬挂顶点)在带权无向图中,只有一条与节点关联的边时,该节点被称为悬挂顶点,与他关联的边称为悬挂边。
例如图2中,有图带权无向图中悬挂点v5,将悬挂点v5进行简化,v5与v4进行合并,此时v5与v4之间的边消失,将带权无向图中的悬挂点进行简化后,所得到的图为一个没有悬挂点的图。此步骤为粗糙化前的预处理步骤。
本发明选择粗糙化阶段的边融合算法为HEM(Heavy Edge Matching,权重边匹配)算法。算法最终目的是减小在图划分时对大权边切割的概率,获得最小的边割(edge-cut)。对图Gi=(Vi,Ei)进行粗糙化到下一级图Gi+1=(Vi+1,Ei+1)时通过选择权值较大的进行匹配,可以在粗化图中消减更大的权值。该方法后面发展成寻找边权值最大匹配的方法,即在u的所有相邻未匹配顶点中寻找顶点v使得边(u,v)权值最大。该方法的算法复杂度也为O(|E|)。
对没有悬挂点的带权图GL0进行图文件格式转化,如图3所示。
图文件格式中,第一行为顶点个数与边个数,接下来每行为每个顶点连接的顶点编号与边的权重。比如第二行,与顶点v1连接的顶点有v2,v4,v7,边的权重分别为40,30,20。输入图文件后,对图GL0=(V0,E0)进行HEM边融合算法的步骤如下;
(1)使用贪心思想将权重从大到小排序,获得权重总和最大且无相交顶点的边进行融合,将图中的点集进行融合组成下一次图的一个顶点。
(2)对边的融合操作:对于被融合的任意两个顶点vi,vj,如果e(vi,vj)∈GLi=(Vi,Ei),e(vi,vj)为顶点vi到vj之间的一条通路,则将边e(vi,vj)消除。
(3)顶点融合时顶点权重按如下方式变换:新顶点的权重是原来顶点集合中所有顶点权值之和。
(4)边权值按照如下方法变换:将被选中的两条边之间,具有公共顶点的边进行权重相加,得到融合后边的权值。
图4为一次融合过程,对图中边权进行降序排序,使用贪心思想优先选取大权且没有相交顶点的边v4-v3,v2-v1,v6-v7,v10-v8,进行一次融合形成右图结果。不断的对原始图中的大权边进行融合,融合的最终目的是减小在图划分时对大权边切割的概率,获得最小的边割(edge-cut),即权值越大越先进行边融合。
2、Metis+图初始化分
多级划分(k-way)算法是Metis算法的基本思想,经过顶点粗化处理以后,原始图GL0=(V0,E0)经过k步粗化为GLm=(Vm,Em),粗糙化结束的判断标准为:GLm中含有的顶点数目等于或者接近k个顶点的粗化图可以进行k路划分。这种划分评判条件会产生两个问题:(1)存在一种情况,在粗糙化阶段进行边融合,每次边融合后所能减少的图的规模过小,因此想要在粗化阶段将图顶点规模减少到k个会耗费大量资源。(2)原生图粗化到剩余k个顶点,有可能导致粗化后的顶点与边的权重出现偏差,最终导致初始划分的平衡度大大降低。实验证明|Vm|<100是一个比较适合结束粗糙化过程的标准值。本文在GLm图中的节点数远大于k的情况下,使用LND(Levelized Nested Dissection)分级嵌套划分算法对图进行初始划分。
LND算法主要思想:选取图中的一个顶点,标号为0,从该顶点开始依据图的连通性广度遍历图,与标号为0的顶点相邻的顶点标号加1,以此类推。该算法的具体步骤如下:
(1)选取图中的一个顶点v,标号0。
(2)从标号0的顶点开始,优先选取广度遍历的方法,与标号为0的顶点相邻的顶点标号加1;...与标号i相邻的顶点均标号i+1。
(3)结束条件是所有标号的顶点数目等于顶点总数的一半的时候。这样原生图被分割为标号的顶点集合与未标号的顶点集合两个部分。
然而这种分割方式,并未考虑顶点的权值,本文希望对图GLm进行k路划分时能将图的顶点总权值尽可能的平均分割给k个集群,因此本文提出加权LND算法。
图GLm=(Vm,Em)中,Vm={vm_0,vm_1,...,vm_n}为图中的顶点集合,|Vm|为图GLm顶点总数;vm_i∈Vm,W(vm_i)为顶点vm_i的权值。
定义2(平均顶点权重,Average_W)表示理想情况下分配给每个分区的顶点权重,计算公式如下:
公式(1)中,首先累加Vm={vm_0,vm_1,...,vm_n}中的所有顶点权重,获得GLm中的顶点总权重,总权重/k获得平均顶点权重。
下面介绍加权LND算法的算法过程与相关公式。加权LND算法过程如下;
(1)随机选取图中一个的顶点v,标号0,记为v0。
(2)按照先广遍历的方式,从标号0开始遍历图,与标号0相邻的顶点均标号1,记为v1,...,与标号i相邻的顶点均标号i+1。对于标号为i的顶点可能有多个标号为i+1的下一跳顶点,这里记vi的下一跳顶点集合为{vi+1_0,vi+1_1,...,vi+1_n},Border_W(vi,vi+1_j)为顶点vi与下一跳顶点vi+1_j间的边权。
(3)对图进行遍历累加顶点权值。从顶点集{vi+1_0,vi+1_1,...,vi+1_n}中选择最优的顶点累加。相关公式定义如下:
定义3(顶点权值总和,Sum_W(vi))表示标号为0到标号为i(i≥0)的所有顶点权值之和,计算公式如下:
定义4(最大边权之和,Sum_BorderW(i,i+1))表示下一跳定点集合{vi+1_0,vi+1_1,...,vi+1_n}中目前已经被选定的定点与i之间边权的累加和;为了获得最小的割边,选取标号为i的下一跳标号为i+1的顶点时,应该优先选取边权最大的进行累加;计算公式如下:
其中,Border_W(vi,vi+1_j),vi+1_j∈{vi+1_0,vi+1_1,...,vi+1_n},表示vi与vi+1_j间的边权,max表示让累加的边权之和趋近最大;
定义5(趋近公式,APP(i,i+1))调整累加顶点的权重,让顶点权值总和与Average_W之间的差值最小,计算公式如下:
其中,对应i的下一跳标号i+1的顶点集合为{vi+1_0,vi+1_1,...,vi+1_n},依据最大边权之和公式Sum_BorderW(i,i+1)选择边权最大的优先进行累加;最后要求Sum_W{Sum_BorderW(i,i+1)}+Sum_W(vi)的总顶点权值要接近Average_W,即获得两者最小的差值;调整Sum_BorderW(i,i+1)中被选中的下一跳顶点,直到总的累加顶点权最趋近Average_W。
趋近公式图解如图5所示,假设集群中有k=2个分区,需要将图进行2路划分。由公式(1)得Average_W=486/k=243。选取图中一个顶点标号为0,与它相连的顶点标号加1,如图所示。由公式(2)得Sum_W(v0)=122。依据最大边权之和公式(3),优先选取边权最大的进行累加得到累加顶点总权值为236,图中虚线为假定切割边,得到切边总权值10+10+20+20=60;此时调整Sum_BorderW(i,i+1)中的累加顶点,选择顶点权重120的点进行累加,得到累加顶点总权值为242,如图中实线,得到切边总权值20+30+10+30=80。根据趋近公式(4),优先选择累加顶点总权值最趋近Average_W,得到实线为最终的割边。
3、动态知识碎片存储策略
由于图在不断扩张,对动态流入的知识碎片进行分布式存储时需要进行判断,图6为动态知识碎片存储过程,步骤如下:
(1)开始。
(2)流入知识碎片。
(3)将知识碎片映射到对应标签L,L={L1,L2,...,Lt}。
(4)选取Li(Li∈L)。
(5)判断分布式集群的k个分区中是否存在对应的标签Li,否则运行平衡策略进行存储,是则进入下一步判断。
(6)判断标签对应的分区容量是否充足,如果充足,则将知识碎片存入标签对应的分区,否则进入下一步。
(7)运行平衡策略将知识碎片存入其他容量充足的分区。
(8)L=L-Li。
(9)如果L非空表示还有碎片知识未被存储,则返回第(3)步,否则表示当前流入的知识碎片存储完毕。
(10)结束。
定义6(平衡策略)对k个分区P={P(1),P(2),...,P(k)}判断分区状态,0≤i≤k,优先选择min(|P(i)|),集分区i,|P(i)|值越小越优先被选中,如果有多个分区满足要求,则从中随机选择一个。公式如下,返回分区编号index。
Index=random({i|min(|P(i)|),i∈|k|}) 式(5)。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (5)
1.一种结合平衡策略的图数据划分与分布式存储方法,其特征在于,包括如下步骤:
步骤S1、采用Metis+算法对初始图数据进行粗糙化;
步骤S2、对经步骤S1粗糙化处理的图数据,采用Metis+算法进行初始划分,并将初始划分数据存入分布式存储集群的对应分区中;
步骤S3、根据步骤S2的初始划分存储结果,实施平衡策略对动态知识碎片进行存储;
所述步骤S1,实现方式为:将初始属性图G转换成对应的标签图GL,再将标签图GL转换成带权无向图GL0后,运行HEM边融合算法,得到粗糙化后的图,并判断图中的顶点总数是否满足|Vm|<100,若否,则再次进行粗糙化;若是,得到最终的粗糙化后的图GLm;
所述步骤S1,具体实现方式如下:
假设在Neo4j分布式集群中有k个分区,每个分区的存储容量为M,集群总容量为kM,P={P(1),P(2),...,P(k)}为当前所有分区状态总和,|P(i)|=n表示下标为i的分区中节点总数,1≤i≤k,P(i)表示分区i当前已有的节点和边状态;
设初始属性图G,G=<N,R,L,P>表示图中节点,边,标签,属性状态,|G|为属性图中节点总数,Memory(G)表示属性图的容量大小;存在关系M<Memory(G)<kM,因此需要对初始属性图G=<N,R,L,P>进行划分,划分过程如下:
步骤S11、粗糙化的预处理步骤:
(1.1)将属性图转化为标签图GL作为划分的初始状态图;
(1.2)标签图中的每个标签即为一类实例节点的组合,节点初始权重为该标签中所有实例节点总数,边的初始权重为两个标签出度入度的实例边数量总和,因此将标签图GL初始化为节点与边都带权值的无向图GL0;
(1.3)在带权值的无向图GL0中,边权值越大表示该边联系的两个节点关系越紧密,为了达到将关系紧密的节点放入同一个分区,在图分割阶段减少对关系紧密的大权边的切割,因此要对大权边进行融合;
(1.4)将带权值的无向图GL0中的悬挂顶点进行简化,得到没有悬挂顶点的图;
(1.5)对没有悬挂顶点的带权值的无向图GL0进行图文件格式转化,图文件格式中,第一行为顶点个数与边个数,接下来每行为每个顶点连接的顶点编号与边的权重;
步骤S12、HEM边融合算法步骤:
(2.1)使用贪心思想将权重从大到小排序,获得权重总和最大且无相交顶点的边进行融合,将图中的点集进行融合组成下一次图的一个顶点;
(2.2)对边的融合操作:对于被融合的任意两个顶点vi,vj,如果e(vi,vj)∈GLi=(Vi,Ei),e(vi,vj)为顶点vi到vj之间的一条通路,则将边e(vi,vj)消除;
(2.3)顶点融合时顶点权重变换方式:新顶点的权重是原来顶点集合中所有顶点权值之和;
(2.4)边权值变换方式:将被选中的两条边之间,具有公共顶点的边进行权重相加,得到融合后边的权值;
经上述步骤,得到粗糙化后的图,并判断图中的顶点总数是否满足|Vm|<100,若否,则再次进行粗糙化;若是,得到最终的粗糙化后的图GLm;
所述步骤S3,具体实现方式如下:
根据步骤S2的初始划分存储结果,对动态流入的动态知识碎片进行分布式存储时进行判断,步骤如下:
步骤S31、流入动态知识碎片;
步骤S32、将动态知识碎片映射到对应标签L,L={L1,L2,...,Lt};
步骤S33、选取Li(Li∈L);
步骤S34、判断分布式存储集群的k个分区中是否存在对应的标签Li;若否,则运行平衡策略进行存储;若是,则进入下一步判断;
步骤S35、判断标签对应的分区容量是否充足;若是,则将知识碎片存入标签对应的分区;若否,则进入下一步;
步骤S36、运行平衡策略将知识碎片存入其他容量充足的分区;
步骤S37、L=L-Li;
步骤S38、若L非空表示还有碎片知识未被存储,则返回步骤S32;若否,则表示当前流入的动态知识碎片存储完毕;
所述平衡策略,即对k个分区P={P(1),P(2),...,P(k)}判断分区状态,0≤i≤k,优先选择min(|P(i)|),集分区i,|P(i)|值越小越优先被选中,如果有多个分区满足要求,则从中随机选择一个;公式如下,返回分区编号index;
Index=random({i|min(|P(i)|),i∈|k|}) 式(5)
其中,index为分区编码。
2.根据权利要求1所述的结合平衡策略的图数据划分与分布式存储方法,其特征在于,所述Metis+算法为改进的Metis算法。
3.根据权利要求1所述的结合平衡策略的图数据划分与分布式存储方法,其特征在于,所述步骤S2,实现方式为:对粗糙化后的图GLm,运行加权LND算法,同时结合趋近公式对图GLm进行划分。
4.根据权利要求1所述的结合平衡策略的图数据划分与分布式存储方法,其特征在于,所述步骤(1.4)中,悬挂顶点,即:在带权值的无向图GL0中,只有一条与节点关联的边时,该节点被称为悬挂顶点,而与该节点关联的边称为悬挂边。
5.根据权利要求1所述的结合平衡策略的图数据划分与分布式存储方法,其特征在于,所述步骤S2,具体实现方式如下:
在图GLm=(Vm,Em)中,Vm={vm_0,vm_1,...,vm_n}为图中的顶点集合,|Vm|为图GLm顶点总数;vm_i∈Vm,W(vm_i)为顶点vm_i的权值;
令,平均顶点权重Average_W表示理想情况下分配给每个分区的顶点权重,计算公式如下:
式(1)中,首先累加Vm={vm_0,vm_1,...,vm_n}中的所有顶点权重,获得GLm中的顶点总权重,总权重除以k获得平均顶点权重;
采用加权LND算法对图GLm进行初始划分:
步骤S21、随机选取图中一个顶点v,标号0,记为v0;
步骤S22、按照先广遍历的方式,从标号0开始遍历图,与标号0相邻的顶点均标号1,记为v1,...,与标号i相邻的顶点均标号i+1;对于标号为i的顶点有多个标号为i+1的下一跳顶点,这里记vi的下一跳顶点集合为{vi+1_0,vi+1_1,...,vi+1_n},Border_W(vi,vi+1_j)为顶点vi与下一跳顶点vi+1_j间的边权;
步骤S23、对图进行遍历累加顶点权值:从顶点集{vi+1_0,vi+1_1,...,vi+1_n}中选择最优的顶点累加;相关公式定义如下:
A、顶点权值总和Sum_W(vi),表示标号为0到标号为i(i≥0)的所有顶点权值之和,计算公式如下:
B、最大边权之和Sum_BorderW(i,i+1),表示下一跳定点集合{vi+1_0,vi+1_1,...,vi+1_n}中目前已经被选定的定点与i之间边权的累加和;为了获得最小的割边,选取标号为i的下一跳标号为i+1的顶点时,优先选取边权最大的进行累加;计算公式如下:
其中,Border_W(vi,vi+1_j),vi+1_j∈{vi+1_0,vi+1_1,...,vi+1_n},表示vi与vi+1_j间的边权,max表示让累加的边权之和趋近最大;
C、趋近公式APP(i,i+1),调整累加顶点的权重,让顶点权值总和与Average_W之间的差值最小,计算公式如下:
其中,对应i的下一跳标号i+1的顶点集合为{vi+1_0,vi+1_1,...,vi+1_n},依据最大边权之和公式Sum_BorderW(i,i+1)选择边权最大的优先进行累加;最后要求Sum_W{Sum_BorderW(i,i+1)}+Sum_W(vi)的总顶点权值要接近Average_W,即获得两者最小的差值;调整Sum_BorderW(i,i+1)中被选中的下一跳顶点,直到总的累加顶点权最趋近Average_W;最后,将初始划分数据存入分布式存储集群的对应分区中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811568696.2A CN109710774B (zh) | 2018-12-21 | 2018-12-21 | 结合平衡策略的图数据划分与分布式存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811568696.2A CN109710774B (zh) | 2018-12-21 | 2018-12-21 | 结合平衡策略的图数据划分与分布式存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710774A CN109710774A (zh) | 2019-05-03 |
CN109710774B true CN109710774B (zh) | 2022-06-21 |
Family
ID=66255951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811568696.2A Active CN109710774B (zh) | 2018-12-21 | 2018-12-21 | 结合平衡策略的图数据划分与分布式存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710774B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382320A (zh) * | 2020-03-18 | 2020-07-07 | 军事科学院系统工程研究院系统总体研究所 | 一种面向知识图谱的大规模数据增量处理方法 |
CN111738894B (zh) * | 2020-07-29 | 2020-12-22 | 武大吉奥信息技术有限公司 | 一种构建平衡网格的方法、系统和终端设备 |
CN113051106A (zh) * | 2021-03-23 | 2021-06-29 | 天津大学 | 一种新型存储系统的图冗余策略 |
CN114416913B (zh) * | 2022-03-28 | 2022-07-05 | 支付宝(杭州)信息技术有限公司 | 一种对知识图谱进行数据分片的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117488A (zh) * | 2015-09-19 | 2015-12-02 | 大连理工大学 | 一种基于混合层次聚类的rdf数据平衡分割算法 |
WO2016079633A1 (en) * | 2014-11-20 | 2016-05-26 | Ericsson Ab | Traffic-aware data center vm placement considering job dynamic and server heterogeneity |
CN107122248A (zh) * | 2017-05-02 | 2017-09-01 | 华中科技大学 | 一种存储优化的分布式图处理方法 |
CN108242149A (zh) * | 2018-03-16 | 2018-07-03 | 成都智达万应科技有限公司 | 一种基于交通数据的大数据分析方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9916187B2 (en) * | 2014-10-27 | 2018-03-13 | Oracle International Corporation | Graph database system that dynamically compiles and executes custom graph analytic programs written in high-level, imperative programming language |
-
2018
- 2018-12-21 CN CN201811568696.2A patent/CN109710774B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016079633A1 (en) * | 2014-11-20 | 2016-05-26 | Ericsson Ab | Traffic-aware data center vm placement considering job dynamic and server heterogeneity |
CN105117488A (zh) * | 2015-09-19 | 2015-12-02 | 大连理工大学 | 一种基于混合层次聚类的rdf数据平衡分割算法 |
CN107122248A (zh) * | 2017-05-02 | 2017-09-01 | 华中科技大学 | 一种存储优化的分布式图处理方法 |
CN108242149A (zh) * | 2018-03-16 | 2018-07-03 | 成都智达万应科技有限公司 | 一种基于交通数据的大数据分析方法 |
Non-Patent Citations (1)
Title |
---|
双目标优化的RDF图分割算法;陈志奎 等;《计算机工程与应用》;20171115;第53卷(第21期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109710774A (zh) | 2019-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710774B (zh) | 结合平衡策略的图数据划分与分布式存储方法 | |
WO2018166270A2 (zh) | 一种基于指标和方向向量相结合的多目标优化方法及系统 | |
JP5427640B2 (ja) | 決定木生成装置、決定木生成方法、及びプログラム | |
CN108399213B (zh) | 一种面向用户个人文件的聚类方法及系统 | |
CN105405136A (zh) | 一种基于粒子群算法的自适应脊柱ct图像分割方法 | |
CN110334157B (zh) | 一种云计算管理系统 | |
CN102945283A (zh) | 一种语义Web服务组合方法 | |
CN107545272A (zh) | 一种MapReduce框架下的空间网络对象聚类方法 | |
Sun et al. | Density-peak-based overlapping community detection algorithm | |
CN105550208B (zh) | 基于谱哈希的相似性存储设计方法 | |
CN109754021B (zh) | 基于范围元组搜索的在线包分类方法 | |
KR100965552B1 (ko) | 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치 | |
CN111209106A (zh) | 一种基于缓存机制的流式图划分方法和系统 | |
CN108614932B (zh) | 基于边图的线性流重叠社区发现方法、系统及存储介质 | |
CN109344259B (zh) | 一种基于多层划分框架的rdf分布式存储方法 | |
CN108198084A (zh) | 一种复杂网络重叠社区发现方法 | |
CN105871726A (zh) | 一种基于公共前缀的动态添加树节点和单元的模式匹配方法 | |
CN109256774A (zh) | 一种基于电压等级的电网子图划分方法及装置 | |
CN105119830B (zh) | 基于装箱优化的负载均衡软件定义网络路由聚合方法 | |
Ayall et al. | Taking heuristic based graph edge partitioning one step ahead via offstream partitioning approach | |
CN109858545A (zh) | 一种基于并行自然邻的局部核心点聚类算法 | |
CN109960750A (zh) | 一种基于标签传播概率的并行图划分方法 | |
CN106202303A (zh) | 一种Chord路由表压缩方法及优化文件查找方法 | |
CN114490799A (zh) | 单个图的频繁子图挖掘方法及装置 | |
JP2020101893A (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |