CN109165325A - 用于切分图数据的方法、装置、设备以及计算机可读存储介质 - Google Patents
用于切分图数据的方法、装置、设备以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109165325A CN109165325A CN201810983673.1A CN201810983673A CN109165325A CN 109165325 A CN109165325 A CN 109165325A CN 201810983673 A CN201810983673 A CN 201810983673A CN 109165325 A CN109165325 A CN 109165325A
- Authority
- CN
- China
- Prior art keywords
- vertex
- equipment
- diagram data
- adjacent
- assigned
- 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.)
- Granted
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
根据本公开的示例实施例,提供了一种用于切分图数据的方法、装置、设备以及计算机可读存储介质。方法包括确定图数据中的顶点的邻接顶点数(即维度),然后根据邻接顶点数来对图数据中的多个顶点进行排序。方法还包括基于多个顶点的排序来对图数据进行切分。本公开的实施例将图数据中的所有顶点按照维度进行排序,并且基于排序来划分这些顶点,能够在切图过程中减少被切开的边的数目。
Description
技术领域
本公开的实施例总体上涉及数据处理领域,并且更具体地涉及用于切分图数据的方法、装置、电子设备以及计算机可读存储介质。
背景技术
图(graph)是一种复杂的非线性数据结构,其由顶点集合以及顶点之间边的集合组成。图中的任意两个顶点之间可能有关联,它们的关联通过边来表示,顶点和边还可以分别具有各种可设置的属性。根据边是否具有方向,图可以分为无向图和有向图,如果图中每条边是无向的,则称该图为无向图,而如果图中每条边是有向的,则称该图为有向图。此外,根据边是否具有权重,图还可以被分为无权图和有权图。
图结构的优势在于描述数据之间的关联,图中的每个顶点可以表示真实或虚拟世界中一个“实体”,每条边可以表示实体与实体之间的“关系”。例如,每个顶点可以表示一个人物,每条边可以表示人物之间的关系(诸如父子关系、同事关系、朋友关系等),这种图也可被称为人物图谱。在大数据时代,随着信息的爆发式增长,图数据达到了海量规模,例如,大型社交网络的人物图谱可以具有上亿个的顶点和边。
发明内容
根据本公开的示例实施例,提供了一种用于切分图数据的方法、装置、电子设备以及计算机可读存储介质。
在本公开的第一方面中,提供了一种用于切分图数据的方法。该方法包括:确定图数据中的顶点的邻接顶点数;根据邻接顶点数,对图数据中的多个顶点进行排序;以及基于多个顶点的排序,对图数据进行切分。
在本公开的第二方面中,提供了一种用于切分图数据的装置。该装置包括:确定模块,被配置为确定图数据中的顶点的邻接顶点数;排序模块,被配置为根据邻接顶点数,对图数据中的多个顶点进行排序;以及切分模块,被配置为基于多个顶点的排序,对图数据进行切分。
在本公开的第三方面中,提供了一种电子设备,其包括一个或多个处理器以及存储装置,其中存储装置用于存储一个或多个程序。一个或多个程序当被一个或多个处理器执行,使得电子设备实现根据本公开的实施例的方法或过程。
在本公开的第四方面中,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的实施例的方法或过程。
应当理解,本发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键特征或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的描述而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本公开的实施例的用于切分图数据的示意图;
图2示出了根据本公开的实施例的用于切分图数据的方法的流程图;
图3示出了根据本公开的实施例的用于将图数据中的顶点和边分配到多个检索引擎机器的方法的流程图;
图4A-4E示出了根据本公开的实施例的用于将图数据中的顶点和边分配到多个检索引擎机器的过程的示意图;
图5A-5B示出了根据本公开的实施例的用于调整特定顶点的分配的示意图;
图6示出了根据本公开的实施例的用于切分图数据的装置的框图;以及
图7示出了能够实施本公开的多个实施例的电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中示出了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“一些实施例”应当理解为“至少一些实施例”。下文还可能包括其他明确的和隐含的定义。
本申请的发明人注意到,在图数据的数据量过大的情况下,例如大型社交网络的人物图谱可以具有多达上亿个的顶点和边,单个图检索引擎机器已经无法承担整个图数据的检索任务。因此,需要将图数据切分成多个子图,每个检索引擎机器承担相应子图的检索任务,其中每个检索引擎机器可以例如为一个物理设备,其也被称为一个分片(shard)。
传统地,通常将图数据进行随机切分,只要保证每个子图的顶点的数量基本一致,也即,将顶点随机地分配到各个检索引擎机器。传统的切图方法通常有点切分和边切分两种,其中点切分表示若干点被切开,被切开的点需要在两台机器上保留副本;而边切分表示若干边被切开,被切开的边需要在两台机器上保留副本,当需要遍历被切开的边时,进行跨机器之间的通信。然而,这种随机切分方法会造成过多的边被切开,而过多的边切分会导致过多的机器间通信,使得检索系统的整体性能急剧下降。因此,传统的切图方法效率较低,造成过多的边被切分。
本公开的实施例提出了一种用于切分图数据的方案。本公开的实施例将图数据中的所有顶点按照维度进行排序,并且根据排序来划分这些顶点,能够在切图过程中减少被切开的边的数目。因此,根据本公开的实施例,可以尽可能将完整的子图部分划分在一起,从而减少边被切开的概率。以下将参考附图1-7详细描述本公开的一些示例实施例。
图1示出了根据本公开的实施例的用于切分图数据的示意图100。如图1所示,图数据110(也简称为图)包括多个顶点以及顶点之间的有向边。根据本公开的实施例,通过将图数据中的所有顶点按照邻接顶点数进行排序,并且根据排序来划分这些顶点,能够将图数据110切分成3个子图数据121、122以及123。如图1所述,在根据本公开的实施例所切分出的子图数据121-123中,只有两条边被切开,因而在切图过程中能够减少被切开的边的数目。以下参考图2-7示出了将图数据110切分成多个子图数据121、122以及123的示例实现。
图2示出了根据本公开的实施例的用于切分图数据的方法200的流程图。在框202,确定图数据中的顶点的邻接顶点数,其中邻接顶点数表示与每个顶点相邻的顶点的数目,也称为顶点的维度。在一些实施例中,可以计算出图数据中的每个顶点的维度,并且图数据中可以存储例如人物关系数据、企业关系数据、或者金融实体关系数据,等等。
在一些实施例中,可以在图数据中的顶点和边中的至少一项的数目超过预定数目的情况下,确定图数据中的顶点的邻接顶点数。也就是说,如果图数据的数据量达到需要被切分后才能处理(例如,针对图数据的分布式检索)的程度,则可以对图数据执行根据本公开的实施例所描述的切图方法或过程。应当理解,被切分的图数据除了用于分布式检索之外,还可以用于其他目的,例如分布式存储等。
在框204,根据邻接顶点数,对图数据中的多个顶点进行排序。例如,在计算出每个顶点的维度之后,基于维度对这些顶点进行排序。可选地,对于维度相同的多个顶点,可以随机进行排序。备选地,对于维度相同的多个顶点,也可以考虑这些顶点的其他属性而进行排序,使得相对重要的顶点排名更靠前。
在框206,基于多个顶点的排序,对图数据进行切分。例如,可以根据所有顶点的排序,将排名最高的顶点及其邻接顶点分配在一起,并且可以进行迭代分配直到所有顶点都被分配完,使得维度较高的顶点与其邻接顶点尽量被分配在一个机器中,由此减少边被切割的数目。在一些实施例中,可以基于多个顶点的排序生成经排序的顶点集,并且基于经排序的顶点集来将顶点集中的多个顶点分配到多个检索引擎机器或设备。以下参考图3、4A-4E以及5A-5B描述了将多个顶点分配到多个机器的示例实现。
图3示出了根据本公开的实施例的用于将图数据中的顶点和边分配到多个检索引擎机器的方法300的流程图。应当理解,图3可以为以上参考图2所描述的方法200中的步骤206的示例实现。为了便于清楚说明本公开的方案,以下参考图4A-4E所示出的示意图400、440、450、460以及470一起描述图3的方法300。
在框302,将图数据中所有顶点按维度进行排序以生成顶点集。例如,如图4A所示,需要将图数据410切分成3个部分以分配到3个检索引擎机器431、432以及433中。图数据410包括13个顶点,分别是顶点A、顶点B、顶点C、顶点D、顶点E、顶点F、顶点G、顶点H、顶点I、顶点J、顶点K、顶点L以及顶点M。此外,图数据410还包括这些顶点之间的有向边,共12条边。举例来说,顶点B到顶点A的单向边表示顶点B对顶点A具有某种单向关系。应当理解,虽然以单向边作为示例进行描述,但是根据本公开的实施例的切图方法也同样适用于具有无向边的图数据。
继续参考图4A,在计算出图数据410中的所有顶点的维度之后,将所有顶点按维度进行排序并生成顶点集420。如图4A所示,在顶点集420中,顶点上方的数字表示该顶点的维度,例如顶点A的维度为6,表示顶点A具有6个邻接顶点,也说明有6条边与顶点A相连。接下来,需要根据顶点集420中的排序,将顶点集420中的所有顶点分配到3个机器431、432以及433,使得被切开的边的数目最少或较少。
在框304,选取顶点集中当前维度最高的顶点以及当前负载最小的机器。例如,在图4B中,选择当前维度最高的顶点A(其维度为6),并且选择当前负载最小的机器(即当前已分配顶点最少的机器)。在初始阶段,每个机器都还没分配任何顶点,因而可以随机选择一个机器(诸如机器431)。应当理解,可以先选取当前维度最高的顶点并且后选取当前负载最小的机器、或者先选取当前负载最小的机器并且后选取当前维度最高的顶点、或者同时选取当前维度最高的顶点和当前负载最小的机器。
在框306,将当前维度最高的顶点及其未分配邻接顶点分配到当前负载最小的机器。例如,如图4B所示,可以先将当前维度最高的顶点A分配到机器431,然后确定顶点A的未分配邻接顶点包括顶点B、顶点C、顶点D、顶点E、顶点F以及顶点G,并且将这些邻接顶点一起分配到机器431。也就是说,如果当前维度最高的顶点的某个或某些邻接顶点未被分配,则将这个或这些邻接顶点进行分配。在一些实施例中,也可以首先确定当前维度最高的顶点的未分配邻接顶点,然后将当前维度最高的顶点及其未分配邻接顶点一起分配到当前负载最小的机器。应当理解,在顶点被分配的过程中,与顶点相连的边也同时被分配到相应的机器。
在框308,动态地更新顶点集。如图4B和4C所示,每当有顶点从顶点集420分配到机器中时,就动态地更新顶点集420,因此,顶点集420中始终保留着当前未分配的顶点。如图4C所示,顶点集420中未分配的顶点包括顶点H、顶点K、顶点L、顶点I、顶点J以及顶点M。
在框310,判断顶点集中是否还存在未分配顶点,并且在顶点集中还存在未分配顶点的情况下,迭代地执行步骤304-308。也就是说,迭代地执行每轮顶点分配的步骤304-308,直到顶点集中的所有顶点都被分配完。
例如,如图4C所示,在第一轮分配完成之后,当前维度最高的顶点变为顶点H,当前负载最小的机器为机器432和433,在图4D,将顶点H及其未分配邻接顶点I、顶点J以及顶点K(顶点G虽然也是顶点H的邻接顶点,但是其在第一轮已经被分配)分配到机器432,并动态更新顶点集420。
如图4D所示,在第二轮分配完成之后,当前维度最高的顶点变为顶点L,当前负载最小的机器为机器433,在图4E,将顶点L及其未分配邻接顶点M(顶点K虽然也是顶点L的邻接顶点,但是其在第二轮已经被分配)分配到机器433,并动态更新顶点集420。
返回参考图3,如果在框310判断顶点集中不存在未分配顶点(例如图4E所示的顶点集420中的所有顶点都被分配完),则在框312,执行针对图数据的分布式检索。例如,使用机器431执行针对顶点A、顶点B、顶点C、顶点D、顶点E、顶点F、顶点G及其相关边的检索,使用机器432执行针对顶点H、顶点I、顶点J、顶点K及其相关边的检索,使用机器433执行针对顶点L、顶点M及其相关边的检索。此外,在需要遍历顶点G与顶点H之间的边或者顶点H与顶点L之间的边的情况下,则需要进行跨机器的通信。然而,由于根据本公开的实施例的切图方法能够使得被切的边较少或最少(在图4A-4E的示例,仅2条边被切开,切割率仅为0.167),因而需要这种跨机器通信的可能性将变小,由此提升了图检索系统的整体检索性能。
在一些实施例中,可以设置每个机器待被分配的顶点的最大数目,如果某个机器已分配的顶点数目达到最大数目,则停止向该机器继续分配顶点。例如,最大数目Pmax可以基于以下公式(1)被确定:
Pmax=a×V/P (1)
其中V表示图数据中的顶点的总数目,P表示要被分配的检索引擎机器的数目,a是预先设置的参数,其取值大于1,诸如1.5。
在一些实施例中,根据本公开的实施例的切图的原则可以包括:保证高维度顶点的邻接边被分配到同一个机器;孤立的顶点均匀地分布在各个机器上;以及每个机器上分配的顶点的上限小于最大数目Pmax。
在一些实施例中,可以接收对邻接顶点数的上限值(即高维度警戒线)的设置,如果具有上限值个邻接顶点的特定顶点作为其他顶点的邻接顶点而被分配,则调整或修正该特定顶点的分配。例如,图5A-5B示出了根据本公开的实施例的用于调整特定顶点的分配的示意图500和550。
如图5A所示,图数据510包括9个顶点,即顶点O、顶点P、顶点Q、顶点R、顶点S、顶点T、顶点U、顶点V、顶点W,其中顶点S的维度为5,顶点T的维度为4,其他顶点的维度均为1。因此,根据本公开的实施例,可以将维度最高的顶点S及其邻接顶点O、顶点P、顶点Q、顶点R、顶点T分配到机器521,接下来,将剩余的3个顶点U、顶点V、顶点T分别分配到机器522。
然而,如图5A所示,这种切图方法造成高维度顶点T的3条边被切开,因而其不是最优的结果。因此,本公开的实施例可以对高维度顶点进行特殊处理,使得高维度顶点不被作为其他顶点的邻接顶点而被分配。参考图5B,可以设置邻接顶点数的上限值(例如设置为4),由于顶点T的维度满足大于等于4,因而可以对图5A的分配进行调整,使得顶点T不作为顶点S的邻接顶点而被分配。以这种方式,最高维度顶点S(其维度为5)及其邻接顶点O、顶点P、顶点Q、顶点R被分配到机器521,而顶点T不会跟随顶点S而被分配到机器521。接下来,在第二轮的分配过程中,剩余的最高维度顶点T(其维度为4)及其邻接顶点U、顶点V以及顶点W被分配到机器522。由此可见,与图5A的分配方式相比,图5B经过调整后的分配方式仅仅一条边被切开,由此减少了在切图过程中被切开的边的数目。
因此,本公开的实施例能够在切图过程中减少被切开的边的数目。例如,在传统的随机切分的方法中,在具有几百万个顶点和几千万条边的图数据中,将有大约百分之七十的边被切开。而根据本公开的实施例的切分方法,实际被切分的边的比率将大幅减少,甚至减少到百分之一以下,有效降低了分布式检索的跨机器通信的性能损耗。
图6示出了根据本公开的实施例的用于切分图数据的装置600的框图。如图6所示,装置600包括确定模块610、排序模块620以及切分模块630。确定模块610被配置为确定图数据中的顶点的邻接顶点数。排序模块620被配置为根据邻接顶点数,对图数据中的多个顶点进行排序。切分模块630被配置为基于多个顶点的排序,对图数据进行切分。
在一些实施例中,其中切分模块630包括:生成模块,被配置为基于多个顶点的排序,生成经排序的顶点集;以及分配模块,被配置为基于经排序的顶点集,将顶点集中的多个顶点分配到多个设备。
在一些实施例中,其中分配模块包括:第二分配模块,被配置为将顶点集中的第一顶点以及第一顶点的邻接顶点分配到多个设备中的第一设备。
在一些实施例中,其中分配模块包括:迭代模块,被配置为迭代地执行以下步骤,直到顶点集中的所有顶点都被分配完:选择顶点集中当前排名最高的顶点以及多个设备中当前已分配顶点最少的设备;将当前排名最高的顶点以及当前排名最高的顶点的未分配邻接顶点分配到当前已分配顶点最少的设备;以及通过从顶点集中移除当前排名最高的顶点以及当前排名最高的顶点的未分配邻接顶点,来更新顶点集。
在一些实施例中,其中分配模块包括:设置模块,被配置为设置多个设备中的每个设备待被分配的顶点的最大数目;以及停止模块,被配置为响应于多个设备中的某个设备已分配顶点数目达到最大数目,停止向该设备分配顶点。
在一些实施例中,其中分配模块包括:接收模块,被配置为接收对邻接顶点数的上限值的设置;以及调整模块,被配置为响应于具有上限值个邻接顶点的特定顶点作为邻接顶点而被分配,调整特定顶点的分配。
在一些实施例中,其中确定模块610包括:第二确定模块,被配置为响应于图数据中的顶点和边中的至少一项的数目超过预定数目,确定图数据中的顶点的邻接顶点数。
在一些实施例中,装置600还包括:检索模块,被配置为使用经切分的图数据,执行针对图数据的分布式检索。
应当理解,图6中所示出的确定模块610、排序模块620、切分模块630可以被包括电子设备(诸如服务器)中。而且,应当理解,图6中所示出的模块可以执行参考本公开的实施例的方法或过程中的步骤或动作。
图7示出了可以用来实施本公开的实施例的示例设备700的示意性框图。应当理解,设备700可以用于实现本公开所描述的用于切分图数据的装置600。如图所示,设备700包括中央处理单元(CPU)701,其可以根据被存储在只读存储器(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元701执行上文所描述的各个方法和过程,例如方法200和300。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由CPU 701执行时,可以执行上文描述的方法的一个或多个动作或步骤。备选地,在其他实施例中,CPU 701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD),等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各动作或步骤,但是这应当理解为要求这样动作或步骤以所示出的特定次序或以顺序次序执行,或者要求所有图示的动作或步骤应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本公开的实施例,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (18)
1.一种用于切分图数据的方法,包括:
确定图数据中的顶点的邻接顶点数;
根据所述邻接顶点数,对所述图数据中的多个顶点进行排序;以及
基于所述多个顶点的所述排序,对所述图数据进行切分。
2.根据权利要求1所述的方法,其中对所述图数据进行切分包括:
基于所述多个顶点的所述排序,生成经排序的顶点集;以及
基于经排序的所述顶点集,将所述顶点集中的多个顶点分配到多个设备。
3.根据权利要求2所述的方法,其中将所述顶点集中的多个顶点分配到多个设备包括:
将所述顶点集中的第一顶点以及所述第一顶点的邻接顶点分配到所述多个设备中的第一设备。
4.根据权利要求2所述的方法,其中将所述顶点集中的多个顶点分配到多个设备包括:
迭代地执行以下步骤,直到所述顶点集中的所有顶点都被分配完:
选择所述顶点集中当前排名最高的顶点以及所述多个设备中当前已分配顶点最少的设备;
将所述当前排名最高的顶点以及所述当前排名最高的顶点的未分配邻接顶点分配到所述当前已分配顶点最少的设备;以及
通过从所述顶点集中移除所述当前排名最高的顶点以及所述当前排名最高的顶点的未分配邻接顶点,来更新所述顶点集。
5.根据权利要求2所述的方法,其中将所述顶点集中的多个顶点分配到多个设备包括:
设置所述多个设备中的每个设备待被分配的顶点的最大数目;以及
响应于所述多个设备中的某个设备已分配顶点数目达到所述最大数目,停止向该设备分配顶点。
6.根据权利要求2所述的方法,其中将所述顶点集中的多个顶点分配到多个设备包括:
接收对邻接顶点数的上限值的设置;以及
响应于具有所述上限值个邻接顶点的特定顶点作为其他顶点的邻接顶点而被分配,调整所述特定顶点的分配。
7.根据权利要求1所述的方法,其中确定图数据中的顶点的邻接顶点数包括:
响应于所述图数据中的顶点和边中的至少一项的数目超过预定数目,确定所述图数据中的顶点的邻接顶点数。
8.根据权利要求1-7中任一项所述的方法,还包括:
使用经切分的所述图数据,执行针对所述图数据的分布式检索。
9.一种用于切分图数据的装置,包括:
确定模块,被配置为确定图数据中的顶点的邻接顶点数;
排序模块,被配置为根据所述邻接顶点数,对所述图数据中的多个顶点进行排序;以及
切分模块,被配置为基于所述多个顶点的所述排序,对所述图数据进行切分。
10.根据权利要求9所述的装置,其中所述切分模块包括:
生成模块,被配置为基于所述多个顶点的所述排序,生成经排序的顶点集;以及
分配模块,被配置为基于经排序的所述顶点集,将所述顶点集中的多个顶点分配到多个设备。
11.根据权利要求10所述的装置,其中所述分配模块包括:
第二分配模块,被配置为将所述顶点集中的第一顶点以及所述第一顶点的邻接顶点分配到所述多个设备中的第一设备。
12.根据权利要求10所述的装置,其中所述分配模块包括:
迭代模块,被配置为迭代地执行以下步骤,直到所述顶点集中的所有顶点都被分配完:
选择所述顶点集中当前排名最高的顶点以及所述多个设备中当前已分配顶点最少的设备;
将所述当前排名最高的顶点以及所述当前排名最高的顶点的未分配邻接顶点分配到所述当前已分配顶点最少的设备;以及
通过从所述顶点集中移除所述当前排名最高的顶点以及所述当前排名最高的顶点的未分配邻接顶点,来更新所述顶点集。
13.根据权利要求10所述的装置,其中所述分配模块包括:
设置模块,被配置为设置所述多个设备中的每个设备待被分配的顶点的最大数目;以及
停止模块,被配置为响应于所述多个设备中的某个设备已分配顶点数目达到所述最大数目,停止向该设备分配顶点。
14.根据权利要求10所述的装置,其中所述分配模块包括:
接收模块,被配置为接收对邻接顶点数的上限值的设置;以及
调整模块,被配置为响应于具有所述上限值个邻接顶点的特定顶点作为其他顶点的邻接顶点而被分配,调整所述特定顶点的分配。
15.根据权利要求9所述的装置,其中所述确定模块包括:
第二确定模块,被配置为响应于所述图数据中的顶点和边中的至少一项的数目超过预定数目,确定所述图数据中的顶点的邻接顶点数。
16.根据权利要求9-15中任一项所述的装置,还包括:
检索模块,被配置为使用经切分的所述图数据,执行针对所述图数据的分布式检索。
17.一种电子设备,所述电子设备包括:
一个或多个处理器;以及
存储装置,其用于存储一个或多个程序,所述一个或多个程序当被所述一个或多个处理器执行,使得所述电子设备实现根据权利要求1-8中任一项所述的方法。
18.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1-8中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810983673.1A CN109165325B (zh) | 2018-08-27 | 2018-08-27 | 用于切分图数据的方法、装置、设备以及计算机可读存储介质 |
CN202111064232.XA CN113779322B (zh) | 2018-08-27 | 2018-08-27 | 用于图检索的方法、装置、设备以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810983673.1A CN109165325B (zh) | 2018-08-27 | 2018-08-27 | 用于切分图数据的方法、装置、设备以及计算机可读存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111064232.XA Division CN113779322B (zh) | 2018-08-27 | 2018-08-27 | 用于图检索的方法、装置、设备以及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109165325A true CN109165325A (zh) | 2019-01-08 |
CN109165325B CN109165325B (zh) | 2021-08-17 |
Family
ID=64896866
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810983673.1A Active CN109165325B (zh) | 2018-08-27 | 2018-08-27 | 用于切分图数据的方法、装置、设备以及计算机可读存储介质 |
CN202111064232.XA Active CN113779322B (zh) | 2018-08-27 | 2018-08-27 | 用于图检索的方法、装置、设备以及计算机可读存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111064232.XA Active CN113779322B (zh) | 2018-08-27 | 2018-08-27 | 用于图检索的方法、装置、设备以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109165325B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538867A (zh) * | 2020-04-15 | 2020-08-14 | 深圳计算科学研究院 | 一种有界增量图划分方法和系统 |
CN113792170A (zh) * | 2021-11-15 | 2021-12-14 | 支付宝(杭州)信息技术有限公司 | 图数据划分方法、装置和计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107016092A (zh) * | 2017-04-06 | 2017-08-04 | 湘潭大学 | 一种基于扁平化算法的文本搜索方法 |
CN107193896A (zh) * | 2017-05-09 | 2017-09-22 | 华中科技大学 | 一种基于簇的图数据划分方法 |
CN108073583A (zh) * | 2016-11-08 | 2018-05-25 | 华为技术有限公司 | 一种分图方法及装置 |
US10469508B2 (en) * | 2015-08-31 | 2019-11-05 | Splunk Inc. | Interactive threat geo-map for monitoring computer network security |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970902B (zh) * | 2014-05-27 | 2017-05-24 | 重庆大学 | 一种大量数据情况下的可靠即时检索方法及系统 |
CN104281664B (zh) * | 2014-09-24 | 2017-11-03 | 北京航空航天大学 | 分布式图计算系统数据切分方法和系统 |
US9934325B2 (en) * | 2014-10-20 | 2018-04-03 | Korean Institute Of Science And Technology Information | Method and apparatus for distributing graph data in distributed computing environment |
CN106649391B (zh) * | 2015-11-03 | 2020-10-27 | 华为技术有限公司 | 处理图数据的方法和装置 |
-
2018
- 2018-08-27 CN CN201810983673.1A patent/CN109165325B/zh active Active
- 2018-08-27 CN CN202111064232.XA patent/CN113779322B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10469508B2 (en) * | 2015-08-31 | 2019-11-05 | Splunk Inc. | Interactive threat geo-map for monitoring computer network security |
CN108073583A (zh) * | 2016-11-08 | 2018-05-25 | 华为技术有限公司 | 一种分图方法及装置 |
CN107016092A (zh) * | 2017-04-06 | 2017-08-04 | 湘潭大学 | 一种基于扁平化算法的文本搜索方法 |
CN107193896A (zh) * | 2017-05-09 | 2017-09-22 | 华中科技大学 | 一种基于簇的图数据划分方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538867A (zh) * | 2020-04-15 | 2020-08-14 | 深圳计算科学研究院 | 一种有界增量图划分方法和系统 |
CN111538867B (zh) * | 2020-04-15 | 2021-06-15 | 深圳计算科学研究院 | 一种有界增量图划分方法和系统 |
CN113792170A (zh) * | 2021-11-15 | 2021-12-14 | 支付宝(杭州)信息技术有限公司 | 图数据划分方法、装置和计算机设备 |
CN113792170B (zh) * | 2021-11-15 | 2022-03-15 | 支付宝(杭州)信息技术有限公司 | 图数据划分方法、装置和计算机设备 |
WO2023083241A1 (zh) * | 2021-11-15 | 2023-05-19 | 支付宝(杭州)信息技术有限公司 | 图数据划分 |
Also Published As
Publication number | Publication date |
---|---|
CN113779322B (zh) | 2023-08-01 |
CN113779322A (zh) | 2021-12-10 |
CN109165325B (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
McColl et al. | A new parallel algorithm for connected components in dynamic graphs | |
CN107003935A (zh) | 优化数据库去重 | |
CN107111653A (zh) | 适于并行数据库系统的系统内存负载的查询优化 | |
CN111859027B (zh) | 图计算方法及装置 | |
CN114399227A (zh) | 一种基于数字孪生的生产调度方法、装置及计算机设备 | |
CN106202092A (zh) | 数据处理的方法及系统 | |
US11308066B1 (en) | Optimized database partitioning | |
CN112631686A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US9292405B2 (en) | HANA based multiple scenario simulation enabling automated decision making for complex business processes | |
US20170329824A1 (en) | Computer-implemented method of executing a query in a network of data centres | |
CN108415912A (zh) | 基于MapReduce模型的数据处理方法和设备 | |
CN110019298A (zh) | 数据处理方法和装置 | |
CN107832446A (zh) | 一种配置项信息的搜索方法及计算设备 | |
CN109165325A (zh) | 用于切分图数据的方法、装置、设备以及计算机可读存储介质 | |
CN108833592A (zh) | 云主机调度器优化方法、装置、设备及存储介质 | |
CN111475511A (zh) | 基于树状结构的数据存储方法、访问方法、装置及设备 | |
CN107204998A (zh) | 处理数据的方法和装置 | |
CN104239520B (zh) | 一种基于历史信息的hdfs数据块放置策略 | |
CN107871055A (zh) | 一种数据分析方法和装置 | |
CN111951112A (zh) | 基于区块链的智能合约执行方法、终端设备和存储介质 | |
CN117076563A (zh) | 一种应用于区块链的剪枝方法和装置 | |
CN106648891A (zh) | 基于MapReduce模型的任务执行方法和装置 | |
CN108256694A (zh) | 基于重复遗传算法的模糊时间序列预测系统、方法及装置 | |
CN115543428A (zh) | 一种基于策略模板的模拟数据生成方法和装置 | |
CN116954815A (zh) | 资源调度方法及装置、计算机设备、计算机可读存储介质 |
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 |