CN117668302A - 图计算的方法、装置以及计算设备 - Google Patents

图计算的方法、装置以及计算设备 Download PDF

Info

Publication number
CN117668302A
CN117668302A CN202211033506.3A CN202211033506A CN117668302A CN 117668302 A CN117668302 A CN 117668302A CN 202211033506 A CN202211033506 A CN 202211033506A CN 117668302 A CN117668302 A CN 117668302A
Authority
CN
China
Prior art keywords
graph
operator
matrix
data
map
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.)
Pending
Application number
CN202211033506.3A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211033506.3A priority Critical patent/CN117668302A/zh
Priority to PCT/CN2023/105484 priority patent/WO2024041229A1/zh
Publication of CN117668302A publication Critical patent/CN117668302A/zh
Pending legal-status Critical Current

Links

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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (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为大于或等于1的整数;所述图数据库执行所述执行计划,获得所述图计算请求对应的执行结果。该方法能够使得数据库在图计算上具有良好的可扩展性。

Description

图计算的方法、装置以及计算设备
技术领域
本申请涉及数据库领域,并且更具体地,涉及一种图计算的方法、装置以及计算设备。
背景技术
图数据库是以点、边为基础存储单元,以高效存储、查询图数据为设计原理的数据管理系统。与关系数据库相比,图数据库可以很自然的表达现实世界中的实体及其关联关系。
现有的图数据库中,可以支持不同的图分析算法,并通过图分析算法对用户发送的图计算请求进行处理。也即,现有的图数据库中,在获得用户发送的图计算请求后,根据该图计算请求的类型从已有的多种图分析算法中确定一个图分析算法,并基于该图分析算法对图计算请求进行处理。
上述现有的图数据库中,由于支持的图分析算法的种类和数量比较固定,该现有的图数据库只能从已有的图分析算法中确定一个图分析算法,并基于该图分析算法对图计算请求进行处理,可扩展性较差。
因此,如何提高图数据库的可扩展性成为亟需要解决的技术问题。
发明内容
本申请提供一种图计算的方法、装置以及计算设备,该方法能够使得数据库在图计算上具有良好的可扩展性。
第一方面,提供了一种图计算的方法,包括:图数据库接收图计算请求,所述图计算请求用于请求对所述图数据库中存储的第一图数据进行处理;所述图数据库根据所述图计算请求,生成所述图计算请求对应的执行计划,所述执行计划中包括n个图算子,每个所述图算子表示矩阵之间的运算,所述矩阵用于表示所述第一图数据,所述n为大于或等于1的整数;所述图数据库执行所述执行计划,获得所述图计算请求对应的执行结果。
上述技术方案中,图数据库可以根据不同的图计算请求,实时地获得该图计算请求对应的执行计划,该执行计划中包括从图算子库中获得的一个或多个图算子的组合。因此,该数据库在图计算上具有较好的可扩展性。
结合第一方面,在第一方面的某些实现方式中,所述执行计划中还包括所述n个图算子的执行顺序。
结合第一方面,在第一方面的某些实现方式中,所述第一图数据中包括属性数据,所述执行计划中还包括关系算子,所述关系算子用于对所述属性数据进行处理。
结合第一方面,在第一方面的某些实现方式中,所述执行计划中包括第一图算子和第二图算子,所述第一图算子的输出矩阵为所述第二图算子的输入矩阵,所述第一图算子的输出矩阵和所述第二图算子的输入矩阵的数据格式相同。
结合第一方面,在第一方面的某些实现方式中,所述第一图算子的输出矩阵采用矩阵压缩的方式存储在第一存储空间。
结合第一方面,在第一方面的某些实现方式中,所述第一存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述第一图数据对应的图中的多个点的标识ID,所述边数组中包括每个所述点出发的边。
结合第一方面,在第一方面的某些实现方式中,所述矩阵采用矩阵压缩的方式存储在第二存储空间。
结合第一方面,在第一方面的某些实现方式中,所述第二存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述矩阵对应的图中的多个点的ID,每个所述点对应一个边数组,所述边数组以链表的形式存储在所述第二存储空间。
结合第一方面,在第一方面的某些实现方式中,所述第一图数据包括属性数据和拓扑数据,所述属性数据表示所述第一图数据对应的图中点或边的属性,所述拓扑数据表示所述图中点和点之间的关联关系。
结合第一方面,在第一方面的某些实现方式中,所述图数据库通过客户端接收用户发送的所述图计算请求。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述图数据库通过客户端将所述图计算请求对应的执行结果返回给用户。
第二方面,提供了一种装置,所述装置包括:接收模块,生成模块,执行模块。其中,接收模块用于接收图计算请求,所述图计算请求用于请求对所述图数据库中存储的第一图数据进行处理;生成模块用于根据所述图计算请求,生成所述图计算请求对应的执行计划,所述执行计划中包括n个图算子,每个所述图算子表示矩阵之间的运算,所述矩阵用于表示所述第一图数据,所述n为大于或等于1的整数;执行模块用于执行所述执行计划,获得所述图计算请求对应的执行结果。
结合第二方面,在第二方面的某些实现方式中,所述执行计划中还包括所述n个图算子的执行顺序。
结合第二方面,在第二方面的某些实现方式中,所述第一图数据中包括属性数据,所述执行计划中还包括关系算子,所述关系算子用于对所述属性数据进行处理。
结合第二方面,在第二方面的某些实现方式中,所述执行计划中包括第一图算子和第二图算子,所述第一图算子的输出矩阵为所述第二图算子的输入矩阵,所述第一图算子的输出矩阵和所述第二图算子的输入矩阵的数据格式相同。
结合第二方面,在第二方面的某些实现方式中,所述第一图算子的输出矩阵采用矩阵压缩的方式存储在第一存储空间。
结合第二方面,在第二方面的某些实现方式中,所述第一存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述第一图数据对应的图中的多个点的标识ID,所述边数组中包括每个所述点出发的边。
结合第二方面,在第二方面的某些实现方式中,所述矩阵采用矩阵压缩的方式存储在第二存储空间。
结合第二方面,在第二方面的某些实现方式中,所述第二存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述矩阵对应的图中的多个点的ID,每个所述点对应一个边数组,所述边数组以链表的形式存储在所述第二存储空间。
结合第二方面,在第二方面的某些实现方式中,所述第一图数据包括属性数据和拓扑数据,所述属性数据表示所述第一图数据对应的图中点或边的属性,所述拓扑数据表示所述图中点和点之间的关联关系。
结合第二方面,在第二方面的某些实现方式中,所述接收模块具体用于:通过客户端接收用户发送的所述图计算请求。
结合第二方面,在第二方面的某些实现方式中,所述装置还包括:发送模块,用于通过客户端将所述图计算请求对应的执行结果返回给用户。
第三方面,提供了一种计算设备,包括处理器和存储器,可选地,还包括输入输出接口。其中所述处理器用于控制所述输入输出接口收发信息,所述存储器用于存储计算机程序,所述处理器用于从存储器中调用并运行该计算机程序,使得所述执行第一方面或第一方面任意一种可能的实现方式中所述的方法。
可选地,该处理器可以是通用处理器,可以通过硬件来实现也可以通过软件来实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
第四方面,提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行第一方面或第一方面任意一种可能的实现方式中所述的方法。
第五方面,提供了一种芯片,该芯片获取指令并执行该指令来实现上述第一方面以及第一方面的任意一种实现方式中的方法。
可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述第一方面以及第一方面的任意一种实现方式中的方法。
可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行第一方面以及第一方面中的任意一种实现方式中的方法。
第六方面,提供了一种包含指令的计算机程序产品,当所述指令被计算设备运行时,使得所述计算设备执行如上述第一方面以及第一方面的任意一种实现方式中的方法。
第七方面,提供了一种包含指令的计算机程序产品,当所述指令被计算设备集群运行时,使得所述计算设备集群执行执行如上述第一方面以及第一方面的任意一种实现方式中的方法。
第八方面,提供了一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如上述第一方面以及第一方面的任意一种实现方式中的方法。
作为示例,这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasablePROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。
可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。
第九方面,提供了一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如上述第一方面以及第一方面的任意一种实现方式中的方法。
作为示例,这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasablePROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。
可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。
附图说明
图1是本申请实施例提供的一种图数据库进行图计算的方法的示意性流程图。
图2是本申请实施例提供的一种矩阵压缩存储的示意性框图。
图3是本申请实施例提供的一种路由器业务场景的示意性框图。
图4是本申请实施例提供的一种图模式的示意性框图。
图5是本申请实施例提供的一种对于图4所示的图模式的第一层制定的执行计划的示意性框图。
图6是本申请实施例提供的一种SpGEMM图算子的两个输入矩阵的示意图。
图7是本申请实施例提供的一种中间结果集的示意性框图。
图8是本申请实施例提供的另一种中间结果集的示意性框图。
图9是本申请实施例提供的另一种SpGEMM图算子的两个输入矩阵的示意图。
图10是本申请实施例提供的另一种中间结果集的示意性框图。
图11是本申请实施例提供的另一种中间结果集的示意性框图。
图12是本申请实施例提供的一种连通的path实例的示意性框图。
图13是本申请实施例提供的一种对于图4所示的图模式构造的执行计划的示意性框图。
图14是本申请实施例提供的一种图计算的装置1400的示意性框图。
图15是本申请实施例提供的一种计算设备1500的架构示意图。
图16是本申请实施例提供的一种计算设备集群的架构示意图。
图17是本申请实施例提供的计算设备1500A和1500B之间通过网络进行连接的示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例描述的业务场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:包括单独存在A,同时存在A和B,以及单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
为了便于理解,下面先对本申请实施例可能涉及的相关术语和概念进行介绍。
1、图(graph)
图是用于表示对象之间关联关系的一种抽象数据结构,可使用点(Vertex)和边(Edge)进行描述,也即图是一组点和边的集合。其中,点表示对象、实体或实例,例如人员、企业、帐户或要跟踪的任何其他项目。边表示对象(或实体,或实例)之间的关系,边可以是有向的,也可以是无向的。在无向图中,连接两个点的边具有单一含义。在有向图中,连接两个不同点的边,根据它们的方向具有不同的含义。边是图数据库中的关键概念,是图数据库独有的数据抽象概念。
2、图数据
图数据可抽象成用图描述的数据,图数据可以包括属性数据和拓扑数据。其中,属性数据表示图上的点,或者边上的属性,属性数据也可以简称为数据。拓扑数据是指图上的两个点之间的关联关系,拓扑数据也可以简称为拓扑。
3、图数据库
图数据库是以点、边为基础存储单元,以高效存储、查询图数据为设计原理的数据管理系统。与关系数据库相比,图数据库可以很自然的表达现实世界中的实体及其关联关系。因此,图数据库在社交网络、实时推荐、征信系统、人工智能等领域有着广泛的应用。
在图数据库中,数据间的关系和数据本身同样重要,它们被作为数据的一部分存储起来。因为实体间的关系已经提前存储到了数据库中,这样的架构使图数据库能够快速响应复杂关联查询。图数据库可以直观地可视化关系,是存储、查询、分析高度互联数据的最优办法。
图数据库属于非关系型数据库。图数据库对数据的存储、查询以及数据结构都和关系型数据库有很大的不同。图数据结构直接存储了节点之间的依赖关系,而关系型数据库和其他类型的非关系型数据库则以非直接的方式来表示数据之间的关系。图数据库把数据间的关联作为数据的一部分进行存储,关联上可添加标签、方向以及属性,而其他数据库针对关系的查询必须在运行时进行具体化操作,这也是图数据库在关系查询上相比其他类型数据库有巨大性能优势的原因。
4、图计算(graph processing)
是将数据按照图的方式建模可以获得以往用扁平化的视角很难得到的结果。图计算,便是以图作为数据模型来表达问题并予以解决的这一过程。
现有的图数据库中,可以支持不同的图分析算法,并通过图分析算法对用户发送的图计算请求进行处理。也即,现有的图数据库中,在获得用户发送的图计算请求后,根据该图计算请求的类型从已有的多种图分析算法中确定一个图分析算法,并基于该图分析算法对图计算请求进行处理。
上述现有的图数据库中,由于支持的图分析算法的种类和数量比较固定,该现有的图数据库只能从已有的图分析算法中确定一个图分析算法,并基于该图分析算法对图计算请求进行处理,可扩展性较差。
有鉴于此,本申请实施例提供了一种图数据库,该数据库在图计算上具有良好的可扩展性。
图1是本申请实施例提供的一种图数据库进行图计算的方法的示意性流程图。如图1所示,该方法可以包括步骤110-130,下面分别对步骤110-130进行详细描述。
步骤110:图数据库接收用户发送的图计算请求。
图数据库中存储有图数据,用户可以通过客户端对该图数据库中存储的某个图数据进行操作,例如,对存储的某个图数据进行增改删查等操作。
作为示例,图数据库可以通过客户端接收用户发送的图计算请求。一个示例,该图计算请求为查询请求,例如,对图数据库中存储的某个图数据进行最短路径的查询,又如,对图数据库中存储的某个图数据进行连通性的查询等。
应理解,本申请实施例提供的图数据库可以支持多种语言。也即本申请实施例对用户发送的图计算请求的语言不做具体限定。
步骤120:图数据库根据该图计算请求,生成对应的执行计划。
本申请实施例中,图数据库在接收到用户发送的图计算请求后,可以针对该图计算请求,生成对应的执行计划,该执行计划中可以包括一个图算子或多个图算子的组合。
应理解,用户发送的图计算请求可以被看做是对图数据库中存储的图数据的运算。因此,可以根据对图数据上不同的基本运算类型,将不同的运算类型抽象成多个不同的图算子,每个图算子可以表示对图数据的一种运算类型。该多个不同的图算子也可以称为图算子库。图数据库可以根据某个具体的图计算请求,从上述图算子库中包括的多个不同的图算子中确定一个图算子或多个图算子的组合,该一个图算子或多个图算子的组合可以称为对该图计算请求生成的执行计划。
在一些实施例中,由于图和矩阵之间存在对偶关系,在图数据库可以使用矩阵表示图数据,对图数据的运算可以由矩阵之间的运算来表示。因此,本申请实施例中,上述不同的图算子可以表示矩阵之间不同的运算类型。
上述通过矩阵表示图的方案中,可以通过矩阵运算的组合实现图算法。基于矩阵实现的图算子能够更好的利用矩阵的并行特性,从而达到更高性能的图计算。
本申请实施例中,如果执行计划中包括多个图算子的组合,上述执行计划中还包括该多个图算子的执行顺序。每个图算子内部不采用迭代器的形式,而是一次执行处理全量的数据。
可选地,在一些实施例中,该执行计划中还包括关系算子,该关系算子表示对图数据中的属性数据进行处理。例如,对该属性数据进行选择、投影等操作。
可选的,在一些实施例中,由于矩阵可以表示一个图数据,图数据中既包括属性数据,又包括拓扑数据,因此,为了节省矩阵的存储空间,可以采用属性数据和拓扑数据分开存储的方式对矩阵进行存储。其中,对于矩阵中的属性数据,采用关系表的形式进行存储。对于矩阵中的拓扑数据,可以采用矩阵压缩的形式进行存储,例如,采用压缩稀疏行(compressed sparse row,CSR)算法对矩阵进行压缩。
作为示例,如图2所示,可以采用CSR算法将一个n*n的矩阵压缩成一个1*n的矩阵,即一个长度为n的数组。由于该数组太长,在实现过程中可以把该数组切分成多个segment。每个segment是一个固定长度的一维数组,该数组也可以称为点数组。该点数组中包括n个点(vertex),每个点可以用点ID来表示。每个点上可以有一个边数组,该边数组中的每个边(edge)表示由该点触发的所有的边。一种可能的实现方式中,每个点上的边数组以链表的形式进行存储,该点中存储有该链表的起始指针。
上述拓扑数据与属性数据分离的存储方式带来了两个好处。一个是引入了点ID的概念,每个点都有自己的逻辑ID,该ID由Segment ID和该点在Segment上的偏移组成。另一个是在基于拓扑数据进行图计算的过程中,用点ID来表示具体的点,而不用关心点上的属性数据。在图计算完成后,会根据用户的需求,由点ID计算出该点的物理地址,从而获取点上具体属性的值。
步骤130:图数据库执行上述执行计划,得到输出结果。
本申请实施例中,图数据库可以通过执行上述生成的执行计划,得到输出结果。该图数据库还可以通过客户端将该结果返回给用户。
应理解,如果执行计划中包括多个图算子的组合,该多个图算子能够组合的前提是所有的图算子都具有相同的输入输出。也就是说,多个图算子的输入和输出的数据格式相同。例如,执行计划中包括两个图算子,分别为第一图算子和第二图算子,这两个图算子的执行顺序为先执行第一图算子再执行第二图算子。第一图算子的输出可作为第二图算子的输入,第一图算子的输出和第二图算子的输入的数据格式相同。
可选地,本申请实施例中,设计了一种叫做中间结果集,该中间结果集是执行计划中多个图算子之间进行数据交互的基础结构。该中间结果采用矩阵的压缩存储,能够同时存储点数据和边数据。该执行计划中的每个图算子可以从中间结果集中获取数据作为输入,还可以将该图算子输出的全量数据存储至该中间结果集中。中间结果集在执行计划中的多个图算子之间传递,每个图算子通过自己的函数实现遍历和修改中间结果集的数据。
举例说明,上述中间结果集中可以包括点数组和边数组。其中,点数组中存储的是每个点的ID以及由该点触发的边在边数组中的位置(或范围)。边数组中存储的是每个点对应的边,具体的,该点数组中存储的是每个边的目的点的ID。由此可以看出,该中间结果集中的点数组和边数组构成了一个图,该图中既存储了点数据,又存储了边数据。
上述技术方案中,图数据库可以根据不同的图计算请求,实时地获得该图计算请求对应的执行计划,该执行计划中包括从图算子库中获得的一个或多个图算子的组合。因此,该数据库在图计算上具有较好的可扩展性。
下面以通过矩阵表示图为例,列举出本申请实施例设计的几种图算子。应理解,下面的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的下面的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
1、SpRef图算子
SpRef图算子又可以称为子矩阵取算子。因为矩阵通常是非常稀疏的,因此在做运算的时候,需要从整个矩阵的基础上取出一个子矩阵。取出对应的子矩阵,可以降低整个矩阵运算的代价。
举例说明,sparse matrix B=SpRefA(p,q))表示一个SpRef图算子,其中,A为原矩阵;p,q是向量索引,用于指定从矩阵A中取出子矩阵的向量范围;SpRefA(p,q))表示根据向量索引p和q,从原矩阵A中取出一个子矩阵;B为从原矩阵A中取出的子矩阵。
应理解,SpRef图算子具有过滤功能,用于对图数据进行过滤。
2、SpAsgn图算子
SpAsgn图算子又可以称为子矩阵存算子。举例说明,SpAsgnB(p,q)=A表示一个SpAsgn图算子,其中,B为子矩阵,A为原矩阵,p,q是向量索引,用于指定将子矩阵B存储入到原矩阵A中的向量范围,SpAsgnB(p,q)=A表示根据向量索引p和q,将子矩阵B存储入到原矩阵A中。
3、SpMV图算子
SpMV图算子表示矩阵与向量的乘法运算,主要用于做图上的遍历搜索。应理解,图遍历与矩阵向量运算是对偶关系,因此,可以通过矩阵与向量的乘法运算实现图的下一跳的遍历操作。举例说明,y=Ax,其中,A为原始表征图的矩阵,x为需要遍历的起始vertexvector,y为该矩阵与向量相乘操作,实现的是图上下一跳的遍历搜索操作。
4、SpAdd图算子
SpAdd图算子表示两个矩阵之间的运算,例如,C为矩阵A和矩阵B之间的运算,具体的运算类型由/>确定。
应理解,这里的矩阵也可以是向量,也即SpAdd图算子表示两个向量之间的运算。
例如,当为加法时,SpAdd图算子表示将两个矩阵相加,也即将两个矩阵对应的两个图相加。假设两个矩阵对应的两个图中分别包括一组路径(path),这里的SpAdd图算子可以实现将两个图中的两组path叠加。
又如,当为减法时,SpAdd图算子表示将两个矩阵相减,也即将两个矩阵对应的两个图相减。假设两个矩阵对应的两个图中分别包括一组路径(path),这里的SpAdd图算子可以实现将一个图中的一组path从另一个中的一组path中减去。
又如,当为乘法时,SpAdd图算子表示将两个矩阵相乘,也即将两个矩阵对应的两个图相乘,相当于“与”操作。假设两个矩阵对应的两个图中分别包括一组路径(path),这里的SpAdd图算子可以实现返回两组path中公共的path。
5、SpGEMM图算子
SpGEMM图算子表示两个矩阵之间的乘法运算。举例说明,C=AB,假设A为原始图对应的矩阵,B是需要进行下一跳遍历的起始节点对应的矩阵。通过矩阵A和矩阵B之间的乘法运算操作,得到矩阵C,矩阵C表示从矩阵A中遍历得到的矩阵B中所有起始节点的下一跳。
下面以图3所示的业务场景为例,结合图4-图13对本申请实施例提供的图数据库进行图计算的方法的一种具体的实现方式进行详细描述。应理解,图4-图13的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的图4-图13的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
图3是本申请实施例提供的一种路由器业务场景的示意性框图。如图3所示,该路由器业务场景中包括路由器300,该路由器300中包括一个或多个业务应用(application,APP),转发引擎服务(forwarding engine service,FES),FEI以及图数据库GMDB。
应理解,本申请实施例对图数据库不做具体限定,图3中是以GMDB图数据库为例进行说明的。
业务APP,相当于上文中的用户,其可以向FES发送图计算请求。
FES,用于为路由器300提供转发管理服务,相当于上文中的客户端。其可以和一个或多个业务APP之间进行数据交互。例如,FES进程可以接收一个或多个业务APP发送的图计算请求,并将该图计算请求发送给GMDB。
GMDB,与FES进程建立连接,用于接收FES进程发送的图计算请求,处理该图计算请求,得到图计算的计算结果。GMDB还可以将图计算的计算结果通过推送通道返回给FES进程。下面会结合具体的例子,对GMDB处理图计算请求,得到图计算的计算结果的具体实现方式进行举例说明,此处暂不详述。
FEI,接收FES进程发送的图计算的计算结果。
下面以GMDB接收到的图计算请求为对查询某个path的连通性为例,对GMDB处理该图计算请求,并得到图计算的计算结果的具体实现过程进行举例说明。
应理解,FES如果在某个path上插入/删除点时,如果该path由连通变为不连通,或者由不连通变成连通,GMDB需要能够检查出来该path是否连通,并将这个信息通过FES通知给用户。path是指由多个点和边构成的一颗树,path的连通性是指如果从树根节点出发,在满足不同的边之间的关系(例如,边和边之间是AND的关系,或边和边之间是OR的关系)的情况下,可以到达该树的叶子节点,则说明存在一个连通的path。
GMDB在获得查询某个path的连通性的图计算请求后,针对业务的path查询问题,可以将path表示为一种特定的图模式(graph pattern),那么path的连通性查询就变成了图的连通性判断问题。即从一个具体的点出发,判断该点在某个特定的图模式(graphpattern)下是否完备。作为示例,针对该问题,可以通过图遍历算法,例如,广度优先遍历(breadth-first search,BFS)解决。
举例说明,一种可能的图模式如图4所示。该图模式中的path由8个点标签(vertexlabel,VL)、7个边标签(edge label,EL)构成,每个VL代表多个点的集合,也就是说,每个VL中包括多个点。图4中的8个VL分别为VL-A,VL-B,VL-C,VL-D,VL-E,VL-F,VL-G,VL-H,7个EL分别为EL-AB,EL-AC,EL-BD,EL-BE,EL-CF,EL-DG,EL-FH。在图4中,假设EL-AB和EL-AC之间是AND关系,也即EL-AB和EL-AC两个需要同时存在,VL-A才是连通的。假设EL-BD和EL-BE之间是OR关系,也即EL-BD和EL-BE只要有一个存在,VL-B就是连通的。
本申请实施例中,GMDB可以针对查询图4所示的path的连通性的图计算请求,为该图计算请求生成对应的执行计划。由于BFS是层次遍历,可以将图4所示的图模式分成三层,每一层的遍历操作通过SpGEMM图算子实现,SpGEMM图算子结果的判断或过滤通过SpRef图算子实现。
一个示例,对于图4所示的第一层而言,GMDB可以构造图5所示的执行计划,该执行计划中包括SpGEMM图算子和SpRef图算子。其中,SpGEMM图算子用于获得第一层的VL-A中包括的多个点中的某些点出发的边。由于第一层中的两个边(EL-AB和EL-AC)之间存在AND关系,SpRef图算子用于根据AND关系对SpGEMM图算子输出的VL-A中某些点出发的边进行过滤。
应理解,由于SpRef图算子依赖SpGEMM图算子的输出,因此,在第一层的执行计划中,可以先执行SpGEMM图算子,再执行SpRef图算子。
下面以通过SpGEMM图算子获得第一层的VL-A中的v1点(VL-A:v1)和VL-A中的v2点(VL-A:v2)出发的边为例,构造两个矩阵作为SpGEMM图算子的输入。如图6所示,SpGEMM图算子的一个输入矩阵为VL-A中的v1点(VL-A:v1)和VL-A中的v2点(VL-A:v2),SpGEMM图算子的另一个输入矩阵为拓扑矩阵,该拓扑矩阵表示VL-A中所有的点和VL-B中所有的点之间的边,以及VL-A中所有的点和VL-C中所有的点之间的边。该两个输入矩阵经过SpGEMM图算子的运算后,得到一个输出矩阵,该输出矩阵表示VL-A中的v1点(VL-A:v1)出发的边和VL-A中的v2点(VL-A:v2)出发的边。例如,输出矩阵的结果为VL-A中的v1点(VL-A:v1)和VL-B中的v1点(VL-B:v1)之间有一条边,VL-A中的v2点(VL-A:v2)和VL-B中的v2点(VL-B:v2)之间有一条边,VL-A中的v2点(VL-A:v2)和VL-C中的v1点(VL-C:v1)之间有一条边。
本申请实施例中,还可以将上述SpGEMM图算子执行得到的输出矩阵进行压缩存储。如图7所示,可以将SpGEMM图算子执行得到的上述输出矩阵压缩存储在中间结果集中。参见图7,该中间结果集中包括点数组和边数组,其中,点数组包括两个点的ID,分别为VL-A:v1和VL-A:v2,边数组中包括VL-A:v1和VL-A:v2出发的边的目的点,例如,VL-B:v1、VL-B:v2、VL-C:v1。图7所示的中间结果集中,点数组中还存储有VL-A中的v1点(VL-A:v1)出发的边在边数组中的范围,VL-A中的v2点(VL-A:v2)出发的边在边数组中的范围。例如,点数组中存储的VL-A:v1出发的边在边数组中的位置为1,表示VL-A:v1和VL-B:v1之间有一条边,点数组中存储的VL-A:v2出发的边在边数组中的范围为2-3,表示VL-A:v2和VL-B:v2之间有一条边,VL-A:v2和VL-C:v1之间有一条边。
下面以通过SpRef图算子对SpGEMM图算子的输出进行过滤为例,构造两个矩阵作为SpRef图算子的输入。SpRef图算子的一个输入矩阵为SpGEMM图算子的输出矩阵,也即图7所示的中间结果集,SpRef图算子的另一个输入矩阵表示VL-A到VL-B之间的边(EL-AB)、VL-A到VL-C之间的边(EL-AC)之间需要满足AND关系,也即VL-A中的某个点既需要和VL-B中某个点之间有边,又和需要和VL-C中某个点之间有边。从图7所示的中间结果集可以看出,VL-A中的v1点(VL-A:v1)和VL-B中的v1点(VL-B:v1)有一条边,但是VL-A:v1和VL-C中的v1点(VL-C:v1)没有边。故判断VL_A中的v1点(VL-A:v1)不满足AND关系。VL-A中的v2点(VL-A:v2)和VL-B中的v2点(VL-B:v2)有一条边,和VL-C中的v1点(VL-C:v1)有一条边,VL-A中的v2点(VL-A:v2)满足AND关系。因此,经过SpRef图算子对SpGEMM图算子的输出进行过滤后,可以将图7所示的中间结果集中的VL-A:v1和所述VL-A:v1出发的到VL-B:v1的边删除。SpRef图算子输出的中间结果集如图8所示,该中间结果集中包括VL-A:v2,VL-A:v2和VL-B:v2之间的边,以及VL-A:v2和VL-C:v1之间的边。
另一个示例,对于图4所示的第二层而言,同样的,GMDB构造的执行计划和图5所示的第一层构造的执行计划相同,包括SpGEMM图算子和SpRef图算子,只是计算的结果不同。第二层执行计划中的SpGEMM图算子用于获得图8所示的中间结果集中VL-B中的v2点(VL-B:v2)出发的边以及VL-C中的v1点(VL-C:v1)出发的边。由于第二层中的两个边(EL-BD和EL-BE)之间存在OR关系,SpRef图算子用于根据OR关系对SpGEMM图算子输出的VL-B中的v2点(VL-B:v2)出发的边以及VL-C中的v1点(VL-C:v1)出发的边进行过滤。
下面以通过SpGEMM图算子获得第二层的VL-B中的v2点(VL-B:v2)和VL-C中的v1点(VL-C:v1)出发的边为例,构造两个矩阵作为SpGEMM图算子的输入。如图9所示,SpGEMM图算子的一个输入矩阵为VL-B中的v2点(VL-B:v2)和VL-C中的v1点(VL-C:v1),SpGEMM图算子的另一个输入矩阵为拓扑矩阵,该拓扑矩阵表示VL-B中所有的点和VL-D中所有的点之间的边,VL-B中所有的点和VL-E中所有的点之间的边,以及VL-C中所有的点和VL-F中所有的点之间的边。该两个输入矩阵经过SpGEMM图算子的运算后,得到一个输出矩阵,该输出矩阵表示VL-B中的v2点(VL-B:v2)出发的边和VL-C中的v1点(VL-C:v1)出发的边。例如,输出矩阵的结果为VL-B中的v2点(VL-B:v2)和VL-D中的v1点(VL-D:v1)之间有一条边,VL-C中的v1点(VL-C:v1)和VL-F中的v1点(VL-F:v1)之间有一条边。
本申请实施例中,还可以将上述第二层执行计划中SpGEMM图算子执行得到的输出矩阵进行压缩存储。例如,可以将SpGEMM图算子执行得到的输出矩阵压缩存储至图8所示的中间结果集中,得到如图10所示的中间结果集。参见图10,该中间结果集在图8所示的中间结果集的基础之上,在点数组中增加了两个点的ID,分别为VL-B:v2以及VL-C:v1,在边数组中增加了VL-B:v2以及VL-C:v1出发的边的目的点,例如,VL-D:v1和VL-F:v1。同样的,图10所示的中间结果集中,点数组中还存储有VL-B中的v2点(VL-B:v2)出发的边在边数组中的范围,VL-C中的v1点(VL-C:v1)出发的边在边数组中的范围。例如,点数组中存储的VL-B:v2出发的边在边数组中的位置为3,表示VL-B:v2和边数组中的VL-D:v1之间有一条边。点数组中存储的VL-C:v1出发的边在边数组中的位置为4,表示VL-C:v1和边数组中的VL-F:v1之间有一条边。
下面以通过第二层执行计划中的SpRef图算子对上述SpGEMM图算子的输出进行过滤为例,构造两个矩阵作为第二层执行计划中SpRef图算子的输入。SpRef图算子的一个输入矩阵为SpGEMM图算子的输出矩阵,也即图10所示的中间结果集。SpRef图算子的另一个输入矩阵表示VL-B到VL-D之间的边(EL-BD)、VL-B到VL-E之间的边(EL-BE)之间需要满足OR关系,也即VL-B中的某个点需要和VL-D或VL-E中某个点之间有边即可。从图10所示的中间结果集可以看出,VL-B中的v2点(VL-B:v2)和VL-D中的v1点(VL-D:v1)之间有一条边,因此,SpRef图算子的输出与图10所示的中间结果集相同。
另一个示例,对于图4所示的第三层而言,同样的,GMDB构造的执行计划和图5所示的第一层构造的执行计划相同,包括SpGEMM图算子和SpRef图算子,只是计算的结果不同。第二层执行计划中的SpGEMM图算子用于获得图10所示的中间结果集中VL-D中的v1点(VL-D:v1)出发的边以及VL-F中的v1点(VL-F:v1)出发的边。SpRef图算子用于对SpGEMM图算子输出的VL-D中的v1点(VL-D:v1)出发的边以及VL-F中的v1点(VL-F:v1)出发的边进行过滤。具体的实现过程与上文中描述的第一层的计算过程以及第二层的计算过程类似,具体的请参考上文中的描述,此处不再赘述。
本申请实施例中,第三层的SpRef图算子可以将输出的矩阵经过压缩后存储至图10所示的中间结果集,得到图11所示的中间结果集。参见图11,该中间结果集在图10所示的中间结果集的基础之上,在点数组中增加了两个点的ID,分别为VL-D:v1以及VL-F:v1,在边数组中增加了VL-D:v1以及VL-F:v1出发的边的目的点,例如,VL-G中的v1点(VL-G:v1)和VL-H中的v1点(VL-H:v1)。同样的,图11所示的中间结果集中,点数组中还存储有VL-D:v1出发的边在边数组中的范围,VL-F:v1出发的边在边数组中的范围。例如,点数组中存储的VL-D:v1出发的边在边数组中的位置为5,表示VL-D:v1和边数组中的VL-G:v1之间有一条边。点数组中存储的VL-F:v1出发的边在边数组中的位置为6,表示VL-F:v1和边数组中的VL-H:v1之间有一条边。
图11所示的中间结果集对应一个连通的path实例,例如,如图12所示,VL-A中的v2点(VL-A:v2)和VL-B中的v2点(VL-B:v2)之间有一条边EL-AB,VL-A中的v2点(VL-A:v2)和VL-C中的v1点(VL-C:v1)之间有一条边EL-AC,VL-B中的v2点(VL-B:v2)和VL-D中的v1点(VL-D:v1)之间有一条边EL-BD,VL-C中的v1点(VL-C:v1)和VL-F中的v1点(VL-F:v1)之间有一条边EL-CF,VL-D中的v1点(VL-D:v1)和VL-G中的v1点(VL-G:v1)之间有一条边EL-DG,VL-F中的v1点(VL-F:v1)和VL-H中的v1点(VL-H:v1)之间有一条边EL-FH。
图13是本申请实施例提供的GMDB针对图4所示的图模式构造的执行计划。该执行计划中包括上述第一层的执行计划,第二层的执行计划以及第三层的执行计划,即包括三个SpGEMM图算子和三个SpRef图算子。并且,第一层的执行计划执行完后,执行第二层的执行计划,再执行第三层的执行计划,因此,图13所示的执行计划中包括的各个图算子也有一定的执行顺序,即按照以下顺序执行:SpGEMM图算子、SpRef图算子、SpGEMM图算子、SpRef图算子、SpGEMM图算子、SpRef图算子。
上述技术方案中,使用矩阵运算的图数据库在图计算上通过图算子完成图的完备性判断,既保证了高性能的图计算,也保证了系统的可扩展性。
上文结合图1至图13,详细描述了本申请实施例提供的方法,下面将结合图14-图17,详细描述本申请装置的实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图14是本申请实施例提供的一种图计算的装置1400的示意性框图。该图计算的装置1400可以通过软件、硬件或者两者的结合实现。本申请实施例提供的图计算的装置1400可以实现本申请实施例图1-图13所示的方法流程,该图计算的装置1400包括:接收模块1410,生成模块1420,执行模块1430。其中,接收模块1410用于接收图计算请求,所述图计算请求用于请求对所述图数据库中存储的第一图数据进行处理;生成模块1420用于根据所述图计算请求,生成所述图计算请求对应的执行计划,所述执行计划中包括n个图算子,每个所述图算子表示矩阵之间的运算,所述矩阵用于表示所述第一图数据,所述n为大于或等于1的整数;执行模块1430用于执行所述执行计划,获得所述图计算请求对应的执行结果。
可选地,所述执行计划中还包括所述n个图算子的执行顺序。
可选地,所述执行计划中包括第一图算子和第二图算子,所述第一图算子的输出矩阵为所述第二图算子的输入矩阵,所述第一图算子的输出矩阵和所述第二图算子的输入矩阵的数据格式相同。
可选地,所述第一图算子的输出矩阵采用矩阵压缩的方式存储在第一存储空间。
可选地,所述第一存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述第一图数据对应的图中的多个点的标识ID,所述边数组中包括每个所述点出发的边。
可选地,所述矩阵采用矩阵压缩的方式存储在第二存储空间。
可选地,所述第二存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述矩阵对应的图中的多个点的ID,每个所述点对应一个边数组,所述边数组以链表的形式存储在所述第二存储空间。
可选地,所述第一图数据包括属性数据和拓扑数据,所述属性数据表示所述第一图数据对应的图中点或边的属性,所述拓扑数据表示所述图中点和点之间的关联关系。
可选地,所述接收模块1410具体用于:通过客户端接收用户发送的所述图计算请求。
可选地,所述装置1400还包括:发送模块1440,用于通过客户端将所述图计算请求对应的执行结果返回给用户。
这里的图计算的装置1400可以以功能模块的形式体现。这里的术语“模块”可以通过软件和/或硬件形式实现,对此不作具体限定。
例如,“模块”可以是实现上述功能的软件程序、硬件电路或二者结合。示例性的,接下来以接收模块为例,介绍接收模块的实现方式。类似的,其他模块,例如生成模块,执行模块的实现方式可以参考接收模块的实现方式。
接收模块作为软件功能单元的一种举例,接收模块可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,接收模块可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
接收模块作为硬件功能单元的一种举例,接收模块可以包括至少一个计算设备,如服务器等。或者,接收模块也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
接收模块包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。接收模块包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,接收模块包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
因此,在本申请的实施例中描述的各示例的模块,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
需要说明的是:上述实施例提供的图计算的装置在执行上述方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。例如,接收模块可以用于执行图数据库进行图计算的方法中的任意步骤,生成模块可以用于执行图数据库进行图计算的方法中的任意步骤,执行模块可以用于执行图数据库进行图计算的方法中的任意步骤。接收模块、生成模块和执行模块负责实现的步骤可根据需要指定,通过接收模块、生成模块和执行模块分别实现图数据库进行图计算的方法中不同的步骤来实现图计算的装置的全部功能。
另外,上述实施例提供的图计算的装置与图数据库进行图计算的方法实施例属于同一构思,其具体实现过程详见上文中的方法实施例,这里不再赘述。
本申请实施例提供的图数据库进行图计算的方法可以由计算设备执行,该计算设备也可以被称为计算机系统。包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括处理单元、内存和内存控制单元等硬件,随后对该硬件的功能和结构进行详细说明。该操作系统是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用程序。并且,可选地,该计算机系统是智能手机等手持设备,或个人计算机等终端设备,本申请并未特别限定,只要能够通过本申请实施例提供的方法即可。本申请实施例提供的图数据库进行图计算的方法的执行主体可以是计算设备,或者,是计算设备中能够调用程序并执行程序的功能模块。
下面结合图15,对本申请实施例提供的一种计算设备进行详细描述。
图15是本申请实施例提供的一种计算设备1500的架构示意图。该计算设备1500可以是服务器或者计算机或者其他具有计算能力的设备。图15所示的计算设备1500包括:至少一个处理器1510和存储器1520。
应理解,本申请不限定计算设备1500中的处理器、存储器的个数。
处理器1510执行存储器1520中的指令,使得计算设备1500实现本申请提供的方法。或者,处理器1510执行存储器1520中的指令,使得计算设备1500实现本申请提供的各功能模块,从而实现本申请提供的方法。
可选地,计算设备1500还包括通信接口1530。通信接口1530使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1500与其他设备或通信网络之间的通信。
可选地,计算设备1500还包括系统总线1540,其中,处理器1510、存储器1520和通信接口1530分别与系统总线1540连接。处理器1510能够通过系统总线1540访问存储器1520,例如,处理器1510能够通过系统总线1540在存储器1520中进行数据读写或代码执行。该系统总线1540是快捷外设部件互连标准(peripheral component interconnectexpress,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述系统总线1540分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
一种可能的实现方式,处理器1510的功能主要是解释计算机程序的指令(或者说,代码)以及处理计算机软件中的数据。其中,该计算机程序的指令以及计算机软件中的数据能够保存在存储器1520或者缓存1516中。
可选地,处理器1510可能是集成电路芯片,具有信号的处理能力。作为示例而非限定,处理器1510是通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其中,通用处理器是微处理器等。例如,该处理器1510是中央处理单元(central processing unit,CPU)。
可选地,每个处理器1510包括至少一个处理单元1512和内存控制单元1514。
可选地,处理单元1512也称为核心(core)或内核,是处理器最重要的组成部分。处理单元1512是由单晶硅以一定的生产工艺制造出来的,处理器所有的计算、接受命令、存储命令、处理数据都由核心执行。处理单元分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。各种处理单元都具有固定的逻辑结构,例如,处理单元包括例如,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。
一种实现举例,内存控制单元1514用于控制存储器1520与处理单元1512之间的数据交互。具体地说,内存控制单元1514从处理单元1512接收内存访问请求,并基于该内存访问请求控制针对内存的访问。作为示例而非限定,内存控制单元是内存管理单元(memorymanagement unit,MMU)等器件。
一种实现举例,各内存控制单元1514通过系统总线进行针对存储器1520的寻址。并且在系统总线中配置仲裁器(图15中未示出),该仲裁器负责处理和协调多个处理单元1512的竞争访问。
一种实现举例,处理单元1512和内存控制单元1514通过芯片内部的连接线,例如地址线,通信连接,从而实现处理单元1512和内存控制单元1514之间的通信。
可选地,每个处理器1510还包括缓存1516,其中,缓存是数据交换的缓冲区(称作cache)。当处理单元1512要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从存储器中找。由于缓存的运行速度比存储器快得多,故缓存的作用就是帮助处理单元1512更快地运行。
存储器1520能够为计算设备1500中的进程提供运行空间,例如,存储器1520中保存用于生成进程的计算机程序(具体地说,是程序的代码)。计算机程序被处理器运行而生成进程后,处理器在存储器1520中为该进程分配对应的存储空间。进一步的,上述存储空间进一步包括文本段、初始化数据段、位初始化数据段、栈段、堆段等等。存储器1520在上述进程对应的存储空间中保存进程运行期间产生的数据,例如,中间数据,或过程数据等等。
可选地,存储器也称为内存,其作用是用于暂时存放处理器1510中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,处理器1510就会把需要运算的数据调到内存中进行运算,当运算完成后处理单元1512再将结果传送出来。
作为示例而非限定,存储器1520是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasablePROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。应注意,本文描述的系统和方法的存储器1520旨在包括但不限于这些和任意其它适合类型的存储器。
以上列举的计算设备1500的结构仅为示例性说明,本申请并未限定于此,本申请实施例的计算设备1500包括现有技术中计算机系统中的各种硬件,例如,计算设备1500还包括除存储器1520以外的其他存储器,例如,磁盘存储器等。本领域的技术人员应当理解,计算设备1500还可以包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,上述计算设备1500还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,上述计算设备1500也可仅仅包括实现本申请实施例所必须的器件,而不必包括图15中所示的全部器件。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图16所示,所述计算设备集群包括至少一个计算设备1500。计算设备集群中的一个或多个计算设备1500中的存储器1520中可以存有相同的用于执行上述方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1500中的存储器1520也可以分别存有用于执行上述方法的部分指令。换言之,一个或多个计算设备1500的组合可以共同执行上述方法的指令。
需要说明的是,计算设备集群中的不同的计算设备1500中的存储器1520可以存储不同的指令,分别用于执行图计算的装置的部分功能。也即,不同的计算设备1500中的存储器1520存储的指令可以实现将图计算的装置中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图17示出了一种可能的实现方式。如图17所示,两个计算设备1500A和1500B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。
应理解,图17中示出的计算设备1500A的功能也可以由多个计算设备1500完成。同样,计算设备1500B的功能也可以由多个计算设备1500完成。
本实施例中,还提供了一种包含指令的计算机程序产品,所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当其在计算设备上运行时,使得计算设备执行上述所提供的方法,或者使得该计算设备实现上述提供的装置的功能。
本实施例中,还提供了一种包含指令的计算机程序产品,所述计算机程序产品可以是包含指令的,能够运行在计算设备集群上或被储存在任何可用介质中的软件或程序产品。当其由计算设备集群运行时,使得计算设备集群执行上述所提供的方法,或者使得该计算设备集群实现上述提供的装置的功能。
本实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,当计算机可读存储介质中的指令在计算设备上被执行时,使得计算设备执行上述所提供的方法。
本实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,当计算机可读存储介质中的指令由计算设备集群执行时,使得计算设备集群执行上述所提供的方法。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (26)

1.一种图计算的方法,其特征在于,包括:
图数据库接收图计算请求,所述图计算请求用于请求对所述图数据库中存储的第一图数据进行处理;
所述图数据库根据所述图计算请求,生成所述图计算请求对应的执行计划,所述执行计划中包括n个图算子,每个所述图算子表示矩阵之间的运算,所述矩阵用于表示所述第一图数据,所述n为大于或等于1的整数;
所述图数据库执行所述执行计划,获得所述图计算请求对应的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述执行计划中还包括所述n个图算子的执行顺序。
3.根据权利要求1或2所述的方法,其特征在于,所述执行计划中包括第一图算子和第二图算子,所述第一图算子的输出矩阵为所述第二图算子的输入矩阵,所述第一图算子的输出矩阵和所述第二图算子的输入矩阵的数据格式相同。
4.根据权利要求3所述的方法,其特征在于,所述第一图算子的输出矩阵采用矩阵压缩的方式存储在第一存储空间。
5.根据权利要求4所述的方法,其特征在于,所述第一存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述第一图数据对应的图中的多个点的标识ID,所述边数组中包括每个所述点出发的边。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述矩阵采用矩阵压缩的方式存储在第二存储空间。
7.根据权利要求6所述的方法,其特征在于,所述第二存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述矩阵对应的图中的多个点的ID,每个所述点对应一个边数组,所述边数组以链表的形式存储在所述第二存储空间。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述第一图数据包括属性数据和拓扑数据,所述属性数据表示所述第一图数据对应的图中点或边的属性,所述拓扑数据表示所述图中点和点之间的关联关系。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述图数据库接收图计算请求,包括:
所述图数据库通过客户端接收用户发送的所述图计算请求。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述方法还包括:
所述图数据库通过客户端将所述图计算请求对应的执行结果返回给用户。
11.一种图计算的装置,其特征在于,包括:
接收模块,用于接收图计算请求,所述图计算请求用于请求对所述图数据库中存储的第一图数据进行处理;
生成模块,用于根据所述图计算请求,生成所述图计算请求对应的执行计划,所述执行计划中包括n个图算子,每个所述图算子表示矩阵之间的运算,所述矩阵用于表示所述第一图数据,所述n为大于或等于1的整数;
执行模块,用于执行所述执行计划,获得所述图计算请求对应的执行结果。
12.根据权利要求11所述的装置,其特征在于,所述执行计划中还包括所述n个图算子的执行顺序。
13.根据权利要求11或12所述的装置,其特征在于,所述执行计划中包括第一图算子和第二图算子,所述第一图算子的输出矩阵为所述第二图算子的输入矩阵,所述第一图算子的输出矩阵和所述第二图算子的输入矩阵的数据格式相同。
14.根据权利要求13所述的装置,其特征在于,所述第一图算子的输出矩阵采用矩阵压缩的方式存储在第一存储空间。
15.根据权利要求14所述的装置,其特征在于,所述第一存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述第一图数据对应的图中的多个点的标识ID,所述边数组中包括每个所述点出发的边。
16.根据权利要求11至15中任一项所述的装置,其特征在于,所述矩阵采用矩阵压缩的方式存储在第二存储空间。
17.根据权利要求16所述的装置,其特征在于,所述第二存储空间中包括至少一个点数组和至少一个边数组,所述点数组中包括所述矩阵对应的图中的多个点的ID,每个所述点对应一个边数组,所述边数组以链表的形式存储在所述第二存储空间。
18.根据权利要求11至17中任一项所述的装置,其特征在于,所述第一图数据包括属性数据和拓扑数据,所述属性数据表示所述第一图数据对应的图中点或边的属性,所述拓扑数据表示所述图中点和点之间的关联关系。
19.根据权利要求11至18中任一项所述的装置,其特征在于,所述接收模块具体用于:通过客户端接收用户发送的所述图计算请求。
20.根据权利要求11至19中任一项所述的装置,其特征在于,所述装置还包括:
发送模块,用于通过客户端将所述图计算请求对应的执行结果返回给用户。
21.一种计算设备,其特征在于,包括处理器和存储器,所述处理器用于执行所述存储器中存储的指令,以使得所述计算设备执行如权利要求1至10中任一项所述的方法。
22.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1至10中任一项所述的方法。
23.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备运行时,使得所述计算设备执行如权利要求的1至10中任一项所述的方法。
24.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求的1至10中任一项所述的方法。
25.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如权利要求1至10中任一项所述的方法。
26.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1至10中任一项所述的方法。
CN202211033506.3A 2022-08-26 2022-08-26 图计算的方法、装置以及计算设备 Pending CN117668302A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211033506.3A CN117668302A (zh) 2022-08-26 2022-08-26 图计算的方法、装置以及计算设备
PCT/CN2023/105484 WO2024041229A1 (zh) 2022-08-26 2023-07-03 处理复杂图算法的方法、装置以及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211033506.3A CN117668302A (zh) 2022-08-26 2022-08-26 图计算的方法、装置以及计算设备

Publications (1)

Publication Number Publication Date
CN117668302A true CN117668302A (zh) 2024-03-08

Family

ID=90012436

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211033506.3A Pending CN117668302A (zh) 2022-08-26 2022-08-26 图计算的方法、装置以及计算设备

Country Status (2)

Country Link
CN (1) CN117668302A (zh)
WO (1) WO2024041229A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108292241B (zh) * 2015-10-28 2022-05-24 谷歌有限责任公司 处理计算图
US11710033B2 (en) * 2018-06-12 2023-07-25 Bank Of America Corporation Unsupervised machine learning system to automate functions on a graph structure
CN110909191A (zh) * 2018-09-18 2020-03-24 北京京东金融科技控股有限公司 图数据处理方法及装置、存储介质、电子设备
CN114444715A (zh) * 2021-12-31 2022-05-06 北京三快在线科技有限公司 图数据处理方法、装置、系统、电子设备及可读存储介质

Also Published As

Publication number Publication date
WO2024041229A1 (zh) 2024-02-29

Similar Documents

Publication Publication Date Title
US9418101B2 (en) Query optimization
US10915532B2 (en) Supporting a join operation against multiple NoSQL databases
Xuan et al. Voronoi-based multi-level range search in mobile navigation
CN104077723B (zh) 一种社交网络推荐系统及方法
CN104809242A (zh) 一种基于分布式结构的大数据聚类方法和装置
CN104820708A (zh) 一种基于云计算平台的大数据聚类方法和装置
CN104809244A (zh) 一种大数据环境下的数据挖掘方法和装置
CN114077680A (zh) 一种图数据的存储方法、系统及装置
US20200082026A1 (en) Graph data processing
US20230385353A1 (en) Spatial search using key-value store
Rudolf et al. Synopsys: large graph analytics in the SAP HANA database through summarization
CN113656670A (zh) 面向飞行数据的时空轨迹数据管理分析方法和装置
Lee et al. Lightweight indexing and querying services for big spatial data
CN115905630A (zh) 一种图数据库查询方法、装置、设备及存储介质
James et al. Hybrid database system for big data storage and management
CN107257356B (zh) 一种基于超图分割的社交用户数据优化放置方法
US11030177B1 (en) Selectively scanning portions of a multidimensional index for processing queries
Chaves Carniel Defining and designing spatial queries: the role of spatial relationships
CN108319604A (zh) 一种hive中大小表关联的优化方法
CN117668302A (zh) 图计算的方法、装置以及计算设备
Jouili et al. imGraph: A distributed in-memory graph database
Bachiega et al. An architecture for cost optimization in the processing of big geospatial data in public cloud providers
Frye et al. Big data storage techniques for spatial databases: implications of big data architecture on spatial query processing
Zhang et al. A distributed computation of the shortest path in large-scale road network
CN104408184A (zh) 基于数据立方体的可视化数据的二维显示方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication