CN111177486B - 一种分布式图计算过程中的消息传递方法和装置 - Google Patents

一种分布式图计算过程中的消息传递方法和装置 Download PDF

Info

Publication number
CN111177486B
CN111177486B CN201911314037.0A CN201911314037A CN111177486B CN 111177486 B CN111177486 B CN 111177486B CN 201911314037 A CN201911314037 A CN 201911314037A CN 111177486 B CN111177486 B CN 111177486B
Authority
CN
China
Prior art keywords
message
vertex
graph
destination
source
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
Application number
CN201911314037.0A
Other languages
English (en)
Other versions
CN111177486A (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.)
Sichuan Shutian Mengtu Data Technology Co ltd
Wuhan Dream Database Co ltd
Original Assignee
Sichuan Shutian Mengtu Data Technology Co ltd
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 Sichuan Shutian Mengtu Data Technology Co ltd filed Critical Sichuan Shutian Mengtu Data Technology Co ltd
Priority to CN201911314037.0A priority Critical patent/CN111177486B/zh
Publication of CN111177486A publication Critical patent/CN111177486A/zh
Application granted granted Critical
Publication of CN111177486B publication Critical patent/CN111177486B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及分布式图计算技术领域,提供了一种分布式图计算过程中的消息传递方法和装置。方法包括源顶点产生消息M1时,源顶点根据相应源顶点所在图关系,生成待发消息组;源节点根据每一条待发消息组中的目的节点标识,向相应的目的节点发送所述待发消息;各目的节点在接收到源节点发送过来的消息后,将其按照消息格式缓存起来;各目的节点遍历自身存储有的一个或者多个顶点,确定与消息中源顶点V1属于同一图关系的目的顶点,则根据相应的消息M1内容调整相应目的顶点。本发明对需要跨节点传递、并且需要保存的消息数目,与目的顶点的数目无关,而只正相关于目的节点的数目,从而大幅减少了消息传递的通信代价,和消息缓存的存储代价。

Description

