基于社区结构的图数据分布式存储方法及装置与流程

文档序号:16133682发布日期:2018-12-01 00:38阅读:188来源:国知局

本发明实施例涉及计算机领域,具体涉及一种基于社区结构的图数据分布式存储方法及装置。

背景技术

随着图数据广泛应用于生产、医疗等多个领域,如何高效存储图数据成为了一个重要的问题。对于大型的图而言,分布式的存储方案既能解决单机存储空间不足的瓶颈,也能通过多台机器同时计算提升查询和计算的效率。

现有的分布式的图数据管理系统,如trinity、imgraph等,通过将图数据进行划分后存储到不同的机器上,来实现对大量图数据的存储。同时,在进行查询计算时可以并行地使用多台机器进行处理,能提高图上相关计算的性能。

trinity支持有向属性图的存储,它使用对结点和边的编号进行哈希的方式对数据进行划分,根据划分结果将图数据存储到不同的机器上。每个机器上包含若干trunk结构,结点和边存储到哪个trunk中也是通过哈希的方式决定的。每个trunk使用一张记录“编号-位置-大小”信息的表记录存储在此trunk中的数据的位置和大小。

imgraph是存储有向属性图的分布式的内存图数据库。它存储的基本结构是细胞,每个细胞包含有一个标识符,每个结点及每条边各自对应一个细胞。对数据进行划分时,首先计算细胞标识符的哈希值,随后根据哈希值决定将该细胞存储到哪台机器中。

trinity和imgraph都使用哈希的方式将图数据进行划分,没有考虑图的结构、结点间的关系等因素,联系紧密的结点的相关信息可能被分配到不同机器进行存储,导致进行一些查询和计算时(如结点二跳邻居查询),发生大量的机器间请求数据的情况,影响查询和计算的性能。



技术实现要素:

针对现有技术存在的不足和缺陷,本发明实施例提供一种基于社区结构的图数据分布式存储方法及装置。

一方面,本发明实施例提出一种基于社区结构的图数据分布式存储方法,包括:

s1、获取待存储的图数据中包含的结点和社区间的从属关系及结点间的边信息,并基于所述结点和社区间的从属关系及结点间的边信息计算各个社区间的关联度;

s2、对于每个社区,根据该社区与其它社区的关联度,按关联度的大小对所述其它社区进行排序得到该社区的关联社区列表;

s3、基于所述关联社区列表将所述图数据分配给至少一台机器,根据分配结果将所述图数据存储在对应的机器中。

另一方面,本发明实施例提出一种基于社区结构的图数据分布式存储装置,包括:

计算单元,用于获取待存储的图数据中包含的结点和社区间的从属关系及结点间的边信息,并基于所述结点和社区间的从属关系及结点间的边信息计算各个社区间的关联度;

排序单元,用于对于每个社区,根据该社区与其它社区的关联度,按关联度的大小对所述其它社区进行排序得到该社区的关联社区列表;

存储单元,用于基于所述关联社区列表将所述图数据分配给至少一台机器,根据分配结果将所述图数据存储在对应的机器中。

第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器、总线及存储在存储器上并可在处理器上运行的计算机程序;

其中,所述处理器,存储器通过所述总线完成相互间的通信;

所述处理器执行所述计算机程序时实现上述方法。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述方法。

本发明实施例提供的基于社区结构的图数据分布式存储方法及装置,结合了图的结构信息,基于社区结构进行图数据在多台机器间的分配,相较于现有的使用哈希对数据进行分割的方式,本发明实施例使得联系紧密的结点的相关信息尽可能地存储在相同机器上,减少了后续查询和计算过程中机器间的信息请求数量。

附图说明

图1为本发明基于社区结构的图数据分布式存储方法一实施例的流程示意图;

图2为本发明基于社区结构的图数据分布式存储方法另一实施例的流程示意图;

图3为本发明基于社区结构的图数据分布式存储方法又一实施例的部分流程示意图;

图4为本发明基于社区结构的图数据分布式存储装置一实施例的结构示意图;

图5为本发明实施例提供的一种电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。

参看图1,本实施例公开一种基于社区结构的图数据分布式存储方法,包括:

s1、获取待存储的图数据中包含的结点和社区间的从属关系及结点间的边信息,并基于所述结点和社区间的从属关系及结点间的边信息计算各个社区间的关联度;

本实施例中,可以将社区间的边数作为社区间的关联度。两个社区的社区间的边数指的是两端点分别属于这两个社区的边的数量。比如,如果社区a中只包含结点a,社区b中只包含结点b,结点a与结点b间存在一条边,则认为社区a与社区b间有一条边,因此社区a与社区b的关联度为1;如果结点a与结点b间存在二条边,则认为社区a与社区b间有二条边,因此社区a与社区b的关联度为2。

s2、对于每个社区,根据该社区与其它社区的关联度,按关联度的大小对所述其它社区进行排序得到该社区的关联社区列表;

s3、基于所述关联社区列表将所述图数据分配给至少一台机器,根据分配结果将所述图数据存储在对应的机器中。

