CN105677755B - 一种处理图数据的方法及装置 - Google Patents
一种处理图数据的方法及装置 Download PDFInfo
- Publication number
- CN105677755B CN105677755B CN201511020272.9A CN201511020272A CN105677755B CN 105677755 B CN105677755 B CN 105677755B CN 201511020272 A CN201511020272 A CN 201511020272A CN 105677755 B CN105677755 B CN 105677755B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- data block
- edges
- target
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2219—Large Object storage; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种处理图数据的方法及装置,涉及数据挖掘技术领域,用于提高图计算的效率。该方法包括:获取图数据中的边数据和对图数据进行图计算的计算算法;根据计算算法,确定对图数据中的边数据进行分割的分割算法,分割算法为根据构成边数据的节点对图数据中的边数据进行分割的算法,构成边数据的节点为构成边数据的源节点和/或目的节点;根据分割算法和本地内存的内存容量,将图数据中的边数据分割为N个初始边数据块,N个初始边数据块中的每个初始边数据块的数据量均小于内存容量,N≥1,N为整数;将N个初始边数据块中的每个初始边数据块中的边数据按照构成边数据的节点进行排列,得到N个目标边数据块。
Description
技术领域
本发明涉及数据挖掘技术领域,尤其涉及一种处理图数据的方法及装置。
背景技术
在大数据挖掘时代,图不仅可以直接描述计算机科学、化学以及生物信息学等领域的许多现实应用,例如社交网络、web(网页)图、化学物质以及生物结构等,同时也可以用来描述各种数据挖掘算法,例如矩阵分解或最短路径等等。其中,图包括多个节点以及连接各个节点的边,图数据包括各个节点的节点数据以及连接各个节点的边的边数据,一条边的边数据包括构成该条边的源节点、目的节点和该条边的权值。在单机图计算处理平台(即采用单个计算机进行图计算的处理平台)中,由于单个计算机的本地内存的内存容量有限,当需要计算的图数据的数据量超过该内存容量时,需要对图数据中的边数据进行处理,得到多个边数据块,一个边数据块包括一个或多个边数据。
目前,在对图数据中的边数据进行处理时,采用固定的方法,使得计算机在对一个边数据块中的节点的节点数据进行计算时,若无法直接获取与该节点相关的边数据,则需要对该边数据块中的边数据的排列顺序进行调整才可以得到需要的边数据。例如,在GraphChi(一种单机图计算处理平台)中,由于在图计算时是以目的节点为中心的计算模式,因此,计算机按照目的节点的ID(标识)由小至大的顺序将图数据中的边数据分割为多个边数据块(在GraphChi中称为Shard),对应同一目的节点的全部边数据被分割在一个边数据块中,为了顺序更新节点数据,每个边数据块中的边数据又按照边数据对应的源节点的ID由小至大顺序排列。该情况下,在计算机将一个边数据块读入本地内存之后,需要获取该边数据块中的多个目的节点的全部入边数据(即源节点为其他节点,目的节点为该节点的边数据)和全部出边数据(即源节点为该节点,目的节点为其他节点的边数据),以便依次对该边数据块中的多个目的节点的节点数据进行计算,为了快速的获取目的节点的全部入边数据,需要将该边数据块中的边数据按照目的节点的ID由小至大的顺序重新排序,而重新排序的过程耗时较长,使得图计算的效率较低。
发明内容
本发明的实施例提供一种处理图数据的方法及装置,用于提高图计算的效率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种处理图数据的方法,包括:
获取图数据中的边数据和对所述图数据进行图计算的计算算法;
根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
该可选的方法,由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该目的节点的入边数据,提高图计算的效率。
进一步的,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列之后,所述方法还包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
该可选的方法,由于对应同一源节点的全部边数据在一个目标边数据块中、且对应该源节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该源节点的出边数据,提高图计算的效率。
进一步的,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列之后,所述方法还包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。
第二方面,提供一种处理图数据的装置,包括:
获取单元,用于获取图数据中的边数据和对所述图数据进行图计算的计算算法;
确定单元,用于根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
分割单元,用于根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
排列单元,用于将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
所述排列单元具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
该可选的方法,由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该目的节点的入边数据,提高图计算的效率。
进一步的,所述排列单元还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
所述排列单元具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
该可选的方法,由于对应同一源节点的全部边数据在一个目标边数据块中、且对应该源节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该源节点的出边数据,提高图计算的效率。
进一步的,所述排列单元还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。
第三方面,提供一种处理图数据的装置,包括:存储器和处理器,所述存储器中用于存储一组代码,所述处理器根据该代码执行以下动作:
获取图数据中的边数据和对所述图数据进行图计算的计算算法;
根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
所述处理器具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
该可选的方法,由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该目的节点的入边数据,提高图计算的效率。
进一步的,所述处理器还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
所述处理器具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
该可选的方法,由于对应同一源节点的全部边数据在一个目标边数据块中、且对应该源节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该源节点的出边数据,提高图计算的效率。
进一步的,所述处理器还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。
本发明实施例提供的方法及装置,在获取图数据中的边数据和对该图数据进行图计算的计算算法之后,根据计算算法和本地内存的内存容量对图数据中的边数据进行分割得到N个初始边数据块,并对N个初始边数据块按照构成边数据的节点进行排列,得到N个目标边数据块,目标边数据块能够适应计算算法,使得计算机采用计算算法在对一个目标边数据块中的节点的节点数据进行计算的过程中,不需要花费过多的时间在数据的重新整理(例如,对目标边数据块中的边数据的重新排序)上,与现有技术相比,能够提高图计算的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种图的组成示意图;
图2为现有技术中的多个边数据块的示意图;
图3为本发明实施例提供的一种处理图数据的方法的流程图;
图4为本发明实施例提供的多个边数据块的示意图;
图5为本发明实施例提供的多个边数据块的示意图;
图6为本发明实施例提供的一种处理图数据的装置的结构示意图;
图7为本发明实施例提供的又一种处理图数据的装置的结构示意图;
图8为本发明实施例提供的又一种处理图数据的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中字符“/”,一般表示前后关联对象是一种“或”的关系。本文中的“多个”是指两个或者两个以上。
首先,在对本发明实施例的技术方案进行详细描述之前,需要说明的是,本发明实施例中的图包括多个节点以及连接各个节点的边,相应的,图数据包括各个节点的节点数据以及连接各个节点的边的边数据,一条边的边数据包括构成该条边的源节点、目的节点以及该条边的权值,对于一个节点来说,本身并没有源节点或者目的节点之分,但是,当一个节点与边联系起来时,为了表示边的方向,节点就有了源节点和目的节点之分,显然的,一个节点是源节点还是目的节点取决于边的方向。示例性的,图1示出了一种图,针对该图的图数据包括节点1、节点2和节点3的节点数据以及边1、边2和边3的边数据,其中,节点1为边1的源节点和边3的目的节点,节点2为边1和边2的目的节点,节点3为边2和边3的源节点。
为了更加清楚的对本发明实施例提供的方法进行描述,以GraphChi为例,将现有技术中的对图数据中的边数据进行处理的方法进行说明。在GraphChi中,计算机按照目的节点的ID由小至大的顺序将图数据中的边数据分为多个边数据块,对应同一目的节点的全部边数据被分割在一个边数据块中,一个边数据块中包含至少一个边数据,一个边数据块中包含对应一个或多个目的节点的全部边数据,每个边数据块中的边数据又按照边数据对应的源节点的ID由小至大顺序排列。
示例性的,如图2所示,图2为对图数据中的边数据进行处理之后得到的3个边数据块,每个边数据块中src代表源节点,dst代表目的节点,Value代表连接源节点与目的节点的边的权值,例如,边数据块1中的value一列的第一个值0.273代表源节点为1,目的节点为2的边的权值,其他值的含义类似。边数据块1包含对应目的节点1和目的节点2的全部边数据,边数据块2包含对应目的节点3和目的节点4的全部边数据,边数据块3包含对应目的节点5和目的节点6的全部边数据,每个边数据块中的边数据又以边数据对应的源节点的ID由小至大顺序排列(如图2所示,每个边数据块中的src一列的数字是递增的)。
本发明实施例提供一种处理图数据的方法,如图3所示,包括:
301、获取图数据中的边数据和对所述图数据进行图计算的计算算法。
本发明实施例的执行主体可以为计算机,本发明实施例提供的方法具体可以用于在单机图计算处理平台中进行单机图计算,或者在分布式大数据处理平台中进行分布式图计算。
具体的,计算机可以接收其他计算机或设备发送的图数据,也可以获取用户手动存储的图数据,还可以通过其他方式获取图数据,在获取到图数据之后,根据图数据获取图数据中的边数据。
示例性的,对图数据进行图计算的计算算法可以为广度优先搜索(Breadth FirstSearch,简称BFS)、单源最短路径(Single-Source Shortest Paths,简称SSP)、PageRank(网页排名)、交替最小二乘法(Alternating Least Squares,简称ALS)以及TriangleCounting(数三角形)等算法。
302、根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点。
其中,不同的计算算法可以对应不同的分割算法,当采用某一计算算法在对图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,则分割算法为根据构成边数据的目的节点对图数据中的边数据进行分割的算法;当该某一计算算法在对图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,则分割算法为根据构成边数据的源节点对图数据中的边数据进行分割的算法;当该某一计算算法在对图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的出边数据也需要使用该节点的入边数据,则分割算法为根据构成边数据的源节点和目的节点对图数据中的边数据进行分割的算法。
其中,一个节点的入边数据是指源节点为其他节点,目的节点为该节点的边数据,一个节点的出边数据是指源节点为该节点,目的节点为其他节点的边数据。例如,图2中的边数据块1中的第一个边数据为节点1的出边数据,节点2的入边数据。
示例性的,当计算算法为BFS算法或SSP算法时,分割算法为根据构成边数据的源节点对图数据中的边数据进行分割的算法,当计算算法为PageRank算法或ALS算法时,分割算法为根据构成边数据的目的节点对图数据中的边数据进行分割的算法,当计算算法为TriangleCounting算法时,分割算法为根据构成边数据的源节点和目的节点对图数据中的边数据进行分割的算法。
303、根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数。
需要说明的是,在使用单个计算机进行图计算时,由于单个计算机的本地内存的内存容量有限,当需要计算的图数据的数据量超过该内存容量时,需要将图数据中的边数据进行分割得到多个初始边数据块,每个初始边数据块的数据量都小于该单个计算机的本地内存的内存容量。
304、将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
在步骤304之后,该方法还包括:将所述N个目标边数据块存储到持久性存储介质中。
本发明实施例中提到的本地内存指本发明实施例提供的方法的执行主体的内存,本发明实施例中提到的持久性存储介质指本发明实施例提供的方法的执行主体的持久性存储介质,持久性存储介质可以为磁盘或硬盘等。
本发明实施例提供的方法,在获取图数据中的边数据和对该图数据进行图计算的计算算法之后,根据计算算法和本地内存的内存容量对图数据中的边数据进行分割得到N个初始边数据块,并对N个初始边数据块按照构成边数据的节点进行排列,得到N个目标边数据块,目标边数据块能够适应计算算法,使得计算机采用计算算法在对一个目标边数据块中的节点的节点数据进行计算的过程中,不需要花费过多的时间在数据的重新整理(例如,对目标边数据块中的边数据的重新排序)上,与现有技术相比,能够提高图计算的效率。
需要说明的是,在一种应用场景下,计算机在对图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,该情况下,本发明实施例提供的方法还可以包括以下多种可选的方法。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
步骤304可以包括:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
该情况下,计算机在将一个目标边数据块读入本地内存后,依次对该目标边数据块中的目的节点的节点数据进行计算。由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,计算机不需要再将目标边数据块中的边数据重新排序,可以节约时间,提高图计算的效率。
示例性的,基于图2所述的示例中的边数据,本发明实施例提供的方法在采用分割算法对图数据中的边数据进行分割时,将图数据中的边数据按照目的节点的ID进行分割,使得对应同一目的节点的全部边数据在一个边数据块中、且每个边数据块的数据量小于本地内存的内存容量,得到3个初始边数据块,再将3个初始边数据块中的每个初始边数据块中的边数据进行排列,使得对应同一目的节点的全部边数据连续排列,得到如图4所示的3个目标边数据块,目标边数据块1包含节点1和节点2的全部入边数据,目标边数据块2包含节点3和节点4的全部入边数据,目标边数据块3包含节点5和节点6的全部入边数据,每个目标边数据块中的同一节点的全部入边数据连续排列。
示例性的,针对图2中的边数据块1,计算机将边数据块1读入本地内存后,需要依次对该边数据块1中的目的节点的节点数据进行计算时,由于对应同一目的节点的全部入边数据并不是连续排列的,因此,计算机需要将该边数据块1中的边数据按照目的节点的ID由小至大的顺序重新排列,再依次对目的节点1和目的节点2的节点数据进行计算。针对图4中的目标边数据块1,计算机将目标边数据块1读入本地内存后,由于对应同一目的节点的全部入边数据连续排列,因此,计算机可以直接按照该目标边数据块1中的目的节点的顺序依次对该目标边数据块1中的目的节点的节点数据进行计算,不需要对该目标边数据块1中的边数据重新进行排列,可以节约时间,提高图计算的效率。
可选的,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列之后,所述方法还包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
进一步的,在同一目标边数据块中,对应不同目的节点的边数据按照所述不同目的节点的ID由小至大顺序排列;当N≥2时,所述N个目标边数据块中的第n个目标边数据块中的任意一个目的节点的ID大于所述N个目标边数据块中的第n-1个目标边数据块中的任意一个目的节点的ID,2≤n≤N,n为整数。
需要说明的是,一个边数据包括的源节点(或目的节点)是指该源节点(或目的节点)的ID,并非指该源节点(或目的节点)的节点数据,图数据在存储时,每个目标边数据块对应一个节点数据的数据表,该数据表中记录有该目标边数据块中的每个节点的节点数据,根据该目标边数据块中的节点的ID可以查找到该数据表中的节点的节点数据,从而可以对该数据表中的节点的节点数据进行读写,计算机在对一个节点的节点数据进行计算之后,需要对全部目标边数据块对应的数据表中的该节点的节点数据进行更新,因此,由于本发明实施例中目标边数据块中的边数据有规律的存储,因此能够使得计算机快速查找到需要更新的数据,进而提高更新数据的效率。
示例性的,如图4所示,在图4所示的目标边数据块中,对应同一目的节点的全部边数据连续排列、对应不同目的节点的边数据按照目的节点的ID由小至大顺序排列、且对应同一目的节点的全部边数据按照源节点的ID由小至大顺序排列。
可选的,所述方法还包括:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算完成;
S11:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S12:依次对所述第M个目标边数据块中的每个目的节点的节点数据进行计算,并根据计算结果更新该目的节点对应的第一目标数据,一个目的节点对应的第一目标数据为该目的节点的节点数据或者该目的节点的节点数据以及与该目的节点相连的全部边的权值;
S13:将M加1;
在对所述N个目标边数据块中的每个目的节点的节点数据均计算完成后,执行下述方法:
判断所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个目的节点对应的第一目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛。
具体的,根据计算算法对节点的节点数据进行计算的方法与现有技术相同,具体可以参见现有技术中根据计算算法对节点的节点数据进行计算的相关描述,此处不再赘述。
需要说明的是,一个目的节点对应的第一目标数据可以根据计算算法确定,若计算算法中不要求更新与该目的节点相连的边的权值,则一个目的节点对应的第一目标数据为该目的节点的节点数据;若计算算法中要求更新与该目的节点相连的边的权值,则一个目的节点对应的第一目标数据为该目的节点的节点数据以及与该目的节点相连的全部边的权值。
其中,对于图数据中的全部节点的节点数据和全部边数据中的每个数据,当该数据的最后一次的计算结果与上一次的计算结果之间的差值小于一个预设阈值时,则认为该数据收敛,否则,该数据不收敛。其中,预设阈值可以根据具体应用场景确定,本发明实施例对此不作具体限定。
示例性的,以图4为例,计算机首先将目标边数据块1读入本地内存,并依次对目标边数据块1中的目的节点(即节点1和节点2)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,然后将目标边数据块2读入本地内存,并依次对目标边数据块2中的目的节点(即节点3和节点4)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,最后将目标边数据块3读入本地内存,并依次对目标边数据块3中的目的节点(即节点5和节点6)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,更新后判断图数据中的全部节点的节点数据是否收敛,若是,计算结束,若否,则继续根据上述方法从目标边数据块1开始计算,直至图数据中的全部节点的节点数据收敛。
在另一种应用场景下,计算机在对图数据中的一个节点进行计算的过程中,不需要使用该节点的入边数据,该情况下,本发明实施例提供的方法还可以包括以下多种可选的方法。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
步骤304可以包括:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
现有技术中,若计算机需要获取一个节点的出边数据时,需要在全部的边数据块中进行获取,本发明实施例提供的方法,由于对应同一源节点的全部边数据在一个目标边数据块中、且对应该源节点的全部边数据在该目标边数据块中连续排列,计算机不需要在其他的目标边数据块中获取一个节点的出边数据,因此,能够提高图计算的效率。
示例性的,基于图2所述的示例中的边数据,本发明实施例提供的方法在采用分割算法对图数据中的边数据进行分割时,将图数据中的边数据按照源节点的ID进行分割,使得对应同一源节点的全部边数据在一个边数据块中、且每个边数据块的数据量小于本地内存的内存容量,得到3个初始边数据块,再将3个初始边数据块中的每个初始边数据块中的边数据进行排列,使得对应同一源节点的全部边数据连续排列,得到如图5所示的3个目标边数据块,目标边数据块1包含节点1和节点2的全部出边数据,目标边数据块2包含节点3和节点4的全部出边数据,目标边数据块3包含节点5和节点6的全部出边数据,每个目标边数据块中的同一节点的全部出边数据连续排列。
基于图2所述的示例,若计算机需要获取节点1的出边数据,则需要在边数据块1和边数据块2中获取。基于图5所述的示例,若计算机需要获取节点1的出边数据,则只需要在目标边数据块1中获取即可,能够提高计算机进行图计算的效率。
可选的,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列之后,所述方法还包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
进一步的,在同一目标边数据块中,对应不同源节点的边数据按照所述不同源节点的ID由小至大顺序排列;当N≥2时,所述N个目标边数据块中的第n个目标边数据块中的任意一个源节点的ID大于所述N个目标边数据块中的第n-1个目标边数据块中的任意一个源节点的ID,2≤n≤N,n为整数。
需要说明的是,计算机在对一个节点的节点数据进行计算之后,需要对该节点的节点数据进行更新,因此,由于本发明实施例中目标边数据块中的边数据有规律的排列,因此能够使得计算机快速查找到需更新的数据,进而提高更新数据的效率。
示例性的,如图5所示,在图5所示的目标边数据块中,对应同一源节点的全部边数据连续排列、对应不同源节点的边数据按照源节点的ID由小至大顺序排列,且对应同一源节点的全部边数据按照目的节点的ID由小至大顺序排列。
可选的,所述方法还包括:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点的节点数据均计算完成;
S21:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S22:依次对所述第M个目标边数据块中的每个源节点的节点数据进行计算,并根据计算结果更新该源节点对应的第二目标数据,一个源节点对应的第二目标数据为该源节点的节点数据或者该源节点的节点数据以及与该源节点相连的全部边的权值;
S23:将M加1;
在对所述N个目标边数据块中的每个源节点的节点数据均计算完成后,执行下述方法:
判断所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个源节点对应的第二目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛。
需要说明的是,一个源节点对应的第二目标数据可以根据计算算法确定,若计算算法中不要求更新与该源节点相连的边的权值,则一个源节点对应的第一目标数据为该源节点的节点数据;若计算算法中要求更新与该源节点相连的边的权值,则一个源节点对应的第一目标数据为该源节点的节点数据以及与该源节点相连的全部边的权值。
示例性的,以图5为例,计算机首先将目标边数据块1读入本地内存,并依次对目标边数据块1中的源节点(即节点1和节点2)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,然后将目标边数据块2读入本地内存,并依次对目标边数据块2中的源节点(即节点3和节点4)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,最后将目标边数据块3读入本地内存,并依次对目标边数据块3中的源节点(即节点5和节点6)的节点数据进行计算,每计算完一个节点的节点数据,对该节点的节点数据进行更新,更新后判断图数据中的全部节点的节点数据是否收敛,若是,计算结束,若否,则继续根据上述方法从目标边数据块1开始计算,直至图数据中的全部节点的节点数据收敛。
在另一种应用场景下,可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据的源节点和目的节点。对图数据中的边数据进行处理的方法可以参见基于图2所述的方法。
可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。
可选的,上述方法还可以包括:在将一个目标边数据块读入所述本地内存后,实时监测所述本地内存的空闲容量是否大于该目标边数据块的下一个目标边数据块的数据量;若是,将所述下一个目标边数据块读入所述本地内存中。
具体的,可以通过磁盘I/O线程实时监测本地内存的空闲容量,该可选的方法,可以使得计算机系统在计算一个目标边数据块中的节点的节点数据的同时,读入下一个目标边数据块,而不用在计算完一个目标边数据块中的节点的节点数据后,再读入下一个目标边数据块,可以充分利用时间,提高图计算的效率。
本发明实施例还提供一种处理图数据的装置60,用于执行上述方法,如图6所示,装置60包括:
获取单元601,用于获取图数据中的边数据和对所述图数据进行图计算的计算算法;
确定单元602,用于根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
分割单元603,用于根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
排列单元604,用于将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
所述排列单元604具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
进一步的,所述排列单元604还用于:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
所述排列单元604具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
进一步的,所述排列单元604还用于:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,如图7所示,所述装置60还包括计算单元605,用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算完成;
S11:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S12:依次对所述第M个目标边数据块中的每个目的节点的节点数据进行计算,并根据计算结果更新该目的节点对应的第一目标数据,一个目的节点对应的第一目标数据为该目的节点的节点数据或者该目的节点的节点数据以及与该目的节点相连的全部边的权值;
S13:将M加1;
在对所述N个目标边数据块中的每个目的节点的节点数据均计算完成后,执行下述装置:
判断所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个目的节点对应的第一目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛。
可选的,如图7所示,所述装置60还包括计算单元605,用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点的节点数据均计算完成;
S21:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S22:依次对所述第M个目标边数据块中的每个源节点的节点数据进行计算,并根据计算结果更新该源节点对应的第二目标数据,一个源节点对应的第二目标数据为该源节点的节点数据或者该源节点的节点数据以及与该源节点相连的全部边的权值;
S23:将M加1;
在对所述N个目标边数据块中的每个源节点的节点数据均计算完成后,执行下述装置:
判断所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个源节点对应的第二目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛。
可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据的源节点和目的节点。
本发明实施例提供的装置,在获取图数据中的边数据和对该图数据进行图计算的计算算法之后,根据计算算法和本地内存的内存容量对图数据中的边数据进行分割得到N个初始边数据块,并对N个初始边数据块按照构成边数据的节点进行排列,得到N个目标边数据块,目标边数据块能够适应计算算法,使得在采用计算算法在对一个目标边数据块中的节点的节点数据进行计算的过程中,不需要花费过多的时间在数据的重新整理(例如,对目标边数据块中的边数据的重新排序)上,与现有技术相比,能够提高图计算的效率。
在硬件实现上,装置60中的各个单元可以以硬件形式内嵌于或独立于装置60的处理器中,也可以以软件形式存储于装置60的存储器中,以便于处理器调用执行以上各个单元对应的操作,该处理器可以为中央处理器(Central Processing Unit,简称CPU)、特定集成电路(Application Specific Integrated Circuit,简称ASIC)或者是被配置成实施本发明实施例的一个或多个集成电路。
本发明实施例还提供一种处理图数据的装置80,用于执行上述方法,如图8所示,装置80包括:存储器801和处理器802,所述存储器801中用于存储一组代码,所述处理器802根据该代码执行以下动作:
获取图数据中的边数据和对所述图数据进行图计算的计算算法;
根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
所述处理器802具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
进一步的,所述处理器802还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
所述处理器802具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
进一步的,所述处理器802还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
可选的,所述处理器802还用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算完成;
S11:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S12:依次对所述第M个目标边数据块中的每个目的节点的节点数据进行计算,并根据计算结果更新该目的节点对应的第一目标数据,一个目的节点对应的第一目标数据为该目的节点的节点数据或者该目的节点的节点数据以及与该目的节点相连的全部边的权值;
S13:将M加1;
在对所述N个目标边数据块中的每个目的节点的节点数据均计算完成后,执行下述装置:
判断所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个目的节点对应的第一目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛。
可选的,所述处理器802还用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点的节点数据均计算完成;
S21:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S22:依次对所述第M个目标边数据块中的每个源节点的节点数据进行计算,并根据计算结果更新该源节点对应的第二目标数据,一个源节点对应的第二目标数据为该源节点的节点数据或者该源节点的节点数据以及与该源节点相连的全部边的权值;
S23:将M加1;
在对所述N个目标边数据块中的每个源节点的节点数据均计算完成后,执行下述装置:
判断所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个源节点对应的第二目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛。
可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据的源节点和目的节点。
本发明实施例提供的装置,在获取图数据中的边数据和对该图数据进行图计算的计算算法之后,根据计算算法和本地内存的内存容量对图数据中的边数据进行分割得到N个初始边数据块,并对N个初始边数据块按照构成边数据的节点进行排列,得到N个目标边数据块,目标边数据块能够适应计算算法,使得在采用计算算法在对一个目标边数据块中的节点的节点数据进行计算的过程中,不需要花费过多的时间在数据的重新整理(例如,对目标边数据块中的边数据的重新排序)上,与现有技术相比,能够提高图计算的效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (27)
1.一种处理图数据的方法,其特征在于,包括:
获取图数据中的边数据和对所述图数据进行图计算的计算算法;
根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
2.根据权利要求1所述的方法,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
3.根据权利要求2所述的方法,其特征在于,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列之后,所述方法还包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
4.根据权利要求1所述的方法,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
5.根据权利要求4所述的方法,其特征在于,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列之后,所述方法还包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
6.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算完成;
S11:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S12:依次对所述第M个目标边数据块中的每个目的节点的节点数据进行计算,并根据计算结果更新该目的节点对应的第一目标数据,一个目的节点对应的第一目标数据为该目的节点的节点数据或者该目的节点的节点数据以及与该目的节点相连的全部边的权值;
S13:将M加1;
在对所述N个目标边数据块中的每个目的节点的节点数据均计算完成后,执行下述方法:
判断所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个目的节点对应的第一目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛。
7.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点的节点数据均计算完成;
S21:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S22:依次对所述第M个目标边数据块中的每个源节点的节点数据进行计算,并根据计算结果更新该源节点对应的第二目标数据,一个源节点对应的第二目标数据为该源节点的节点数据或者该源节点的节点数据以及与该源节点相连的全部边的权值;
S23:将M加1;
在对所述N个目标边数据块中的每个源节点的节点数据均计算完成后,执行下述方法:
判断所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个源节点对应的第二目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
9.根据权利要求1所述的方法,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据的源节点和目的节点。
10.一种处理图数据的装置,其特征在于,包括:
获取单元,用于获取图数据中的边数据和对所述图数据进行图计算的计算算法;
确定单元,用于根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
分割单元,用于根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
排列单元,用于将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
11.根据权利要求10所述的装置,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
所述排列单元具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
12.根据权利要求11所述的装置,其特征在于,所述排列单元还用于:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
13.根据权利要求10所述的装置,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
所述排列单元具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
14.根据权利要求13所述的装置,其特征在于,所述排列单元还用于:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
15.根据权利要求11或12所述的装置,其特征在于,所述装置还包括计算单元,用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算完成;
S11:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S12:依次对所述第M个目标边数据块中的每个目的节点的节点数据进行计算,并根据计算结果更新该目的节点对应的第一目标数据,一个目的节点对应的第一目标数据为该目的节点的节点数据或者该目的节点的节点数据以及与该目的节点相连的全部边的权值;
S13:将M加1;
在对所述N个目标边数据块中的每个目的节点的节点数据均计算完成后,执行下述装置:
判断所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个目的节点对应的第一目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛。
16.根据权利要求13或14所述的装置,其特征在于,所述装置还包括计算单元,用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点的节点数据均计算完成;
S21:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S22:依次对所述第M个目标边数据块中的每个源节点的节点数据进行计算,并根据计算结果更新该源节点对应的第二目标数据,一个源节点对应的第二目标数据为该源节点的节点数据或者该源节点的节点数据以及与该源节点相连的全部边的权值;
S23:将M加1;
在对所述N个目标边数据块中的每个源节点的节点数据均计算完成后,执行下述装置:
判断所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个源节点对应的第二目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛。
17.根据权利要求10-16任一项所述的装置,其特征在于,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
18.根据权利要求10所述的装置,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据的源节点和目的节点。
19.一种处理图数据的装置,其特征在于,包括:存储器和处理器,所述存储器中用于存储一组代码,所述处理器根据该代码执行以下动作:
获取图数据中的边数据和对所述图数据进行图计算的计算算法;
根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
20.根据权利要求19所述的装置,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
所述处理器具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
21.根据权利要求20所述的装置,其特征在于,所述处理器还用于:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
22.根据权利要求19所述的装置,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
所述处理器具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
23.根据权利要求22所述的装置,其特征在于,所述处理器还用于:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
24.根据权利要求20或21所述的装置,其特征在于,所述处理器还用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算完成;
S11:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S12:依次对所述第M个目标边数据块中的每个目的节点的节点数据进行计算,并根据计算结果更新该目的节点对应的第一目标数据,一个目的节点对应的第一目标数据为该目的节点的节点数据或者该目的节点的节点数据以及与该目的节点相连的全部边的权值;
S13:将M加1;
在对所述N个目标边数据块中的每个目的节点的节点数据均计算完成后,执行下述装置:
判断所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个目的节点对应的第一目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据均收敛。
25.根据权利要求22或23所述的装置,其特征在于,所述处理器还用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点的节点数据均计算完成;
S21:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内存,1≤M≤N,M为整数;
S22:依次对所述第M个目标边数据块中的每个源节点的节点数据进行计算,并根据计算结果更新该源节点对应的第二目标数据,一个源节点对应的第二目标数据为该源节点的节点数据或者该源节点的节点数据以及与该源节点相连的全部边的权值;
S23:将M加1;
在对所述N个目标边数据块中的每个源节点的节点数据均计算完成后,执行下述装置:
判断所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据是否均收敛;
若所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个源节点对应的第二目标数据中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均收敛。
26.根据权利要求19-25任一项所述的装置,其特征在于,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
27.根据权利要求19所述的装置,其特征在于,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据的源节点和目的节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511020272.9A CN105677755B (zh) | 2015-12-30 | 2015-12-30 | 一种处理图数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511020272.9A CN105677755B (zh) | 2015-12-30 | 2015-12-30 | 一种处理图数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105677755A CN105677755A (zh) | 2016-06-15 |
CN105677755B true CN105677755B (zh) | 2019-05-24 |
Family
ID=56298039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511020272.9A Expired - Fee Related CN105677755B (zh) | 2015-12-30 | 2015-12-30 | 一种处理图数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677755B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385350A (zh) | 2016-11-30 | 2022-04-22 | 华为技术有限公司 | 一种图数据处理的方法、装置及系统 |
CN106815080B (zh) * | 2017-01-09 | 2020-01-14 | 北京航空航天大学 | 分布式图数据处理方法和装置 |
CN107943918B (zh) * | 2017-11-20 | 2021-09-07 | 合肥亚慕信息科技有限公司 | 一种基于层次化大规模图数据的运算系统 |
CN111177474B (zh) * | 2019-06-27 | 2022-12-02 | 腾讯科技(深圳)有限公司 | 一种图数据处理的方法及相关装置 |
CN111274455A (zh) * | 2020-01-15 | 2020-06-12 | 北京燧昀科技有限公司 | 图数据处理方法、装置、电子设备及计算机可读介质 |
CN112115072B (zh) * | 2020-09-03 | 2022-06-17 | 清华大学 | 时序图的处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631878A (zh) * | 2013-11-08 | 2014-03-12 | 中国科学院深圳先进技术研究院 | 一种大规模图结构数据处理方法、装置和系统 |
CN103970879A (zh) * | 2014-05-16 | 2014-08-06 | 中国人民解放军国防科学技术大学 | 一种调整数据块存储位置的方法及系统 |
CN104281664A (zh) * | 2014-09-24 | 2015-01-14 | 北京航空航天大学 | 分布式图计算系统数据切分方法和系统 |
-
2015
- 2015-12-30 CN CN201511020272.9A patent/CN105677755B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631878A (zh) * | 2013-11-08 | 2014-03-12 | 中国科学院深圳先进技术研究院 | 一种大规模图结构数据处理方法、装置和系统 |
CN103970879A (zh) * | 2014-05-16 | 2014-08-06 | 中国人民解放军国防科学技术大学 | 一种调整数据块存储位置的方法及系统 |
CN104281664A (zh) * | 2014-09-24 | 2015-01-14 | 北京航空航天大学 | 分布式图计算系统数据切分方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105677755A (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677755B (zh) | 一种处理图数据的方法及装置 | |
CN108829610B (zh) | 一种神经网络前向计算过程中的内存管理方法及设备 | |
CN105550225B (zh) | 索引构建方法、查询方法及装置 | |
US10068033B2 (en) | Graph data query method and apparatus | |
CN103345508A (zh) | 一种适用于社会网络图的数据存储方法及系统 | |
US20150170316A1 (en) | Subgraph-based distributed graph processing | |
CN103631933A (zh) | 一种面向分布式去重系统的数据路由方法 | |
CN109408590A (zh) | 分布式数据库的扩容方法、装置、设备及存储介质 | |
CN104268243B (zh) | 一种位置数据处理方法及装置 | |
CN111290699A (zh) | 数据迁移方法、装置及系统 | |
US20160110474A1 (en) | Method and apparatus for distributing graph data in distributed computing environment | |
CN110287179A (zh) | 一种数据缺失属性值的填充设备、装置及方法 | |
CN103970879A (zh) | 一种调整数据块存储位置的方法及系统 | |
RU2010138732A (ru) | Система обновления карты и программа обновления карты с использованием динамической кэш-памяти | |
CN106407005B (zh) | 一种基于多尺度耦合的并行进程合并方法及系统 | |
CN108595149A (zh) | 可重构乘加运算装置 | |
CN106844533B (zh) | 一种数据分组聚集方法及装置 | |
CN104794237B (zh) | 网页信息处理方法及装置 | |
CN104598600B (zh) | 一种基于分布式内存的并行数字地形分析优化方法 | |
CN106557430B (zh) | 一种缓存数据刷盘方法及装置 | |
CN111737347B (zh) | 在Spark平台顺序切分数据的方法及装置 | |
CN108563489A (zh) | 一种数据中心综合管理系统的虚拟机迁移方法及系统 | |
CN114035906A (zh) | 虚拟机迁移方法、装置、电子设备及存储介质 | |
CN106294503B (zh) | 数据的动态存储方法、装置及计算设备 | |
CN106681797B (zh) | 一种虚拟机应用迁移方法、装置及一种服务器 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190524 Termination date: 20201230 |