一种分布式图计算过程中的消息传递方法和装置
【技术领域】
本发明涉及分布式图计算技术领域,特别是涉及一种分布式图计算过程中的消息传递方法和装置。
【背景技术】
大规模的并行图计算,通常基于BSP(Bulk Synchronous Parallel)模型实现。BSP图计算模型,是以顶点为中心,基于消息传递的并行计算实现的。一次BSP图计算,由一连串的迭代过程组成,每次迭代包含以下三个子步骤:
1、局部计算;
2、邻接的顶点之间进行消息交换;
3、同步等待。所有顶点完成一次迭代后,共同进入下一次迭代。
BSP图计算迭代过程,如图1所示。
在分布式环境下,图的顶点是分布存放在不同的计算机节点上的,因此,消息传送往往会跨节点进行。由于图计算通常是一个多步迭代的过程,每次迭代会产生大量的消息传递。因此,这些跨节点的消息传递,会产生巨大的通信代价。同时,每个目的顶点需要保存它收到的每条消息,因此还会产生较大的存储代价。
以图2为例,顶点V1和它的邻接顶点V2、V3、V4、V5、V6、V7、V8,分别存放在不同的节点N1、N2、N3和N4上。若顶点V1产生一条消息,沿着V1的关联边,发送给它的所有邻接顶点,则会有7次跨节点的消息传递。另外,每个目的顶点都需要分别保存收到的每条消息。在图2中,同一条消息需要保存7次。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明要解决的技术问题是现有技术中的分布式环境下,图的顶点是分布存放在不同的计算机节点上的,因此,消息传送往往会跨节点进行。由于图计算通常是一个多步迭代的过程,每次迭代会产生大量的消息传递。因此,这些跨节点的消息传递,会产生巨大的通信代价。同时,每个目的顶点需要保存它收到的每条消息,因此还会产生较大的存储代价。
本发明进一步要解决的技术问题是提供一种分布式图计算过程中的消息传递方法和装置。
本发明采用如下技术方案:
第一方面,本发明提供了一种分布式图计算过程中的消息传递方法,图的顶点是分布存放在不同的计算机节点上,其特征在于,将发送目的节点的标识Nj和源顶点的标识编号Vi,合并作为消息记录的主键(Nj,Vi);其中,相应的源顶点产生的消息记录为:[(Nj,Vi),Mi];其中,j为相应目的节点的编号标识号,i为相应源顶点的编号标识号,传递方法包括:
源顶点产生消息M1时,源顶点根据相应源顶点所在图关系,生成待发消息组;其中,所述待发消息组由一条或者多条[(Nj,V1),M1]消息构成;其中,Nj为所述图关系中所记录的,与所述源顶点相对的目的顶点所在目的节点标识;
源节点根据每一条待发消息组中的目的节点标识,向相应的目的节点发送所述待发消息;
各目的节点在接收到源节点发送过来的消息后,将其按照[(Nj,V1),M1]消息格式缓存起来;
各目的节点遍历自身存储有的一个或者多个顶点,确定与消息中源顶点V1属于同一图关系的目的顶点,则根据相应的消息M1内容调整相应目的顶点。
优选的,所述方法还包括:
采用属性表存储图的属性数据,采用分组关联表存储图的拓扑数据;其中,所述拓扑数据中包含图中各顶点的邻接顶点和关联边信息;
对拓扑数据和属性数据分别设置不同的内存调度优先级;其中,所述拓扑数据的内存调度优先级高于所述属性数据;
根据不同的查询要求,选用相应的数据存储结构进行图数据信息的读取。
优选的,所述采用分组关联表存储图的拓扑数据,具体包括:
采用关联表存储图中顶点和边的关联信息,得到每个顶点的关联边集合;
在所述关联表中,对指定顶点的关联边按目的顶点进行分组,得到每个顶点的邻接顶点集合,形成分组关联表。
优选的,除所述拓扑数据外,所述分组关联表中还存储有图中顶点和边的关键属性和/或常用属性,则在形成所述分组关联表后,所述方法还包括:通过内嵌方式,将图中顶点和边的关键属性和/或常用属性存储至所述分组关联表中。
优选的,所述根据不同的查询要求,选用相应的数据存储结构进行图数据相应信息的读取查询,具体为:
在需要拓扑数据和属性数据的遍历查询中,访问所述分组关联表与所述属性表共同完成图的遍历查询;
在不需要通用属性数据的遍历查询中,访问所述分组关联表,通过读取指定顶点的邻接顶点进行图的遍历查询;
在不需要属性数据的拓扑查询中,访问所述分组关联表,通过读取指定顶点的邻接顶点和关联边获取图的拓扑信息。
优选的,所述各目的节点遍历自身存储有的一个或者多个顶点,确定与消息中源顶点V1属于同一图关系的目的顶点,具体包括:
遍历所述分组关联表,根据所述分组关联表中记录的图中各顶点的邻接顶点和关联边信息,确定与消息中源顶点V1属于同一图关系的目的顶点;
其中,所述查询要求具体为遍历所述分组关联表。
优选的,在根据相应的消息M1内容调整完目的节点N2中所包含的一个或者多个目的顶点后,所述方法还包括:
目的节点N2记录调整过程中,完成对应消息M1相关内容修改的一个或者多个目的顶点标识号,并将相应目的顶点标识号承载在响应消息中返回给源节点;以便所述源节点根据相应图关系确定与所述源节点关联的各目的节点都完成消息传递过程后,释放缓存中的消息组。
优选的,所述方法还包括:
若目的节点N3记录调整过程中,存在一个或者多个目的顶点修改内容失败,则目的节点N3维持其缓存中的消息记录,并向源节点返回失败消息;
源节点指定失败应对策略,并向所述目的节点发送失败应对消息,其中,所述失败应对策略包括:
继续进行修改,并在达到指定次数修改失败后,新建一相应修改后顶点内容,并删除历史修改失败顶点;或者,
继续进行修改,并在达到指定次数修改失败后,删除目的节点N3自身缓存的消息,并向源节点返回最终失败消息,以便源节点进行相应修改失败情况记录;或者,
放弃修改,删除目的节点N3自身缓存的消息,并向源节点返回最终失败消息,以便源节点进行相应修改失败情况记录。
第二方面,本发明还提供了一种分布式图计算过程中的消息传递装置,用于实现第一方面所述的分布式图计算过程中的消息传递方法,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行第一方面所述的分布式图计算过程中的消息传递方法。
第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的分布式图计算过程中的消息传递方法。
本发明对需要跨节点传递、并且需要保存的消息数目,与目的顶点的数目无关,而只正相关于目的节点的数目,从而大幅减少了消息传递的通信代价,和消息缓存的存储代价。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的现有技术中的BSP图计算迭代过程;
图2是本发明实施例提供的现有技术中一种分布式图计算过程中的消息传递架构图;
图3是本发明实施例提供的一种分布式图计算过程中的消息传递方法流程示意图;
图4是本发明实施例提供的一种分布式图计算过程中的消息传递架构图;
图5是本发明实施例提供的一种分布式图计算过程中的消息传递失败的处理方法流程图;
图6为本发明实施例提供的一种基于分组关联表的图数据存取方法的流程图;
图7为图6中所示步骤301的具体实施流程图;
图8为本发明实施例提供的多重图g的关系图;
图9为本发明实施例提供的多重图g中的边信息;
图10为本发明实施例提供的用于存储多重图g的分组关联表;
图11是本发明实施例提供的一种分布式图计算过程中的消息传递装置结构示意图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例1提供了一种分布式图计算过程中的消息传递方法,图的顶点是分布存放在不同的计算机节点上,其特征在于,将发送目的节点的标识Nj和源顶点的标识编号Vi,合并作为消息记录的主键(Nj,Vi);其中,相应的源顶点产生的消息记录为:[(Nj,Vi),Mi];其中,j为相应目的节点的编号标识号,i为相应源顶点的编号标识号,如图3和图4所示,传递方法包括:
在步骤201中,源顶点产生消息M1时,源顶点根据相应源顶点所在图关系,生成待发消息组;其中,所述待发消息组由一条或者多条[(Nj,V1),M1]消息构成;其中,Nj为所述图关系中所记录的,与所述源顶点相对的目的顶点所在目的节点标识。
以图4为例,所述节点包括作为源节点的N1,作为目的节点的N2、N3和N4。即上述的编号j的取值范围是1-4。
在步骤202中,源节点根据每一条待发消息组中的目的节点标识,向相应的目的节点发送所述待发消息。
以图4为例,源节点N1根据本地消息缓存中存储的待发消息:[(N2,V1),M1]、[(N3,V1),M1]、[(N4,V1),M1],分别取出相应的待发消息,以消息中面对节点字段记录的目标节点标识(N2,N3,N4)进行各自待发消息的发送。
在步骤203中,各目的节点在接收到源节点发送过来的消息后,将其按照[(Nj,V1),M1]消息格式缓存起来。
之所以这么操作,是为了各目的节点在进行自身所管理的目的顶点做对应消息M1中记载内容修改时候,可以进行目的顶点的确认。因为,在实际实现过程中,同一目的节点上可能存储了对应于不同图关系的目的顶点。
在步骤204中,各目的节点遍历自身存储有的一个或者多个顶点,确定与消息中源顶点V1属于同一图关系的目的顶点,则根据相应的消息M1内容调整相应目的顶点。
需要指出的是,在本发明实施例中所使用的标识Vi,Mi,Nj等等仅仅是为了便于内容阐述而提出的,其除了帮助区别相同名称下的不同对象以外,不具有其他特殊的限定意义。
本发明实施例对需要跨节点传递、并且需要保存的消息数目,与目的顶点的数目无关,而只正相关于目的节点的数目,从而大幅减少了消息传递的通信代价,和消息缓存的存储代价。
结合本发明实施例,为了能够更好的支持上述的消息转发方式,还提供了一种优选的图数据信息存储方式,如图6所示,包括:
采用属性表存储图的属性数据,采用分组关联表存储图的拓扑数据;其中,所述拓扑数据中包含图中各顶点的邻接顶点和关联边信息;对拓扑数据和属性数据分别设置不同的内存调度优先级;其中,所述拓扑数据的内存调度优先级高于所述属性数据;根据不同的查询要求,选用相应的数据存储结构进行图数据信息的读取。其具体实现过程将通过实施例2具体展开阐述,在本发明实施例后续将直接依托所述存储方式进行更深层次技术描述。
依托于上述的存储方式,本发明实施例1中步骤204中所涉及的,所述各目的节点遍历自身存储有的一个或者多个顶点,确定与消息中源顶点V1属于同一图关系的目的顶点,具体包括:
遍历所述分组关联表,根据所述分组关联表中记录的图中各顶点的邻接顶点和关联边信息,确定与消息中源顶点V1属于同一图关系的目的顶点;
其中,所述查询要求具体为遍历所述分组关联表。
结合本发明实施例,考虑更为完善的应用场景情况,还包括在根据相应的消息M1内容调整完目的节点N2中所包含的一个或者多个目的顶点后,所述方法还包括:
目的节点N2记录调整过程中,完成对应消息M1相关内容修改的一个或者多个目的顶点标识号,并将相应目的顶点标识号承载在响应消息中返回给源节点;以便所述源节点根据相应图关系确定与所述源节点关联的各目的节点都完成消息传递过程后,释放缓存中的消息组。
结合本发明实施例1,考虑到可能存在的目的顶点根据消息M1进行数据修改时候失败的情况,如图5所示,所述方法还包括:
在步骤401中,若目的节点N3记录调整过程中,存在一个或者多个目的顶点修改内容失败,则目的节点N3维持其缓存中的消息记录,并向源节点返回失败消息。
在步骤402中,源节点指定失败应对策略,并向所述目的节点发送失败应对消息,其中,所述失败应对策略包括:
策略1:继续进行修改,并在达到指定次数修改失败后,新建一相应修改后顶点内容,并删除历史修改失败顶点。
策略2:继续进行修改,并在达到指定次数修改失败后,删除目的节点N3自身缓存的消息,并向源节点返回最终失败消息,以便源节点进行相应修改失败情况记录;或者,
策略3:放弃修改,删除目的节点N3自身缓存的消息,并向源节点返回最终失败消息,以便源节点进行相应修改失败情况记录。
以上不同的策略适用于不同的图关系数据情况,对于策略1而言,其存在意义在于源顶点的权限是高于目的节点的,而完成其消息M1中携带的修改内容的优先级是最高的,因此,可以在确定首次修改失败后,根据策略1直接删除该顶点,而重新新建一个与修改后目的顶点内容相同的顶点。对于策略2则是一种保守的策略,即源节点在目的顶点在指定次数修改(例如3次)都无法有效完成后,仅在源节点本地日志中进行失败情况记录,以便于相关操作人员通过日志中记录的失败情况进行介入管理。对于策略3则是对策略2的一种占用资源的改良版本,即仅需失败一次便到源节点本地日志中做相关记录。
实施例2:
本发明实施例提供了一种基于分组关联表的图数据存取方法,用于支撑实施例1所阐述的分布式图计算过程中的消息传递方法,如图6,具体包括以下步骤:
步骤301,采用属性表存储图的属性数据,采用分组关联表存储图的拓扑数据;其中,所述拓扑数据中包含图中各顶点的邻接顶点和关联边信息。
图数据可分为属性数据和拓扑数据两类,所述属性数据与所述拓扑数据采用不同的数据存储结构进行分开存储;其中,图中点和边的属性数据由属性表存储,可通过Key-Value形式实现存储,也可通过链接或链表的方式实现存储。而图的拓扑数据采用分组关联表存储,也可通过Key-Value形式实现,分组关联表可存储图的完整拓扑信息。在本发明实施例中,可在单机环境下实现多重图的分组关联表,也可在分布式环境下实现多重图的分组关联表,从而实现大规模图数据库的存储。
步骤302,对拓扑数据和属性数据分别设置不同的内存调度优先级;其中,所述拓扑数据的内存调度优先级高于所述属性数据。
图的拓扑数据和属性数据在图的遍历查询中的作用权重是不同的,拓扑数据在图的遍历查询中使用较多,而属性数据在图的遍历查询中使用较少。假设将属性数据与拓扑数据均永久存储于内存或分布式缓存系统中,属性数据使用较少,但会长时间占用内存,会在一定程度上影响查询效率;假设将属性数据与拓扑数据均存放于内存以外的文件系统中,在遍历需要时再进行调度,由于拓扑数据使用较多,遍历时需要经常调度,这在一定程度上也会影响查询效率。
在本发明实施例中,将图的拓扑数据和属性数据分开存储后,便可对图的拓扑数据和属性数据设置不同的内存调度优先级。由于图的拓扑数据在图的遍历查询发挥作用大,因此可设置较高的内存调度优先级;而大部分属性数据在图的遍历查询作用较小,因此可设置较低的内存调度优先级。具体来讲,在大规模图数据库中,图的拓扑数据可永久存在于内存或分布式缓存系统中,则在图的遍历中可直接读取所述拓扑数据;而图的大部分属性数据可保存在文件系统、分布式文件系统、关系数据库或分布式数据库系统中,在遍历需要时才调度到所述内存或所述分布式缓存系统中,从而进行信息的读取。如此一来,便可有效利用系统内存,进一步提高遍历查询的效率。
步骤303,根据不同的查询要求,选用相应的数据存储结构进行图数据相关信息的读取。在前述步骤中,将图的数据分为属性数据和拓扑数据,并使用不同的数据存储结构进行存储,在进行遍历查询时,有时既需要拓扑数据又需要属性数据,有时只需要拓扑数据;查询拓扑数据时,有时只需进行点到邻接点的遍历,有时还需进行关联边信息。当查询要求不同时,需要访问的数据存储结构及需要读取的信息也就不同。
本发明提供的一种基于分组关联表的图数据存取方法中,仅通过分组关联表这一个数据存储结构,即可完整地存储顶点和顶点之间的邻接信息以及顶点和边之间的关联信息,还可内嵌存储顶点和边的关键属性和/或常用属性,则在大部分情况下,仅通过访问分组关联表这一数据存储结构即可完成图的遍历查询,从而大大提高了图的遍历查询效率;同时,将属性数据和拓扑数据分开存储,并根据权重设置不同的内存调度优先级,则在进行遍历查询时,可根据不同的查询要求访问相应的数据存储结构,进一步提高了图的遍历查询性能。
参考图7,在本发明实施例中,所述步骤301中对于拓扑数据的存储具体又包括以下步骤:
步骤3011,采用关联表存储图中顶点和边的关联信息,得到每个顶点的关联边集合。在多重图中,同一个起点和终点之间,可能存在超过一条的边,为保存完整的拓扑信息,首先使用关联表存储图的拓扑数据。在一个起点对象中,记录从它出发的所有关联边集合。
步骤3012,在所述关联表中,对指定顶点的关联边按目的顶点进行分组,得到每个顶点的邻接顶点集合,形成分组关联表。由所述步骤3011得到的关联表只能保存点的关联边信息,在图的遍历查询中,需要分两步才可获取指定顶点的邻接顶点:首先获取指定顶点的关联边标识符,然后找到指定关联边记录,从关联边记录中获得目的顶点,汇总得到指定顶点的邻接顶点集合,这大幅降低了图数据的遍历查询效率。因此,在得到关联表后,还需对图中指定顶点的关联边集合按目的顶点进行分组,从而得到能存储多重图的完整拓扑信息的分组关联边数据结构,即分组关联表。如此一来,使得所述分组关联表中不仅存储有指定顶点的关联边集合,还存储有指定顶点的邻接顶点集合。因此,在进行图的遍历查询时,对指定图的指定顶点,只需要一次方法调用就可以获得其邻接顶点;同样只需要一次方法调用,就可以获得其关联边,可实现多重图高效的遍历查询。
结合本发明实施例,还存在一种优选的实现方案,除所述拓扑数据外,所述分组关联表中还存储有图中顶点和边的关键属性和/或常用属性。在本发明实施例中,图的属性数据是和拓扑数据是分开存储的,但为了进一步提高图的遍历查询性能,对图中顶点和边的少量关键属性和/或常用属性,通过内嵌编码的性能,存储到在所述分组关联表中。所述关键属性可以是指图中顶点和边的标签信息和/或类别属性信息,所述常用属性是指在图的遍历查询中某些常用的点和边的属性信息;其中,所述关键属性与所述常用属性可由用户根据实际应用需要自行选择添加。则在所述步骤3022之后,还包括以下步骤:
步骤3013,通过内嵌方式,将图中顶点和边的关键属性和/或常用属性存储至所述分组关联表中。如果将这部分关键属性和/或常用属性存储至所述分组关联表中,则在所述属性数据的存储中,所述属性表中可只存储除这部分关键属性和/或常用属性以外的属性数据,避免重复存储。
其中,当所述分组关联表中内嵌存储有图中顶点和边的关键属性和/或常用属性时,在所述步骤302中,所述顶点和边的关键属性和/或常用属性设置与所述拓扑数据相同的内存调度优先级。而内存调度优先级较低的所述大部分属性数据,是指除顶点和边的少量关键属性和/或常用属性以外的属性数据,即不常用的属性数据。
在所述步骤303中,对于图的遍历查询具体可分为以下三种常见的情况:
第一种,在需要拓扑数据和属性数据的遍历查询中,访问所述分组关联表与所述属性表共同完成图的遍历查询。例如,在社交网络中进行关系人查找时,需要查找指定人员认识的多层关系人,即需要查找拓扑数据,并且在查找过程中需要对关系人按某些属性进行筛选,比如需要按关系人的毕业学校进行筛选,即需要查找属性数据。这种情况下就需要同时访问分组关联表和属性表,才能完成遍历查询。
第二种,在不需要属性数据的遍历查询中,访问所述分组关联表,通过读取指定顶点的邻接顶点进行图的遍历查询。所述分组关联表中保存了图的完整拓扑信息,在图中进行遍历查询时,可以只访问所述分组关联表来读取指定顶点的邻接顶点进行遍历。同时,由于所述分组关联表具有较高的内存调度优先级,所述分组关联表中图的拓扑数据可永久存在于内存或分布式缓存系统中。因此大部分情况下,在图的遍历中可直接由系统内存中读取所述拓扑数据,而不用读写文件系统、分布式文件系统、关系数据库或分布式数据库系统等,从而可以高效地完成图的遍历查询。
在优选方案中,所述分组关联表中还用内嵌的方式保存顶点和边的关键属性和/或常用属性。这是由于除了涉及拓扑信息,有时在遍历过程中往往还会使用顶点或边的一些属性对遍历结果进行筛选,最基本的是使用点和边的类别标签进行筛选。根据实际遍历查询需求,在所述分组关联表中内嵌存储这部分属性信息后,在大部分情况下,仍可以不访问图的属性数据存储结构,就可以完成图的遍历查询。比如,在社交网络中进行关系人查找时,需要查找指定人员认识的多层关系人。如果图数据库中的顶点都是人员顶点,并且查找没有涉及到关系人的其他属性,则通过访问所述分组关联表中的拓扑数据就可以完成多层关系人查找;如果图数据库中混存了不同类别的顶点,此时在所述分组关联表中内嵌存储顶点的类别标签后,则仍可以只通过访问所述分组关联表完成关系人查找。比如,如果需要查找多层的女性关系人,则在分组关联表中,需要对人员节点内嵌一个“性别”属性,如此一来即可不用访问属性表,直接通过访问所述分组关联表即可完成遍历查找。
第三种,在不需要属性数据的拓扑查询中,访问所述分组关联表,通过读取指定顶点的邻接顶点和关联边获取图的拓扑信息。通过所述分组关联表,不仅可获取指定顶点的邻接点集合,还可获取指定顶点的关联边集合。在上述第二种遍历查询下,可以只读取指定顶点的邻接顶点进行遍历,而在需要获取关联边信息时,还可在所述分组关联表中读取指定顶点的关联边。比如,如果只进行图的拓扑查询或变换,此时无需访问图的属性数据存储结构,而仅通过访问所述分组关联表中的拓扑数据,即可获取指定顶点的邻接点集合与关联边集合,从而获取图的完整拓扑信息,完成图的拓扑查询或变换,例如求最短路径、网页节点数据库中进行PageRank运算等。
假设存在一个多重图g,如图8所示,图g包括6个顶点和11条有向边,其中,v1-v6为图g中6个顶点的标识符,e1-e11为图g中的11条有向边标识符。图是一个由顶点集合和边集合构成的有序二元组,顶点代表实体,又被称为节点,边用来表示实体间的关系。图g的点集合中包含了图中每个顶点的标识符和属性信息,图g的边集合中包含了图中每条边的标识符、每条边的起点标识符和终点标识符以及每条边的属性信息。其中,各条边的边信息如图9所示,对于图中每条有向边,分别对应有起始点,比如,有向边e1的起点和终点分别为顶点v1和顶点v2,有向边e4的起点和终点分别为顶点v2和顶点v3。
对于图的拓扑数据的存储,首先根据图g的点集合和边集合信息,参照所述步骤3011,以每个顶点作为起点,记录从该起点出发的所有关联边,以关联表形式存储。比如,参考图8和图9,对于顶点v1,以v1为起点的有向边有e1,e2,e3,e11,则顶点v1的关联边集合为{e1,e2,e3,e11},对于其他各顶点,也采用相同的方法存储有顶点对应的关联边信息。其次,参照所述步骤3012,根据终点的不同,对于每个顶点的关联边集合进行分组,形成分组关联表;当起点和终点之间存在多条边时,这个分组中存储了多条有向边;当起点和终点之间仅存在一条边时,这个分组中只存储一条有向边。如图10所示,在顶点v1的关联边集合{e1,e2,e3,e11}中,有向边e1,e2,e3均是以顶点v2作为终点,因此作为一组有向边;仅有向边e11是以顶点v5作为终点,单独作为一组有向边,以此类推,其他各点的关联边集合也按照该原则进行分组。如此一来,所述分组关联表中不仅存储有各顶点的关联边信息,还存储了各顶点的邻接顶点信息,实现了点的邻接数据和关联数据的聚集存储。
在本发明实施例中,可采用Key-Value结构,利用面向对象编程语言以及映射和集合来实现图的分组关联表。实现用到的类定义如下:
Figure BDA0002325323480000131
Figure BDA0002325323480000141
上述Edge类保存了一条有向边对象,其中,成员变量v1是起点标识符,成员变量v2是终点标识符。
Figure BDA0002325323480000142
上述GroupedIncidence类保存了一个顶点的分组关联边信息,其中,成员变量incidence用一个映射保存了一个关联边分组。incidence的key,是这组关联边的目的顶点标识符;incidence的value,则是具有相同起点和终点的有向边的标识符结合。
Figure BDA0002325323480000143
Figure BDA0002325323480000151
上述类Graph保存了一个图的完整信息。其中,成员变量vertices使用一个映射保存了图的顶点属性信息,使用的Vertex类只保存顶点的属性信息,类定义省略;成员变量edges使用映射保存了边属性信息;图的顶点属性信息和边属性信息均为图的属性数据,可通过属性表保存。成员变量incidences使用映射,通过分组关联表,保存了图的完整拓扑信息。其中,方法getAdjacentVertices用来获取指定顶点的邻接点集合;通过分组关联表incidences,可以快速获得各顶点的所有邻接点的标识符集合,从而实现图数据库中高效的遍历查询。方法getIncidentEdges用来获取指定顶点的关联边集合,通过合并分组的方式,能够得到指定顶点的所有关联边集合,满足图数据库查询的需要。
在本发明实施例中,将属性数据和拓扑数据分开存储,属性数据采用传统的属性表来存储;对于拓扑数据,首先采用关联表存储图中每个顶点的关联边集合,再对每个顶点的关联边集合按边的目的顶点划分,形成分组关联表,使分组关联表中存有每个顶点的邻接顶点和关联边信息,同时还可内嵌存储部分关键属性和/或常用属性,以进一步提高遍历查询性能。由于拓扑数据和属性数据在图的遍历查询中的作用权重不同,因此对拓扑数据设置较高的内存调度优先级,最终根据不同的遍历查询要求,访问相应的数据存储结构,完成图的遍历或信息查询,有效提高了遍历查询效率。
实施例3:
如图11所示,是本发明实施例的分布式图计算过程中的消息传递装置的架构示意图。本实施例的分布式图计算过程中的消息传递装置包括一个或多个处理器21以及存储器22。其中,图11中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图11中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的分布式图计算过程中的消息传递方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行分布式图计算过程中的消息传递方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的分布式图计算过程中的消息传递方法,例如,执行以上描述的图3、图5-6所示的各个步骤。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种分布式图计算过程中的消息传递方法,图的顶点是分布存放在不同的计算机节点上,其特征在于,将发送目的节点的标识Nj和源顶点的标识编号Vi,合并作为消息记录的主键(Nj,Vi);其中,相应的源顶点产生的消息记录为:[(Nj,Vi),Mi];其中,j为相应目的节点的编号标识号,i为相应源顶点的编号标识号,传递方法包括:
源顶点产生消息M1时,源顶点根据相应源顶点所在图关系,生成待发消息组;其中,所述待发消息组由一条或者多条[(Nj,V1),M1]消息构成;其中,Nj为所述图关系中所记录的,与所述源顶点相对的目的顶点所在目的节点标识;
源节点根据每一条待发消息组中的目的节点标识,向相应的目的节点发送所述待发消息;
各目的节点在接收到源节点发送过来的消息后,将其按照[(Nj,V1),M1]消息格式缓存起来;
各目的节点遍历自身存储有的一个或者多个顶点,确定与消息中源顶点V1属于同一图关系的目的顶点,则根据相应的消息M1内容调整相应目的顶点;
所述方法还包括:
采用属性表存储图的属性数据,采用分组关联表存储图的拓扑数据;其中,所述拓扑数据中包含图中各顶点的邻接顶点和关联边信息;
对拓扑数据和属性数据分别设置不同的内存调度优先级;其中,所述拓扑数据的内存调度优先级高于所述属性数据;
根据不同的查询要求,选用相应的数据存储结构进行图数据信息的读取;
所述各目的节点遍历自身存储有的一个或者多个顶点,确定与消息中源顶点V1属于同一图关系的目的顶点,具体包括:
遍历所述分组关联表,根据所述分组关联表中记录的图中各顶点的邻接顶点和关联边信息,确定与消息中源顶点V1属于同一图关系的目的顶点;
其中,所述查询要求具体为遍历所述分组关联表。
2.根据权利要求1所述的分布式图计算过程中的消息传递方法,其特征在于,所述采用分组关联表存储图的拓扑数据,具体包括:
采用关联表存储图中顶点和边的关联信息,得到每个顶点的关联边集合;
在所述关联表中,对指定顶点的关联边按目的顶点进行分组,得到每个顶点的邻接顶点集合,形成分组关联表。
3.根据权利要求2所述的分布式图计算过程中的消息传递方法,其特征在于,除所述拓扑数据外,所述分组关联表中还存储有图中顶点和边的关键属性和/或常用属性,则在形成所述分组关联表后,所述方法还包括:通过内嵌方式,将图中顶点和边的关键属性和/或常用属性存储至所述分组关联表中。
4.根据权利要求1所述的分布式图计算过程中的消息传递方法,其特征在于,所述根据不同的查询要求,选用相应的数据存储结构进行图数据相应信息的读取查询,具体为:
在需要拓扑数据和属性数据的遍历查询中,访问所述分组关联表与所述属性表共同完成图的遍历查询;
在不需要通用属性数据的遍历查询中,访问所述分组关联表,通过读取指定顶点的邻接顶点进行图的遍历查询;
在不需要属性数据的拓扑查询中,访问所述分组关联表,通过读取指定顶点的邻接顶点和关联边获取图的拓扑信息。
5.根据权利要求1所述的分布式图计算过程中的消息传递方法,其特征在于,在根据相应的消息M1内容调整完目的节点N2中所包含的一个或者多个目的顶点后,所述方法还包括:
目的节点N2记录调整过程中,完成对应消息M1相关内容修改的一个或者多个目的顶点标识号,并将相应目的顶点标识号承载在响应消息中返回给源节点;以便所述源节点根据相应图关系确定与所述源节点关联的各目的节点都完成消息传递过程后,释放缓存中的消息组。
6.根据权利要求5所述的分布式图计算过程中的消息传递方法,其特征在于,所述方法还包括:
若目的节点N3记录调整过程中,存在一个或者多个目的顶点修改内容失败,则目的节点N3维持其缓存中的消息记录,并向源节点返回失败消息;
源节点指定失败应对策略,并向所述目的节点发送失败应对消息,其中,所述失败应对策略包括:
继续进行修改,并在达到指定次数修改失败后,新建一相应修改后顶点内容,并删除历史修改失败顶点;或者,
继续进行修改,并在达到指定次数修改失败后,删除目的节点N3自身缓存的消息,并向源节点返回最终失败消息,以便源节点进行相应修改失败情况记录;或者,
放弃修改,删除目的节点N3自身缓存的消息,并向源节点返回最终失败消息,以便源节点进行相应修改失败情况记录。
7.一种分布式图计算过程中的消息传递装置,其特征在于,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行权利要求1-6任一所述的分布式图计算过程中的消息传递方法。
CN201911314037.0A 2019-12-19 2019-12-19 一种分布式图计算过程中的消息传递方法和装置 Active CN111177486B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911314037.0A CN111177486B (zh) 2019-12-19 2019-12-19 一种分布式图计算过程中的消息传递方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911314037.0A CN111177486B (zh) 2019-12-19 2019-12-19 一种分布式图计算过程中的消息传递方法和装置