本发明实施例提供的基于社区结构的图数据分布式存储方法,结合了图的结构信息,基于社区结构进行图数据在机器间的分配,相较于现有的使用哈希对数据进行分割的方式,本发明实施例使得联系紧密的结点的相关信息(相关信息为图数据,包括结点自身、结点的属性、以结点为起点的边及这些边的属性)尽可能地存储在相同机器上,减少了后续查询和计算过程中机器间的信息请求数量。

图2为本发明基于社区结构的图数据分布式存储方法另一实施例的流程示意图,参看图2,本发明提出的图数据分布式存储方案包括下列步骤:

(1)判断用户输入的图数据文件的类型,若图数据文件包括边信息文件、结点属性文件、边属性文件及记录结点和社区间从属关系的社区信息文件,则可直接从这些文件中获取结点和社区间的从属关系及结点间的边信息;若是边信息文件、结点属性文件及边属性文件,则根据边信息文件对结点进行社区划分(进行社区划分可以采用lpa、hanp等算法),产生对应的记录结点和社区间从属关系的社区信息文件,然后获取结点和社区间的从属关系及结点间的边信息;

(2)根据获得的信息计算社区间的边数作为社区间的关联度;

(3)对于每个社区,根据它与其它社区的关联度,按关联度从大到小的顺序对其它社区进行排序得到关联社区列表;

(4)为了使得各机器存储的数据量接近,使用贪心算法进行图数据的分配;

(5)按照数据分配结果将图数据存储到对应的机器中。

图3为贪心算法的流程图,如图3所示,使用贪心算法进行图数据的分配过程如下:

假设共有n台机器,当前处理的机器编号为i=1。

步骤一:计算每台机器存储边的数量的阈值,将计算得到的阈值存储在t中,具体地,ti表示第i台机器存储边的数量的阈值,t中各阈值的设置可以以使各台机器存储的边的数量除以该机器内存大小得到的值尽可能相同为原则;

步骤二:按照包含的边数从多到少的顺序对所有社区进行排序,按此顺序排列各社区的社区编号得到社区编号列表clist;

步骤三:判断i>n是否成立,若i>n,则结束分配,否则,取出clist中第一个社区编号l,获得其对应的社区c,将c的所有结点的相关信息存储到机器i中,并将l从clist中删除;

步骤四:判断此时机器i中存储的边数量是否大于或等于ti,若大于或等于ti,则i=i+1,执行步骤三;否则,执行步骤五;

步骤五:判断clist中是否还包含有社区编号,若clist中不含任何社区编号,则结束分配,否则,在社区c的关联社区列表中,找到对应社区编号存在于clist中的与社区c的关联度最大的社区c’,将它的所有结点的相关信息存储到机器i中,并将c’的编号从clist中删除,执行步骤四。

本实施例中,使用贪心算法进行图数据在机器间的分配,可以使各机器的负载接近,而且这种方法得到的分配结果在使得每个机器存储的边数量接近该机器存储边数量的阈值的同时,也尽可能地保证了机器内存储的数据间的相关性。

在前述方法实施例的基础上,在每一台机器中可以使用关系型数据库存储分配的图数据中结点和边的属性信息,按照region、block和list三层结构存储分配的图数据中的其它信息,其中,

每个region存储一个社区的至少一个结点和对应的边,每个region由至少一个block组成,每个block由至少一个list组成,list的结构为(nodeid,[end1,end2,...,endn]),nodeid为结点标识,endj包括起点是nodeid对应结点的一条边的终点的结点标识,j∈(1,2,...,n),n为起点是nodeid对应结点的边的数量。

本实施例中,在各机器内,使用一个边文件存储分配给该机器的所有的边信息。list记录的是有相同起点的边,需要说明的是,为了便于进行结点入边查询、结点删除等操作,endj还可以包括上一次存储的以endj对应的结点为终点的边在存储边的文件中的存储位置。block中包含若干的list,region中包含若干的block,其中,一个region中的所有list中存储的边的起点是属于同一个社区的。

结点和边的属性均存储在机器中的关系型数据库中,其余信息在各机器内使用region、block、list三层结构进行存储,使得以属于相同社区的结点为起点的边存储在接近的位置,可以减少查询和计算(如二跳邻居查询)过程中对存储边信息的文件的随机访问用时。

在前述方法实施例的基础上,所述方法还可以包括:

对于每一台机器,使用b+树结构对该台机器存储的所有结点建立索引,其中,b+树上叶子结点包含的信息包括结点的标识、结点所属社区标识和存储了以该结点标识对应的结点为起点的边的block的存储位置。

本实施例中,将分配给一台机器的各社区分别存储到不同的region中,并写入文件中,使用b+树结构对所有结点建立索引。b+树上的叶子结点包含的信息包括结点的标识、结点所属社区标识和存储了以该结点标识对应的结点为起点的边的block的存储位置。当存储了以该结点标识对应的结点为起点的边的block数量过多时,可将这些block的存储位置写入另一个文件中,在当前叶子结点存储对应的指针即可。

参看图4,本实施例公开一种基于社区结构的图数据分布式存储装置,包括:

