面向图计算的拓扑查询结构、查询方法、电子设备及介质技术

技术编号:34329643 阅读:38 留言:0更新日期:2022-07-31 01:49
本发明专利技术涉及计算机软件技术领域,公开了一种面向图计算的拓扑查询结构,包括:存储层,用于进行多圈层路径的遍历,每完成一个圈层的遍历,就返回该圈层需进行计算和过滤的节点集合以及边集合;计算层,至少包括一个计算节点,计算节点基于查询条件计算和过滤所述存储层返回的节点集合以及边集合,通过流水线处理的方式与所述存储层并行工作;图拓扑构建模块,接收经过所述计算层的计算和过滤后符合查询条件的节点集合以及边集合,并将符合查询条件的节点集合以及边集合进行组合构建成符合查询条件的图,本发明专利技术还公开了一种面向图计算的拓扑查询方法。本发明专利技术避免了存储层与计算层负载不均的状况,提高了资源利用率,减少了查询时延。延。延。

Graph Computing Oriented topology query structure, query method, electronic equipment and media

【技术实现步骤摘要】
面向图计算的拓扑查询结构、查询方法、电子设备及介质


[0001]本专利技术涉及计算机软件
,具体涉及面向图计算的拓扑查询结构、查询方法、电子设备及介质。

技术介绍

[0002]在现有的分布式的图查询技术中,对于多圈层路径的查询,比如:先进行NodeScanByIndex操作查找某些节点,然后对其结果进行若干次ExpandAll操作。常用的做法有两种:一种是向存储层下发节点查询任务,获得结果集后在计算层进行过滤操作,再将过滤结果下发的存储层作为Expand的输入,由存储进行Expand操作并向上层返回结果。这带来了较大的网络开销,导致效率底下。第二种做法则是将过滤操作直接下沉到存储层,由存储层在多圈层遍历的同时进行过滤,并最终将结果返回。这种方式避免了大量的网络开销,但同样存在一些不足:1.存储层完成了图查询的大部分任务,而计算层资源被浪费掉。这在高并发场景下尤其明显,在存储层进行图遍历的过程中,计算层由于没有获得数据而处于空闲状态,而存储层由于查询任务过多产生了极大的负载。2.当存在一些涉及计算的过滤时(如对边的若干属性求加权平均值),存储层需要针对属性值进行字节流反序列化,在经过一系列的计算和过滤后,再将查询结果序列化后返回计算层,计算层在反序列后才能进行后续的拓扑构建操作,这样频繁的序列化和反序列化也会产生很多的时延。

技术实现思路