Publications (2)

Publication Number Publication Date
CN111177486A CN111177486A (zh) 2020-05-19
CN111177486B true CN111177486B (zh) 2020-09-08

Family

ID=70646304

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911314037.0A Active CN111177486B (zh) 2019-12-19 2019-12-19 一种分布式图计算过程中的消息传递方法和装置

Country Status (1)

Country Link
CN (1) CN111177486B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157981B (zh) * 2021-03-26 2022-12-13 支付宝(杭州)信息技术有限公司 一种图网络关系扩散方法和装置
CN113489790B (zh) * 2021-07-06 2024-02-02 四川蜀天梦图数据科技有限公司 一种优化分布式PageRank算法通信过程的方法及装置
CN114189518A (zh) * 2021-10-11 2022-03-15 支付宝(杭州)信息技术有限公司 应用于计算机集群的通信方法及通信装置
CN114154019B (zh) * 2022-02-10 2022-04-12 奇安信科技集团股份有限公司 一种拓线分析方法、装置、电子设备及存储介质
CN114817262B (zh) * 2022-04-27 2023-03-28 电子科技大学 一种基于分布式图数据库的图遍历算法
CN115495056B (zh) * 2022-11-17 2023-03-07 阿里巴巴(中国)有限公司 分布式图计算系统和方法
CN115793994B (zh) * 2023-02-10 2023-04-14 北京徐工汉云技术有限公司 分布式环境下本地缓存的分组数据处理方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023995A (zh) * 2012-11-29 2013-04-03 中国电力科学研究院 一种基于Hadoop的分布式云存储自动分级数据管理系统
CN109255055A (zh) * 2018-08-06 2019-01-22 四川蜀天梦图数据科技有限公司 一种基于分组关联表的图数据存取方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102075974B (zh) * 2011-01-10 2013-12-18 张俊虎 无线传感器网络高邻接度资源搜索方法
US9521004B2 (en) * 2013-01-28 2016-12-13 Rackspace Us, Inc. Methods and systems of generating a billing feed of a distributed network
CN103136334B (zh) * 2013-01-29 2014-04-16 北京航空航天大学 基于图的遍历的同步数据流系统节点参数快速处理方法
CN103336808B (zh) * 2013-06-25 2017-12-15 中国科学院信息工程研究所 一种基于bsp模型的实时图数据处理系统及方法
CN104504003B (zh) * 2014-12-09 2018-03-13 北京航空航天大学 图数据的搜索方法和装置
CN106712995B (zh) * 2015-11-16 2019-11-29 杭州华为数字技术有限公司 一种多跳邻居节点的获取方法和装置
CN109254909B (zh) * 2018-08-06 2021-11-23 四川蜀天梦图数据科技有限公司 一种测试用大图生成方法和系统
CN109656898B (zh) * 2018-12-14 2021-05-07 中国人民解放军国防科技大学 基于节点度的分布式大规模复杂社团探测方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023995A (zh) * 2012-11-29 2013-04-03 中国电力科学研究院 一种基于Hadoop的分布式云存储自动分级数据管理系统
CN109255055A (zh) * 2018-08-06 2019-01-22 四川蜀天梦图数据科技有限公司 一种基于分组关联表的图数据存取方法和装置