计算单元1,用于获取待存储的图数据中包含的结点和社区间的从属关系及结点间的边信息,并基于所述结点和社区间的从属关系及结点间的边信息计算各个社区间的关联度;

排序单元2,用于对于每个社区,根据该社区与其它社区的关联度,按关联度的大小对所述其它社区进行排序得到该社区的关联社区列表;

存储单元3,用于基于所述关联社区列表将所述图数据分配给至少一台机器,根据分配结果将所述图数据存储在对应的机器中。

具体地,所述计算单元1获取待存储的图数据中包含的结点和社区间的从属关系及结点间的边信息,并基于所述结点和社区间的从属关系及结点间的边信息计算各个社区间的关联度;对于每个社区,所述排序单元2根据该社区与其它社区的关联度,按关联度的大小对所述其它社区进行排序得到该社区的关联社区列表;所述存储单元3基于所述关联社区列表将所述图数据分配给至少一台机器,根据分配结果将所述图数据存储在对应的机器中。

本发明实施例提供的基于社区结构的图数据分布式存储装置,结合了图的结构信息,基于社区结构进行图数据在机器间的分配,相较于现有的使用哈希对数据进行分割的方式,本发明实施例使得联系紧密的结点的相关信息尽可能地存储在相同机器上,减少了后续查询和计算过程中机器间的信息请求数量。

在前述装置实施例的基础上,所述排序单元,具体用于:

按关联度从大到小的顺序对所述其它社区进行排序得到该社区的关联社区列表;

其中,所述存储单元,可以包括:

排序子单元,用于按照包含的边数从多到少的顺序对所有社区进行排序,按此顺序排列各社区的社区编号得到社区编号列表;

选择子单元,用于判断所述至少一台机器中是否存在未被分配图数据的机器,若所述至少一台机器中存在未被分配图数据的机器,则从所述未被分配图数据的机器中选择一台机器作为当前处理的机器,通知存储子单元工作,否则,则结束分配;

存储子单元,用于将所述社区编号列表中第一个社区编号对应的社区的所有结点的相关信息存储到当前处理的机器中,并将所述第一个社区编号从所述社区编号列表中删除;

判断子单元,用于判断所述当前处理的机器中存储的边的数量是否大于或等于预设的数值,若所述当前处理的机器中存储的边的数量小于所述预设的数值,则判断所述社区编号列表是否为空,若所述社区编号列表不为空,则通知查找子单元工作,或者若所述当前处理的机器中存储的边的数量大于或等于所述预设的数值,则通知所述选择子单元工作,或者若所述社区编号列表为空,则结束分配;

查找子单元,用于寻找目标社区,将所述目标社区的所有结点的相关信息存储到所述当前处理的机器中,并将所述目标社区的编号从所述社区编号列表中删除,其中,所述目标社区为所述第一个社区编号对应的社区的关联社区列表中的社区,且为对应社区编号存在于所述社区编号列表的社区中与所述第一个社区编号对应的社区的关联度最大的社区,通知所述判断子单元工作。

在前述装置实施例的基础上,所述存储单元在每一台机器中可以使用关系型数据库存储分配图数据中的结点和边的属性信息,并按照region、block和list三层结构存储分配的图数据中的其它信息,其中,

每个region存储一个社区的至少一个结点和对应的边,每个region由至少一个block组成,每个block由至少一个list组成,list的结构为(nodeid,[end1,end2,...,endn]),nodeid为结点标识,endj包括起点是nodeid对应结点的一条边的终点的结点标识,j∈(1,2,...,n),n为起点是nodeid对应结点的边的数量。

在前述装置实施例的基础上,所述装置还可以包括:

建立单元,用于对于每一台机器,使用b+树结构对该台机器存储的所有结点建立索引,其中,b+树上的叶子结点包含的信息包括结点的标识、结点所属社区标识和存储了以该结点标识对应的结点为起点的边的block的存储位置。

本实施例的基于社区结构的图数据分布式存储装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图5示出了本发明实施例提供的一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器11、存储器12、总线13及存储在存储器12上并可在处理器11上运行的计算机程序;

其中,所述处理器11,存储器12通过所述总线13完成相互间的通信;

所述处理器11执行所述计算机程序时实现上述各方法实施例所提供的方法,例如包括:获取待存储的图数据中包含的结点和社区间的从属关系及结点间的边信息,并基于所述结点和社区间的从属关系及结点间的边信息计算各个社区间的关联度;对于每个社区,根据该社区与其它社区的关联度,按关联度的大小对所述其它社区进行排序得到该社区的关联社区列表;基于所述关联社区列表将所述图数据分配给至少一台机器,根据分配结果将所述图数据存储在对应的机器中。

本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例所提供的方法,例如包括:获取待存储的图数据中包含的结点和社区间的从属关系及结点间的边信息,并基于所述结点和社区间的从属关系及结点间的边信息计算各个社区间的关联度;对于每个社区,根据该社区与其它社区的关联度,按关联度的大小对所述其它社区进行排序得到该社区的关联社区列表;基于所述关联社区列表将所述图数据分配给至少一台机器,根据分配结果将所述图数据存储在对应的机器中。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1