[0003]针对上述问题,本专利技术提供一种面向图计算的拓扑查询结构、查询方法、电子设备及介质,目的在于利用存储层具备一定过滤能力和批处理能力的前提下,将复杂过滤和图计算以及图拓扑构建的工作交由计算层,通过算子分片与流水线技术,增大节点间与节点内的并发度,充分利用分布式资源,以降低在多圈层遍历过程中的查询时延。
[0004]本专利技术通过下述技术方案实现:
[0005]一种面向图计算的拓扑查询结构,包括:
[0006]存储层,用于进行多圈层路径的遍历,每完成一个圈层的遍历,就返回该圈层需进行计算和过滤的节点集合以及边集合;
[0007]计算层,至少包含一个计算节点,计算节点用于基于查询条件计算和过滤所述存储层返回的节点集合以及边集合,通过流水线处理的方式与所述存储层并行工作;
[0008]图拓扑构建模块,设置在其中一个计算节点中,接收经过所述计算节点的计算和过滤后符合查询条件的节点集合以及边集合,并将符合查询条件的节点集合以及边集合进行组合构建成符合查询条件的图。
[0009]作为优化,所述计算节点包括:
[0010]GetData算子:用于获取所述存储层遍历圈层得到的节点集合以及节点集合中的节点对应的边集合,并将所述节点集合与边集合反序列化,同时将该次遍历圈层的节点集合中的起始节点进行过滤,将符合过滤条件的起始节点放入待处理节点队列,并将该起始
节点放入图拓扑构建模块中,对于不符合过滤条件的起始节点,进行删除,对于非起始节点的节点和所有的边数据都在GetData算子内存储并保持,供计算层中的后续的算子获得属性数据;
[0011]GetEdge算子:从待处理节点队列中获取节点集合中的节点,从所述GetData算子中获取边集合的边,并输出获取的节点集合中的节点对应的边至EdgeFilter算子;
[0012]EdgeFilter算子:至少包括一个,用于对节点对应的边进行预处理并进行边过滤,将符合查询条件的节点对应的边传入第一GetNode算子,对不符合查询条件的节点对应的边传入待丢弃边队列,输出过滤后的边给第一GetNode算子;
[0013]第一GetNode算子:数量与所述EdgeFilter算子匹配,用于获取过滤后的边对应的目的节点,并对该过滤后的边对应的目的节点进行预处理并进行目的节点过滤,将符合查询条件的目的节点放入待处理节点队列和图拓扑构建模块,并将有目的节点对应的边输入至所述图拓扑构件模块中;
[0014]待处理节点队列,用于存放符合过滤条件的节点,数据来源包括GetData算子获得的符合过滤条件的起始节点以及第一GetNode算子获得的符合过滤条件的节点。
[0015]待丢弃边队列,用于存放通过EdgeFilter算子过滤后得到的不符合边过滤条件的边的集合,用以删除冗余路径;
[0016]待处理边队列,用于存放暂时未找到目的节点的边的集合,且所述存储层每遍历一次圈层,重新判断所述待处理边列队的边是否有找到目的节点,若所述存储层的遍历结束时,将所述待处理边队列内的边定义为冗余路径并加入到待丢弃边队列中。
[0017]作为优化,所述第一GetNode算子中,当存储层数据为分批次返回节点集合与边集合时,若获取不到过滤后的边对应的目的节点,则将该过滤后的边传入到待处理边队列中。
[0018]作为优化,还包括第二GetNode算子,用于在所述存储层每完成一次圈层的遍历,重新判断所述待处理边列队的边是否有找到目的节点,具体过程为:
[0019]所述存储层每完成一圈层的遍历,返回新的节点集合,第二GetNode算子遍历所述待处理边列队中的边,同时,判断所述待处理边列队中的边是否在新的节点集合中有对应的目的节点,若是,将该目的节点进行预处理并进行目的节点过滤,将符合查询条件的目的节点输出至待处理节点队列和图拓扑构建模块中,并将有目的节点对应的入边输入至所述图拓扑构件模块中。否则,该边继续保存在所述待处理边队列中。
[0020]作为优化,若所述计算节点有多个,多个所述计算节点包括一个主计算节点和若干从计算节点,所述主计算节点中设置有图拓展构建模块,所述从计算节点中的符合查询条件的节点和边输出值所述主计算节点中的图拓展构建模块。
[0021]作为优化,若所述EdgeFilter算子有多个,所述EdgeFilter算子一一对应所述第一GetNode算子,且多个EdgeFilter算子同时工作。
[0022]本专利技术还公开了一种面向图计算的拓扑查询方法,包括如下步骤:
[0023]S1、遍历多圈层路径,每完成一个圈层的遍历,返回该圈层需进行计算和过滤的节点集合以及边集合;
[0024]S2、基于查询条件计算和过滤所述节点集合以及边集合;
[0025]S3、接收经过步骤S2计算和过滤后符合查询条件的节点集合以及边集合,并将符合查询条件的节点集合以及边集合进行组合构建成符合查询条件的图。
[0026]作为优化,步骤S2的具体步骤为:
[0027]S2.1、通过GetData算子将所述节点集合与边集合反序列化,同时将该次遍历圈层的起始节点进行过滤,将符合过滤条件的起始节点放入待处理节点队列,同时,将该起始节点放入图拓扑构建模块中;
[0028]S2.2、通过GetEdge算子从待处理节点队列中获取节点集合中的节点,从所述GetData算子中获取边集合的边,并输出获取的节点集合中的节点对应的边至EdgeFilter算子;
[0029]S2.3、通过EdgeFilter算子对边集合中的边进行预处理并进行边过滤,将符本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向图计算的拓扑查询结构,其特征在于,包括:存储层,用于进行多圈层路径的遍历,每完成一个圈层的遍历,就返回该圈层需进行计算和过滤的节点集合以及边集合;计算层,至少包括一个计算节点,所述计算节点用于基于查询条件计算和过滤所述存储层返回的节点集合以及边集合,通过流水线处理的方式与所述存储层并行工作;图拓扑构建模块,设置在其中一个计算节点中,接收经过所述计算节点的计算和过滤后符合查询条件的节点集合以及边集合,并将符合查询条件的节点集合以及边集合进行组合构建成符合查询条件的图。2.根据权利要求1所述的一种面向图计算的拓扑查询结构,其特征在于,所述计算节点包括:GetData算子:用于获取所述存储层遍历圈层得到的节点集合以及节点集合中的节点对应的边集合,并将所述节点集合与边集合反序列化,同时将该次遍历圈层的节点集合中的起始节点进行过滤,将符合过滤条件的起始节点放入待处理节点队列,并将该起始节点放入图拓扑构建模块中,对于不符合过滤条件的起始节点,进行删除,对于节点集合中的未过滤的非起始节点的节点和所有的边数据都在GetData算子内存储并保持,供计算层中的后续的算子获得属性数据;GetEdge算子:从待处理节点队列中获取节点集合中的节点,从所述GetData算子中获取边集合的边,并输出获取的节点集合中的节点对应的边至EdgeFilter算子;EdgeFilter算子:至少包括一个,用于对节点对应的边进行预处理并进行边过滤,将符合查询条件的节点对应的边传入第一GetNode算子,对不符合查询条件的节点对应的边传入待丢弃边队列,输出过滤后的边给第一GetNode算子;第一GetNode算子:数量与所述EdgeFilter算子匹配,用于获取过滤后的边对应的目的节点,并对该过滤后的边对应的目的节点进行预处理并进行目的节点过滤,将符合查询条件的目的节点放入待处理节点队列和图拓扑构建模块,并将有目的节点对应的边输入至所述图拓扑构件模块中;待处理节点队列,用于存放符合过滤条件的节点,包括GetData算子获得的符合过滤条件的起始节点以及第一GetNode算子获得的符合过滤条件的节点。待丢弃边队列,用于存放通过EdgeFilter算子过滤后得到的不符合边过滤条件的边的集合,用以删除冗余路径;待处理边队列,用于存放暂时未找到目的节点的边的集合,且所述存储层每遍历一次圈层,重新判断所述待处理边列队的边是否有找到目的节点,若所述存储层的遍历结束时,将所述待处理边队列内的边定义为冗余路径并加入到待丢弃边队列中。3.根据权利要求2所述的一种面向图计算的拓扑查询结构,其特征在于,所述第一GetNode算子中,当存储层数据为分批次返回节点集合与边集合时,若获取不到过滤后的边对应的目的节点,则将该过滤后的边传入到待处理边队列中。4.根据权利要求3所述的一种面向图计算的拓扑查询结构,其特征在于,还包括第二GetNode算子,用于在所述存储层每完成一次圈层的遍历,重新判断所述待处理边列队的边是否有找到目的节点,...

【专利技术属性】
技术研发人员:段翰聪李林张建李世豪李浩王书涵邹涛
申请(专利权)人:电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1