Also Published As

Publication number Publication date
CN111177486A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
CN111177486B (zh) 一种分布式图计算过程中的消息传递方法和装置
CN109255055B (zh) 一种基于分组关联表的图数据存取方法和装置
CN108984639B (zh) 服务器集群的数据处理方法和装置
US20170116271A1 (en) Static data caching for queries with a clause that requires multiple iterations to execute
CN103246749B (zh) 面向分布式计算的矩阵数据库系统及其查询方法
US20120284228A1 (en) User-Defined Parallelization in Transactional Replication of In-Memory Database
CN106155775B (zh) 消息处理方法、设备及系统
US20230362251A1 (en) Method and apparatus for managing iot device, and server and storage medium thereof
EP4030724A1 (en) Method, apparatus and system for managing mirror image file, and computer device and storage medium
JP6243045B2 (ja) グラフデータクエリ方法および装置
CN105843933B (zh) 分布式内存列式数据库的索引建立方法
JP6928677B2 (ja) オンライン分析処理を行うためのデータ処理方法及び装置
CN109766337B (zh) 树形结构数据的存储方法、电子设备、存储介质及系统
JP2014194772A (ja) グラフデータベースクエリ処理方法及び装置
CN103795811A (zh) 一种基于元数据保存存储信息及统计管理数据的方法
CN106326239A (zh) 分布式文件系统及其文件元信息管理方法
CN105677761A (zh) 一种数据切分的方法及系统
CN114077680A (zh) 一种图数据的存储方法、系统及装置
CN105429879A (zh) 流表项查询方法、设备及系统
CN107870949A (zh) 数据分析作业依赖关系生成方法和系统
CN111914007A (zh) 一种hadoop集群运行ETL流程的方法及装置
US11386103B2 (en) Query enhancement system and method for constructing elastic field based on time delay
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2024021808A1 (zh) 数据查询请求的处理方法、装置、设备及存储介质
US11061719B2 (en) High availability cluster management of computing nodes

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220902

Address after: 6th Floor, Tianfu Yingcai Center, Building B7, No. 99, Hupan Road West Road, Xinglong Street, Tianfu New District, Chengdu, Sichuan 610200

Patentee after: SICHUAN SHUTIAN MENGTU DATA TECHNOLOGY Co.,Ltd.

Patentee after: HUAZHONG University OF SCIENCE AND TECHNOLOGY

Address before: 6 / F, Tianfu talent center, building B7, No. 99, Hupan Road West, Xinglong Street, Tianfu new area, Chengdu, Sichuan 610000

Patentee before: SICHUAN SHUTIAN MENGTU DATA TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230731

Address after: 6th Floor, Tianfu Talent Center, Building B7, No. 99 Hupan Road West, Xinglong Street, Tianfu New District, Chengdu, Sichuan, 610095

Patentee after: SICHUAN SHUTIAN MENGTU DATA TECHNOLOGY Co.,Ltd.

Patentee after: Wuhan dream database Co.,Ltd.

Address before: 6th Floor, Tianfu Yingcai Center, Building B7, No. 99, Hupan Road West Road, Xinglong Street, Tianfu New District, Chengdu, Sichuan 610200

Patentee before: SICHUAN SHUTIAN MENGTU DATA TECHNOLOGY Co.,Ltd.

Patentee before: HUAZHONG University OF SCIENCE AND TECHNOLOGY