CN116150437B - 图查询方法 - Google Patents
图查询方法 Download PDFInfo
- Publication number
- CN116150437B CN116150437B CN202310413647.6A CN202310413647A CN116150437B CN 116150437 B CN116150437 B CN 116150437B CN 202310413647 A CN202310413647 A CN 202310413647A CN 116150437 B CN116150437 B CN 116150437B
- Authority
- CN
- China
- Prior art keywords
- graph
- sub
- target
- query
- node
- 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
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/9032—Query formulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供图查询方法,应用于客户端,包括:解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构;根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端;接收所述服务端根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图,并将所述目标子图返回至所述用户。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及图查询方法。
背景技术
近年来,随着平台型互联网的不断发展,各大网站都积累了海量的数据。数据的增长,一方面带来了更有价值的信息,另一方面也极大地增加了从数据中提取信息的难度。因此,如何高效地从不断增长的海量数据中提取出有价值的信息成为了棘手的难题。
数据和数据之间的关联是一种极有价值的信息,在社交、购物等网站的推荐系统中被广泛应用。目前,各大网站往往采用关系型数据库来存储各类数据以及它们之间的关联。然而,关系型数据库天生不是为关联而设计,因此需要引入额外的表来维护各数据之间的联系,并需要通过外键来进行约束。这样的设计导致,当需要跨过多重联系去进行事物间的匹配时,数据库就需要进行多张表之间的连接,其计算代价就会变得非常高昂。当数据量上升到一定规模后,基于关系型数据库的设计,将不能在合理的时间内产生计算结果。这就导致了其不能被应用在需要高实时性的场景中。
因此,急需提供一种高效的分析数据间联系的图查询方法。
发明内容
有鉴于此,本说明书实施例提供了三种图查询方法。本说明书一个或者多个实施例同时涉及两种图查询装置,一种图查询系统,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种图查询方法,应用于客户端,包括:
解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构;
根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;
将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端;
接收所述服务端根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图,并将所述目标子图返回至所述用户。
根据本说明书实施例的第二方面,提供了一种图查询装置,应用于客户端,包括:
图模式解析节点,被配置为解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构;
策略优化节点,被配置为根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;
所述策略优化节点,进一步被配置为将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端;
所述图模式解析节点,进一步被配置为接收所述服务端根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图,并将所述目标子图返回至所述用户。
根据本说明书实施例的第三方面,提供了一种图查询方法,应用于服务端,包括:
接收客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,其中,所述数据流结构为所述客户端对接收的子图查询语句进行处理获得;
根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端。
根据本说明书实施例的四方面,提供了一种图查询装置,应用于服务端,包括:
分布式流引擎处理节点,被配置为接收客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,其中,所述数据流结构为所述客户端对接收的子图查询语句进行处理获得;
所述分布式流引擎处理节点,进一步被配置为根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端。
根据本说明书实施例的五方面,提供了一种图查询方法,应用于图查询系统,所述图查询系统包括客户端、服务端,其中,所述方法包括:
所述客户端,解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取,将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至所述服务端;
所述服务端,接收所述客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端;
所述客户端,接收所述服务端返回的所述目标子图,并将所述目标子图返回至所述用户。
根据本说明书实施例的六方面,提供了一种图查询系统,所述图查询系统包括客户端、服务端,其中,
所述客户端,被配置为解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取,将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至所述服务端;
所述服务端,被配置为接收所述客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端;
所述客户端,进一步被配置为接收所述服务端返回的所述目标子图,并将所述目标子图返回至所述用户。
根据本说明书实施例的第七方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述图查询方法的步骤。
根据本说明书实施例的第八方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述图查询方法的步骤。
根据本说明书实施例的第九方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述图查询方法的步骤。
本说明书一个实施例实现了一种图查询方法,应用于客户端,包括:解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构;根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端;接收所述服务端根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图,并将所述目标子图返回至所述用户。具体的,该图查询方法提供了一种基于子图统计信息对图模式匹配查询的方法,充分考虑图数据结构中存储的子图统计信息和信息间存在的联系,结合预设计算方式产生在时间以及空间复杂度上较优的目标子图查询执行策略,并将该目标子图查询执行策略编码为服务端可执行的数据流结构,使得后续服务端可以基于该数据流结构高效的分析数据间联系,并简单、快速的对图模式进行匹配查询。
附图说明
图1是本说明书一个实施例提供的一种图查询方法的具体场景示意图;
图2是本说明书一个实施例提供的一种应用于客户端的图查询方法的流程图;
图3是本说明书一个实施例提供的一种图查询方法中图数据结构的示意图;
图4是本说明书一个实施例提供的一种图查询方法的具体处理过程流程图;
图5是本说明书一个实施例提供的一种应用于服务端的图查询方法的流程图;
图6是本说明书一个实施例提供的一种应用于图查询系统的图查询方法的流程图;
图7是本说明书一个实施例提供的一种应用于客户端的图查询装置的结构示意图;
图8是本说明书一个实施例提供的一种应用于服务端的图查询装置的结构示意图;
图9是本说明书一个实施例提供的一种图查询系统的结构示意图;
图10是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
另外,需要说明的是,本说明书实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
图:Graph,由点和边构成的抽象数据结构。
属性图:PropertyGraph,图上的点和边可以带上各种标签(如商品、用户等)和属性(如姓名、职业等),用来表示其所属的类别或性质。
图模式:GraphPattern,一种特殊的带标签的属性图,也可以通俗的理解为属性图的子图。
同态映射:HomomorphismMapping,从图模式Q到属性图G的一组映射;一对映射的两侧,同为点或同为边,且具有相同的标签。特别地,对于一对边的映射,映射两端起点和终点均需具有对应的映射。
图模式匹配:GraphPatternMatch,给定一张属性图G和一个图模式Q,从属性图G中找到所有从图模式Q的顶点集到属性图G的顶点集的同态映射。
图模式匹配查询系统:GraphPatternMatchSystem,专门用于图模式匹配查询的系统。
交互式:Interactively,对用户提交的查询做出及时反馈。
GLogue:GLogue是一种基于图的数据结构,用于存储原数据图中的高维度统计信息。在传统的数据库系统中,也有基于表格的Catalogue数据结构来存储高维度统计信息。而GLogue的创新点在于,用图来存储这些信息,不仅存储了具体的数值,更存储了这些信息之间的联系,使得GLogue在构建和使用过程中的效率得到了极大地提升。
GLogS:一个基于GLogue的大规模图模式匹配系统。
GLogue Manager:GLogue管理模块;即GLogS中负责对GLogue这一图数据结构进行创建、管理和维护的模块。
Graph Sparsifier:图稀疏模块,它是GLogS中负责对原数据图进行采样的模块,其作用为,在尽可能保留原数据图结构信息的前提下,生成一张的稀疏的小图。此后,GLogue Manager会先在小图上进行对GLogue中所需信息的初步统计,然后根据统计性质进行放缩,来生成对原数据图上高维度统计信息的估计;这样的设计能极大地加快GLogue的构建速度。
NP-Complete:NP完全问题,是计算复杂度理论中,决定性问题的等级之一。NP完全问题是NP与NP困难问题的交集,是NP中最难的决定性问题,所有NP问题都可以在多项式时间内被归约(reduce to)为NP完全问题。倘若任何NP完全问题得到多项式时间内的解法,则该解法就可应用在所有NP问题上,亦可证明NP问题等于P问题。可以通俗地理解为,NP-Complete问题是具有很高计算复杂度的,需要消耗大量计算资源的问题。
Worst-Case-Optimal Join:最坏情况下较优Join;在图查询和数据库查询中,Worst-Case-Optimal Join是一类Join算法的统称。和传统的Binary Join算法相比,这类Join算法能够对计算过程中的中间结果数量提供上界限的保证,即在最坏情况下的较优化,因此往往能够提供比Binary Join更好的性能表现。
Pattern Parser:Pattern解析器,在GLogS中,用户输入的Pattern往往由Gremlin,Cypher等语言进行描述。为了对这些Pattern结构进行进一步分析,需要将由Gremlin, Cypher等语言描述的Pattern转换为GLogS中内建的数据结构PatternDesc,而这一过程就由Pattern Parser负责。
Plan Optimizer:执行策略优化器,在经由Pattern Parser得到PatternDesc后,Plan Optimizer会使用GLogue中存储的高维度统计信息,来对PatternDesc进行结构分析和拆解,然后生成优选的执行plan(策略),最后将生成的执行plan转换为DataflowDesc(数据流结构)的形式,以发送给各个Dataflow Executor(数据流执行器)执行。
Gremlin Match:Gremlin语言中的match语句,用来提供Pattern Match的语义。
PatternDesc:Pattern描述结构,它是用户输入的Pattern经由Pattern Parser转换后生成的数据结构;PatternDesc以更结构化的视角来对Pattern进行描述,以便PlanOptimizer进行优化。
Cypher:Cypher 是一种图查询语言,用户可以使用它来从图中抽取出所需要的信息。
GraphQL:GraphQL是一种面向API(Application Programming Interface,应用程序编程接口)的查询语言和服务端的运行时,可以被用于图查询中。
DataflowDesc:Dataflow描述结构,它是一个包含了一系列Dataflow运算算子的数据结构,在GLogS中用于描述某个Pattern Match请求的具体执行策略,其由PlanOptimizer生成,并在之后被发往各个Dataflow Executor进行具体的执行。
Map:Map是Dataflow运算中一种常见的算子,其功能是将Dataflow中的每个元素进行转换为对应的一个元素;假设原Dataflow中的元素为{x1,x2,x3,...,xn},那么经过map算子后,Dataflow变为{map(x1),map(x2),map(x3),...,map(xn)} ,且map(xi)为确切的一个元素。
FlatMap: FlatMap是Dataflow运算中一种常见的算子,其功能是将Dataflow中的每个元素转换为对应的0个,1个或多个元素;假设原Dataflow中的元素为{x1,x2,x3,...,xn},那么经过FlatMap算子后,Dataflow变为{flat_map(x1),flat_map(x2),flat_map(x3),...,flat_map(xn)},且flat_map(xi)为一个 collection,其中可以包含0个,1个或多个元素。
Filter:Filter是Dataflow运算中一种常见的算子,其功能是对Dataflow中的每个元素进行过滤,仅保留下符合要求的元素;假设原Dataflow中的元素为{x1,x2,x3,...,xn},那么经过filter算子后,Dataflow变为{xi|filter(Xi)=true}。
Distributed Dataflow Engine:是一套分布式的Dataflow执行引擎,它可以将一个Dataflow任务分配到一个分布式集群内的各个节点上,以充分利用分布式集群上的计算资源来对Dataflow任务进行加速。
Graph Store:即图存储,将图转换为相应的文件格式以在磁盘上进行存储。
Watermark for Memory Control:内存控制水位线。
Early-Stop Mechanism:执行提早终止机制。
图可以看作顶点和边的集合,也可以被看作节点和关联这些节点联系的集合。图的结构使其天生就适合表示现实乃至虚拟世界中各个事物之间的联系;其中,点代表事物,边代表事物之间的联系。因此,如果以图来存储各类数据及其联系,并在此基础上进行分析,不但在表达上更为清晰明了,而且能极大地提高数据分析的速度和效率。图模式匹配的目的,就是从图数据中挖掘出有意义的子图结构,以用来在更高的维度分析数据之间的关联,提取出更有价值的信息。比如在电商网站中,平台方往往需要知道“用户关注了某个店铺”对最终销量的促成有多大的影响。基于子图模式匹配,我们很容易就能用“用户”,“店铺”,“商品”之间的三角模式来对这个场景进行描述,并在电商网站的数据图中找出所有和该模式匹配的子图(图模式)以进行进一步分析。而以关系型数据库为主导的数据存储体系是难以实现的。
由此可见,图模式匹配存在着巨大的应用前景。然而,图模式匹配本身是一个NP-Complete问题,存在着巨大的优化空间。而目前已存在的一些支持图模式匹配查询的系统,都至少在图描述语言支持、执行策略优化、分布式执行支持、大规模图数据支持中的一项或几项存在着巨大缺陷,无法被应用在实际场景下。
基于此,在本说明书中,提供了三种图查询方法。本说明书一个或者多个实施例同时涉及两种图查询装置,一种图查询系统,一种计算设备,一种计算机可读存储介质以及一种计算机程序,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了根据本说明书一个实施例提供的一种图查询方法的具体场景示意图。
图1中用户102、前端104、后端106;其中,用户102可以理解为目标项目(例如购物网站、社交网站等)的运营人员、开发人员等;前端104以及后端106均可以理解为服务器,如物理服务器或者云服务器等,区别仅在于前端104以及后端106负责的处理事项不同,而在实际应用中由于前端104面向用户,因此下述也称前端104为客户端。
实际应用中,前端104以及后端106构成了一种图查询系统(即图模式匹配查询系统,如GLogS),该图查询方法应用于该图查询系统中,可以以端到端的方式,全面地打通从用户侧输入查询语句到最后执行引擎返回查询结果这一过程中的全部链路,使得图模式匹配查询这一高频需求在实际项目场景中高度可用,如该图查询方法提供的大规模图模式匹配查询能力,可以被充分的应用于大型社交网络、购物网络等场景的数据挖掘和分析中,极大的提升计算效率。
具体实现过程如下所述:
用户102向前端104提交子图查询语句,其中,该子图查询语句可以理解为使用目标图描述语言(如Cypher、GraphSQL、Gremlin等图描述语言)表达的图模式(即子图),例如使用Gremlin语言的match()语句:查询与商家-商品-用户匹配的图模式;前端104接收到该子图查询语句之后,将该使用Gremlin语言的match()语句转换为PatternDesc(即图模式结构,又可以称为子图结构),其中,PatternDesc用于表达图模式,其与语言无关,任何图描述语言所表达的图模式都可以被转换为PatternDesc。
前端104在接收到该PatternDesc之后,将根据预先定义的计算复杂度估计模型,结合预先构建的图数据结构中存储的子图统计信息,生成计算复杂度较低的图模式查询策略,并将该图模式查询策略转换为后端106可执行的DataflowDesc(数据流结构),且将该数据流结构发送至后端106。
后端106在接收到该数据流结构之后,根据分布式集群上的节点对该数据流结构进行解析,以生成相应的执行代码并最终进行图模式匹配查询处理,获得与该查询语句对应的图模式;并将该与该查询语句对应的图模式返回至前端104,由前端104展示给用户102。
本说明书实施例提供的该图查询方法,提供了图描述语言的完整支持,并抽象出PatternDesc这一与语言无关的数据层级,使得图查询系统保留了在未来接入更多语言的能力(即在实际的项目场景中,对图描述语言的完善支持非常重要,图描述语言使得开发人员能够直观、清晰地描述其所需要查询的图模式,而该图查询方法对于图描述语言的支持,不仅提升了开发效率,也有利于后期的图查询系统的维护);同时提出了图数据结构(如GLogue)存储图中的高维统计信息(即子图统计信息)来优化图模式匹配查询方法,使得能够产生更为高效的计算复杂度较低的图模式查询策略进行后续的图模式匹配查询,进一步提升了图模式匹配查询的查询速度;并且后端也通过分布式集群的并行能力、充分的利用硬件资源进行图模式匹配查询,极大的提高图模式匹配查询的执行效率。
参见图2,图2示出了根据本说明书一个实施例提供的一种应用于客户端的图查询方法的流程图,具体该方法包括以下步骤。
步骤202:解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构。
其中,客户端可以理解为上述实施例的前端104;对于用户、子图查询语句的解释也可以参见上述实施例的详细介绍,如用户可以理解为后续待利用匹配查询的图模式进行数据挖掘或者数据分析的开发人员,子图查询语句可以理解为基于任意一种图描述语言(如Cypher、GraphSQL、Gremlin等图描述语言)编辑的图模式查询语句;而子图结构可以理解为上述实施例的PatternDesc,即用于表达图模式的、与图描述语言无关的、客户端可处理的数据结构。
并且,用户针对初始属性图发送的子图查询语句,可以理解为:用户针对目标项目的初始属性图发送的子图查询语句,其中,目标项目可以理解为电商项目、社交项目等,目标项目的初始属性图可以理解为:将目标项目中的事物作为顶点,将事物之间的联系作为边,基于该顶点和边的集合;例如目标项目为电商项目,那么该电商项目中的事物则可以理解为商家、用户、商品等,事物之间的联系则可以理解为用户购买某商家的某商品。
本说明书一个或多个实施例中,客户端包括图模式解析节点、策略优化节点以及管理节点;那么在客户端包括上述三个节点的情况下,解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,可以理解为:图模式解析节点接收用户针对初始属性图发送的子图查询语句,并解析该子图查询语句,生成与该子图查询语句对应的子图结构;例如,图模式解析节点接收用户针对电商项目的初始属性图,发送的使用Gremlin语言编辑的match语句,并解析该用户发送的match语句,生成与该match语句对应的PatternDesc。
而图模式解析节点,在解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构的情况下,为了避免接收到一些无效的子图查询语句,造成后续在服务端进行无效的计算,浪费资源的问题发生;图模式解析节点在对接收的用户发送的子图查询语句进行解析的过程中,会对该子图查询语句的有效性进行评估。具体实现方式如下所述:
所述解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,包括:
接收用户发送的子图查询语句,并对所述子图查询语句进行解析;
在解析结果满足预设查询条件的情况下,生成与所述子图查询语句对应的子图结构;或者
在所述解析结果不满足所述预设查询条件的情况下,为所述用户返回预设查询结果。
其中,预设查询条件可以根据实际应用进行设置,例如预设查询条件可以理解为子图查询语句有效。
本说明书一个或多个实施例中,可以预先定义目标项目的初始属性图中哪些连接是合理的,哪些连接是不合理的,即预先确定该目标项目的初始属性图存在哪些形式的连接,然后将这些合理的连接形式以表或者其他方式预先存储在客户端;如一个商家只可能与商店建立连接,不能与商品建立连接;那么当解析用户发送的、针对该目标项目的初始属性图的子图查询语句之后,发现该子图查询语句中,用户强行将商家与商品进行连接,那么根据预先存储的合理的连接形式,则可以确定该子图查询语句是不合理的,属于无效的查询语句。
那么,在预设查询条件理解为子图查询语句有效的情况下,接收用户发送的子图查询语句,并对所述子图查询语句进行解析;在解析结果满足预设查询条件的情况下,生成与所述子图查询语句对应的子图结构,则可以理解为:图模式解析节点接收用户发送的子图查询语句,并对该子图查询语句进行解析,在根据该解析结果确定该子图查询语句有效的情况下,将该子图查询语句转换为子图结构,即生成与该子图查询语句对应的子图结构。
而在所述解析结果不满足所述预设查询条件的情况下,为所述用户返回预设查询结果,则可以理解为:图模式解析节点在根据解析结果确定该子图查询语句不满足该子图查询语句有效,即该子图查询语句无效的情况下,直接为该用户返回预设查询结果,例如返回一个空集。
本说明书实施例提供的该图查询方法,客户端的图模式解析节点在接收用户发送的子图查询语句之后,在将该子图查询语句转换为对应的子图结构的过程中,可以提前发现一些无效的查询语句,并对该无效的查询语句进行过滤,以避免后续在服务端的分布式集群上进行无效的计算,极大的提升了图模式匹配查询的资源利用率。
步骤204:根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取。
具体的,在客户端的图模式解析节点确定该子图查询语句有效,且将该子图查询语句转换为对应的子图结构之后,则将该子图结构发送至该客户端的策略优化节点,该策略优化节点接收到该子图结构之后,则从根据目标属性图构建的图数据结构获取子图统计信息,然后根据子图统计信息、子图结构,通过预设计算方式确定目标子图查询执行策略。
其中,子图统计信息可以理解为目标属性图(如上述目标项目的属性图,即原始属性图、或者对原始属性图进行采样后获得的属性图)的高维统计信息,该高维统计信息是相对于低维统计信息而言。目标属性图中的低维统计信息,可以理解为各种顶点、边的数量统计。假设一张目标属性图中有用户、商店、商品三种顶点,有用户-关注->商店,用户-购买->商品,商店-提供->商品三种边。那么这张目标属性图的低维统计信息可以被以下表格1表示:
而该目标属性图的高维统计信息,则可以理解为在目标属性图的基础上,对各种图模式的数量进行统计,如以下表格2所示:
即根据表格2可知,子图统计信息则可以理解为针对该目标属性图的所有图模式的统计信息。
其中,预设计算方式可以根据实际应用进行设置,如最短路径算法等。
而在根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略之前,还需要预先构建图数据结构,以便后续可以从该图数据机构中获取目标属性图的子图统计信息。具体实现方式如下所述:
所述根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略之前,还包括:
接收所述服务端发送的目标属性图,并确定所述目标属性图中的子图统计信息;
根据所述子图统计信息以所述目标属性图的形式构建图数据结构,并将所述子图统计信息存储在所述图数据结构。
其中,目标属性图可以理解为上述实施例的目标项目的原始属性图,也可以理解为对该原始属性图进行采样后获得的属性图,具体根据服务端的具体发送确定。
具体的,客户端的管理节点接收服务端发送的目标属性图,并提取所述目标属性图中的子图统计信息,然后根据该子图统计信息以目标属性图的形式,构建图数据结构,并将该子图统计信息存储在该图数据结构。
其中,图数据结构可以理解为上述的GLogue,使用目标属性图的形式来存储提取的高维统计信息,在存储了高维统计信息的该属性图上,每一个点都代表一个图模式,而其统计数量则是作为点的属性来存储,边则表示各个图模式之间的转换关系,比如一条边连接了两个点,这两个点分别代表"用户-关注->商店"和"用户-关注->商店-提供->商品"两个图模式,那么这条边就表示,"用户-关注->商店"这个图模式可以通过添加"-提供->商品"来转换得到"用户-关注->商店-提供->商品"这个图模式。
参见图3,图3示出了本说明书一个实施例提供的一种图查询方法中图数据结构的示意图。
图3中展示的为根据目标属性图的形式来存储提取的高维统计信息,构建的图数据结构,图3中的每个点表示一个图模式,如P1-P11分别表示一个图模式,且每个点上面会存储一些属性,比如图模式的数量,该数量会作为属性存储在图上(如P1中的图模式数量3、P2中的图模式数量2、P3中的图模式数量2等)。
本说明书实施例提供的该图查询方法,提供了图数据结构来存储目标属性图的高维统计信息,并引入图数据结构的管理节点来对图数据结构进行创建以及后续的管理、维护,使得后续可以高效的从图数据结构中提取高维统计信息,进行较优执行策略的生成,使其能够被应用在大规模图场景下;并且将子图统计信息以目标属性图的形式存储在图数据结构中,可以实现该子图统计信息能够复用服务端的图存储来进行可靠的存储和迁移;即图数据结构本身是用目标属性图的形式来存储该子图统计信息的,让其可以复用服务端已经存在的图存储节点,从而节省存储资源。
而在构建了图数据结构之后,在实际应用中,则可以从该图数据结构中获取该目标属性图的子图统计信息,然后根据预先定义的计算复杂度估计模型对该图模型统计信息进行统计,结合子图结构,通过预设计算方法确定目标子图查询执行策略。具体实现方式如下所述:
所述根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,包括:
根据所述子图结构,在所述图数据结构中,确定所述子图结构对应的目标点;
确定与所述目标点关联的子图统计信息,通过最短路径算法确定目标子图查询执行策略。
具体的,策略优化节点在接收子图结构之后,将用其在图数据结构中进行定位,即在图数据结构中找到这个子图结构所对应的目标点,而在图数据结构中定位到该子图结构所对应的目标点之后,则可以利用图中最短路径算法来生成与该子图结构对应的目标子图查询执行策略。
本说明书一个或多个实施例中,由于GLogue大小有限,可能不会包含所有可能的图模式的数量统计信息,所以在刚开始GLogue初始化(构建)时,只会即记录size<= k的图模式和另外一些经常被查询的图模式的数量。例如在GLogue创建过程中,图数据结构的管理节点r(GLogueManage)将首先计算小型图模式(Pattern)以及部分高频出现的Pattern的数量,并将这些Pattern的数量以及Pattern之间的联系以属性图的方式存储在GLogue中。此种情况下,必然存在用户所查询的子图结构并没有相关的高维统计信息被存储在GLogue中的情况,在遇到这种情况时,策略优化节点(Plan Optimizer)会启发式地生成一个子图查询语句(Pattern Match)的执行策略,并记录未被GLogue包含的图模式,之后,一些用户提交查询却并没有录入GLogue中的Pattern,将会被逐步更新入GLogue中。
本说明书实施例提供的该图查询方法,将寻找图模式匹配优选执行策略的问题,转换为了图领域经典的最短路径问题(即在GLogue存储的高维统计信息的属性图上,定位到查询的图模式的点,查找这个点到第1层点的最短路径),通过该方法能够产生更为高效的目标子图查询执行策略,进一步提升了图模式匹配的查询速度;并且极大的降低了开发人员使用图模式查询的门槛和心里负担,有利于推动图模式查询在实际项目场景中的推广。
步骤206:将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端。
具体的,客户端的策略优化节点在确定了目标子图查询执行策略之后,将该目标子图查询执行策略,编码为服务端可处理的数据流结构,并将数据流结构发送至服务端。
步骤208:接收所述服务端根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图,并将所述目标子图返回至所述用户。
具体的,客户端的策略优化节点在将数据流结构发送至服务端之后,还可以接收服务端根据该数据流结构返回的目标子图,并将该目标子图返回至客户端的图模式解析节点,由该图模式解析节点返回至该用户。
即Plan Optimizer在接收到PatternDesc之后,将根据提前定义的计算复杂度估计模型对图数据结构中的高维统计信息进行统计,然后根据统计结果利用最短路径算法,尽可能生成计算复杂度最低的执行策略(即目标子图查询执行策略),即基于统计的估计模型,将生成计算复杂度最低的执行策略转换为图领域的最短路径问题,比如商家-商品-用户这个链路,计算机查询这条链路,有三种可能的策略,以两头为顶点,或者以中间为顶点向两边扩,比如在购物网络中,用户的数量是比较多的,商店次之,商家是最少的,这样如果从用户开始出发的话,可能会触发很多额外的查询;那么通过该计算复杂度估计模型,就可以确定出从商家出发到商店再到用户的计算复杂度是最小的。而当图模式比较大的情况下,就会存在很多个点,这样执行策略就会非常的多,将其转换为找图上的最短路径的问题,就可以比较简单直观的把问题求解出来,找到计算复杂度最低的执行策略,比如首先会拿到所有的商家,第二个中间过程就是商家到商店,第三个中间过程是商店到用户,把前两条的结果当做它的中间过程,需要通过一种方法先统计出前两个中间过程的图模式的数量,确定中间过程的数量估计,有了中间过程的数量估计就可以确定每一步转换的距离,根据图上最短路径的算法,找到较优的执行策略。并将执行策略转换为数据流结构(DataflowDesc),该DataflowDesc中包含了一系列Map,FlatMap,Filter等流处理引擎中常见的算子,以将包含有目标算子的该数据流结构发送给服务端中的流处理引擎进行计算,并将服务端的流处理引擎返回的执行结果返回给用户。具体实现方式如下所述:
所述将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端,包括:
所述将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端,包括:
将所述目标子图查询执行策略,编码为包含目标算子的数据流结构,并将所述数据流结构发送至服务端的数据流处理引擎,其中,所述目标算子为所述数据流处理引擎关联的算子;
相应地,所述接收所述服务端根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图,包括:
接收所述服务端的数据流处理引擎,根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图。
具体的,客户端的策略优化节点将目标子图查询执行策略,编码为包含目标算子的数据流结构,并将该数据流结构发送至服务端的数据流处理引擎;并接收服务端的数据流处理引擎,对该数据流结构进行处理返回的目标子图。
本说明书实施例提供的图查询方法,通过将目标子图查询执行策略,编码为包含目标算子的数据流结构的方式,使得后续的服务端的数据流处理引擎可以快速的识别该数据流结构,并基于该数据流结构中的目标算子准确的执行该数据流结构,获得目标子图。
此外,本说明书一个或多个实施例中,客户端的管理节点发现某些图模式经常被用户查询却始终没有被存储在图数据结构中时,会触发一个更新机制,来将这些图模式以及其高维统计信息更新入图数据结构,以使得后续用户再次针对该图模式进行查询时,可以更高效、更准确的获得针对该图模式匹配查询的较优执行策略,进而提高图模式匹配查询效率。具体实现方式如下所述:
所述解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构之后,还包括:
确定所述子图结构对应的查询子图的查询次数;
在所述查询子图的查询次数大于等于预设次数阈值、且所述查询子图在所述图数据结构中不存在对应的子图统计信息的情况下,向所述服务端发送统计信息更新请求;
接收所述服务端根据所述统计信息更新请求返回的更新属性图,并根据所述更新属性图,更新所述图数据结构中存储的子图统计信息。
其中,查询子图可以理解为该子图结构对应的图模式。
具体的,在客户端的图模式解析节点将子图查询语句转换为对应的子图结构,发送给客户端的策略优化节点的同时,会将该子图结构发送至管理节点,管理节点会根据历史记录确定该子图结构对应的查询子图的查询次数,比如该子图结构对应的查询子图历史已经被查询过10次,那么本次的查询次数则是第11次;在确定该查询子图的查询次数大于等于预设次数阈值(如8次或者9次等)、且该查询子图在图数据结构中不存在对应的子图统计信息的情况下,向服务端发送统计信息更新请求,以请求更新该图数据结构;并在接收服务端根据统计信息更新请求返回的更新属性图的情况下,根据该更新属性图更新该图数据结构中存储的子图统计信息。
本说明书实施例提供的图查询方法,客户端的管理节点在确定用户频繁提交的图模式查询没有被录入图数据结构的情况下,为了提高该图模式的匹配查询效率,会向服务端触发一个更新机制,来将这些图模式以及其高维统计信息更新入图数据结构。
参见图4,图4示出了本说明书一个实施例提供的一种图查询方法的具体处理过程流程图。
步骤402:接收并解析用户发送的、针对目标项目的属性图的子图查询语句。
例如,子图查询语句为:P=g.V().match(
as(‘v1’).out(‘Knows’).as(‘v2’),
as(‘v1’).out(‘Purchases’).as(‘v3’),
as(‘v2’).out(‘Purchases’).as(‘v3’)
)
步骤404:将该子图查询语句转换为子图结构。
沿用上例, as(‘v1’).out(‘Knows’).as(‘v2’)转换后的子图结构为:
[GetV(NA,‘v1’,Person,NA),
GetE(‘v1’,‘’,Knows,Out),
GetV(‘’,‘v2’,Person,Target),
]
as(‘v1’).out(‘Purchases’).as(‘v3’)转换后的子图结构为:
[GetV(NA,‘v1’,Person,NA),
GetE(‘v1’,‘’,Purchases,Out),
GetV(‘’,‘v3’,Product,Target),
]
as(‘v2’).out(‘Purchases’).as(‘v3’)转换后的子图结构为:
[GetV(NA,‘v2’,Person,NA),
GetE(‘v2’,‘’,Purchases,Out),
GetV(‘’,‘v2’,Product,Target),
]
步骤406:从根据目标属性图构建的图数据结构获取子图统计信息,根据子图统计信息、子图结构,通过预设计算方式确定目标子图查询执行策略。
步骤408:将目标子图查询执行策略,编码为包含目标算子的数据流结构,并将该数据流结构发送至服务端。
沿用上例,包含目标算子的数据流结构如下所述:
Source(GetV(NA,‘v1’,Person,NA))
FlatMap( GetE(‘v1’,‘’,Knows,Out))
Map(GetV(‘’,‘v2’,Person,Target))
Map(GetE(‘v1’,‘_t’,Purchases,Out))
Map(GetE(‘v2’,‘_t’,Purchases,Out))
FlatMap(GetE(‘v3’,‘_t’,Product,Other))
FlatMap(GetE(‘v3’,‘_t’,Product,Other))
而在将该数据流结构发送至服务端之后,接收服务端根据该数据流结构返回的目标子图,并将目标子图返回至用户。
本说明书实施例提供的图查询方法,应用于客户端,提供了一种基于子图统计信息对图模式匹配查询的方法,充分考虑图数据结构中存储的子图统计信息和信息间存在的联系,结合预设计算方式产生在时间以及空间复杂度上较优的目标子图查询执行策略,并将该目标子图查询执行策略编码为服务端可执行的数据流结构,使得后续服务端可以基于该数据流结构高效的分析数据间联系,并简单、快速的对图模式进行匹配查询。
参见图5,图5示出了根据本说明书一个实施例提供的一种应用于服务端的图查询方法的流程图,具体该方法包括以下步骤。
步骤502:接收客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点。
其中,服务端可以理解为上述实施例的后端106;数据流结构可以理解为应用于客户端的图查询方法中确定的数据流结构。
具体的,服务端包括分布式流引擎处理节点、分布式图存储节点,在另一种可实现实施例中,服务端还可以包括图稀疏节点,支持部署在大规模分布式计算集群上。其中,分布式流引擎处理节点包含一组执行器,每一个执行器会被对应的分配在该分布式计算集群的一个执行节点上,各个执行节点上的执行器支持在彼此之间进行高效的数据交换,以应对所查询的图模式可能跨越节点的情况。
那么,在分布式计算集群的基础上,服务端接收客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,可以理解为:服务端接收客户端发送的数据流结构,然后通过RPC服务的形式将该数据流结构发送至分布式计算集群的目标执行节点(如每一个执行节点或者指定的执行节点)。
步骤504:根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端。
其中,对于初始属性图的介绍可以参见应用于客户端的图查询方法中的详细介绍。
具体的,各个目标执行节点接收该数据流结构之后,各个目标执行节点上分配的执行器会对该数据流结构进行解码,提取出其中的算子(Map,FlatMap等),然后生成相应的执行代码并最终根据初始属性图进行图模式匹配查询,获得目标子图,并将该目标子图返回至客户端。
其中,初始属性图可以理解为目标项目的初始属性图,例如电商网站的初始属性图、或者社交网站的初始属性图,对于目标项目以及属性图的具体解释可以参见上述实施例,在此不再赘述。
本说明书一个或多个实施例中,在接收客户端发送的数据流结构之前,还需要预先确定并存储初始属性图,以便后续可以基于该初始属性图进行图模式的匹配查询;并且在分布式计算集群的基础上,若初始属性图的存储占用空间较大,可以将该初始属性图切分为若干个小图,进行分布式存储,极大的提高存储效率以及后续的图模式匹配查询效率。具体实现方式如下所述:
所述接收客户端发送的数据流结构之前,还包括:
确定初始属性图,根据预设拆分策略对所述初始属性图进行拆分,并将拆分后的初始属性图分别存储在所述分布式计算集群的目标执行节点。
具体实施时,确定初始属性图之后,在确定初始属性图的存储占用空间大于等于预设存储空间(预设存储空间可以根据实际应用进行设置,例如预设存储空间为100TB或者80TB等),或者该初始属性图随着更新,存储占用空间大于等于预设存储空间的情况下,单机模式就将很难满足其存储和计算的需要,因此,本说明书实施例中可以通过哈希分区策略或者其他分区策略,将一张较大的初始属性图拆分为多个小图分区,分别存储在分布式计算集群的各个执行节点上,由服务端的分布式图存储节点统一管理。
即服务端的分布式图存储节点确定初始属性图,在确定该初始属性图的存储占用空间大于等于预设存储空间的情况下,根据预设拆分策略(如哈希分区策略)对初始属性图进行拆分,并将拆分后的初始属性图分别存储在分布式计算集群的目标执行节点,使得该目标执行节点中的执行器在根据数据流结构进行目标子图匹配查询时,可以通过分布式图存储节点将各目标执行节点上存储的小图分区加载入内存,形成初始属性图,以配合该数据流结构完成目标子图匹配查询,获得目标子图。
具体实施时,初始化阶段,服务端需要将初始属性图发送至客户端,以使客户端可以基于该初始属性图中的高维统计信息进行图数据结构的构建,而在初始属性图较大或者经过多次更新,图的大小上升到一定规模之后,为了能在合理的时间范围内建立出可用的图数据结构,图数据结构的管理节点并不会直接从服务端存储的原始的属性图中提取高维统计信息来建立图数据结构。因为在研究中发现,优秀执行策略的生成并不需要完全准确的高维统计信息,在合理偏差范围内的统计信息已经足够帮助PlanOptimizer生成优选执行策略。基于此,本说明书实施例提供了一种“新型图采样算法”,并设计了图稀疏节点(GraphSparsifier)来具体执行,其作用是将原始的属性图(即大图)采样为一张小图,小图在体积上得到了极大精简,但却保留了大图上的基本结构信息,通过此种采样算法,能够在相同的采样率下实现更小的估计误差,以进一步提升GLogue的建立效率。因此,在系统初始化时,服务端的GraphSparsifier将同时启动,将整张大图采样为一张小图,并将采样后的小图汇总后发送给客户端的GLogueManager。之后,GLogueManager将在小图上进行高维信息的统计,并根据预先定义的分层函数(stratifiedfunction)放缩回大图上的数据。具体实现方式如下所述:
所述将拆分后的初始属性图分别存储在所述分布式计算集群的目标执行节点之后,还包括:
响应于系统初始化请求,从所述分布式计算集群的目标执行节点确定所述初始属性图;
根据预设采样策略对所述初始属性图进行采样,获得目标属性图,并将所述目标属性图发送至所述客户端,其中,所述目标属性图小于所述初始属性图。
其中,在将客户端和服务端看做图查询系统的情况下,该系统初始化请求就可以理解为该图查询系统的初始化请求。
具体的,服务端的图稀疏节点响应于系统初始化请求,触发分布式图存储节点从分布式计算集群的目标执行节点确定初始属性图,分布式图存储节点将该初始属性图发送至图稀疏节点,图稀疏节点接收到该初始属性图之后,根据预设采样策略对该初始属性图进行采样,获得目标属性图,并将目标属性图发送至客户端的管理节点,以使客户端的管理节点根据该目标属性图进行图数据结构的构建。
此外,本说明书一个或多个实施例中,由于初始属性图会被拆分存储在分布式计算集群的不同执行节点上,那么在根据数据流结构从初始属性图中进行目标子图查询时,分布式计算集群的不同执行节点则会快速的从其节点查询到初始属性图中对应的图模式,而后则需要将所有执行节点查询到的图模式进行汇总,获得目标子图。具体实现方式如下所述:
所述根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,包括:
根据所述目标执行节点对所述数据流结构进行解码,并获得所述目标执行节点根据解码结果,在对应的拆分后的初始属性图进行查询确定的目标子图。
具体的,服务端的分布式流引擎处理节点,根据分配在分布式计算集群的目标执行节点的执行器,对数据流结构进行解码,并获得各个目标执行节点的执行器根据解码结果,在对应的拆分后的初始属性图进行查询确定的初始图模式,然后由各个初始图模式进行汇总后确定的目标子图。通过此种分布式查询,极大的提高图模式的匹配查询效率。
本说明书实施例提供的应用于服务端的该图查询方法,提供了高效完善的分布式执行引擎和分布式存储,使得服务端在进行图模式匹配查询时,能够充分利用集群中的计算资源,极大的提高了图模式匹配的查询速度,并且在执行引擎层面,支持Worst-Case-OptimalJoin,为执行策略的计算复杂度提供了上界限的保证,在相同的硬件资源下,极大地提高了查询的成功率。
参见图6,图6示出了本说明书一个实施例提供的一种应用于图查询系统的图查询方法的流程图,所述图查询系统包括客户端、服务端,其中,所述方法具体包括以下步骤。
步骤602:所述客户端,解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取,将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至所述服务端;
步骤604:所述服务端,接收所述客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端;
步骤606:所述客户端,接收所述服务端返回的所述目标子图,并将所述目标子图返回至所述用户。
可选地,所述客户端包括图模式解析节点、策略优化节点;
相应地,所述图模式解析节点,解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,并将所述子图结构发送至所述策略优化节点;
所述策略优化节点,根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;
所述策略优化节点,将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端。
可选地,所述客户端还包括管理节点;
相应地,所述管理节点,接收所述服务端发送的目标属性图,并确定所述目标属性图中的子图统计信息;
根据所述子图统计信息以所述目标属性图的形式构建图数据结构,并将所述子图统计信息存储在所述图数据结构。
可选地,所述服务端包括分布式流引擎处理节点、分布式图存储节点;
相应地,所述分布式流引擎处理节点,接收客户端602发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,其中,所述数据流结构为所述客户端对接收的子图查询语句进行处理获得;
根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,以及在根据所述分布式存储节点确定的初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端。
可选地,所述服务端还包括图稀疏节点;
所述图稀疏节点,响应于系统初始化请求,根据所述分布式存储节点,从所述分布式计算集群的目标执行节点确定所述初始属性图;
根据预设采样策略对所述初始属性图进行采样,获得目标属性图,并将所述目标属性图发送至所述客户端,其中,所述目标属性图小于所述初始属性图。
具体的,该图查询系统可以理解为上述实施例的图模式匹配查询系统,GLogS。
其中,对于客户端、服务端,以及客户端包括的图模式解析节点、策略优化节点、管理节点,服务端包括的分布式流引擎处理节点、分布式图存储节点、图稀疏节点的具体解释,可以参见上述应用于客户端的图查询方法以及、应用于服务端的图查询方法中的具体解释,在此不再赘述。
本说明书实施例提供的图查询方法,应用于能够应对大规模图模式查询的图查询系统GLogS,GLogS完整地包含了前端模块和后端模块,以端到端的方式,全面地打通了从用户侧输入查询语句到最后执行引擎返回结果这一过程中的全部链路,使得图模式匹配查询这一高频需求在现实项目场景中高度可用;同时,GLogS提出了GLogue这一创新型的数据结构来存储图中的高维统计信息,并引入GLogue Manager来对GLogue进行创建、管理和维护,以及通过GLogue, GLogue Manager, Graph Sparsifier等多模块之间的配合联动,不仅极大地提高了从图中提取高维统计信息的效率,使其能够被应用在大规模图场景下,更使得从中提取的统计信息能够复用系统中的图存储来进行可靠的存储和迁移;此外,也提供了高效的分布式执行引擎和分布式存储,极大的提高了图模式匹配查询的效率。
具体的,该应用于图查询系统的图查询方法,完整地提出了从大规模图中提取高维统计信息的解决方案,解决了从大规模图中提取高维统计信息存在着难存储、计算慢、内存消耗巨大等问题;同时,提出了StratifiedSparsification算法,在将一张大图采样为小图的过程中,使图模式数量等高维信息得到了很好的保留。在极大地提高了信息统计效率的同时,也保留了很高的准确性;也提出了GLogue这一创新型的图原生的数据结构来存储图中的高维统计信息,并引入GLogueManager来对GLogue进行创建、管理和维护。用图来存储这些高维统计信息,不仅能够存储信息本身,更重要的是能够存储信息之间的联系。这些联系不仅能够帮助执行策略的生成,以使产生的执行策略无论在时间还是空间复杂度上都尽可能较优,更能极大地提高从图中提取高维统计信息的效率;基于该GLogue中各高维信息的相互关联,提出了一种从图中高效提取高维统计信息的算法,极大地提升了GLogue构建效率;除此之外,基于GLogue属性图的结构,可以进一步将图模式匹配的执行策略生成问题,转换为图领域经典的最短路径问题,并使用维特比算法对此进行求解,不仅提高了执行策略的产生效率,更使得执行策略的产生过程更加简单、清晰、直观;并且该方法使用基于有向无环图(DAG)的流处理引擎来将图模式查询的任务分配到大规模集群上进行处理,GLogS中的PlanOptimizer,在基于GLogue产生执行策略后,会将执行策略中每一个步骤翻译为流处理引擎中的对应算子,并在最后将其编码为DataflowDesc结构,然后通过RPC(Remote Procedure Call,远程过程调用)服务的方式发送到各个集群中的各个执行节点的执行器上进行计算,这样的设计使得GLogS在计算过程中具有良好的可伸缩性。
上述为本实施例的一种应用于图查询系统的图查询方法的示意性方案。需要说明的是,该应用于图查询系统的图查询方法的技术方案与上述的应用于客户端的图查询方法以及应用于服务端的图查询方法的技术方案属于同一构思,应用于图查询系统的图查询方法的技术方案未详细描述的细节内容,均可以参见上述应用于客户端的图查询方法以及应用于服务端的图查询方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了应用于客户端的图查询装置实施例,图7示出了本说明书一个实施例提供的一种应用于客户端的图查询装置的结构示意图。如图7所示,该装置包括:
图模式解析节点702,被配置为解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构;
策略优化节点704,被配置为根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;
所述策略优化节点704,进一步被配置为将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端;
所述图模式解析节点702,进一步被配置为接收所述服务端根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图,并将所述目标子图返回至所述用户。
可选地,所述装置,还包括:
管理节点,被配置为:
接收所述服务端发送的目标属性图,并确定所述目标属性图中的子图统计信息;
根据所述子图统计信息以所述目标属性图的形式构建图数据结构,并将所述子图统计信息存储在所述图数据结构。
可选地,图模式解析节点702,进一步被配置为:
接收用户发送的子图查询语句,并对所述子图查询语句进行解析;
在解析结果满足预设查询条件的情况下,生成与所述子图查询语句对应的子图结构;或者
在所述解析结果不满足所述预设查询条件的情况下,为所述用户返回预设查询结果。
可选地,所述策略优化节点704,进一步被配置为:
根据所述子图结构,在所述图数据结构中,确定所述子图结构对应的目标点;
确定与所述目标点关联的子图统计信息,通过最短路径算法确定目标子图查询执行策略。
可选地,所述策略优化节点704,进一步被配置为:
将所述目标子图查询执行策略,编码为包含目标算子的数据流结构,并将所述数据流结构发送至服务端的数据流处理引擎,其中,所述目标算子为所述数据流处理引擎关联的算子;
相应地,所述策略优化节点704,进一步被配置为:
接收所述服务端的数据流处理引擎,根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图。
可选地,所述管理节点,进一步被配置为:
确定所述子图结构对应的查询子图的查询次数;
在所述查询子图的查询次数大于等于预设次数阈值、且所述查询子图在所述图数据结构中不存在对应的子图统计信息的情况下,向所述服务端发送统计信息更新请求;
接收所述服务端根据所述统计信息更新请求返回的更新属性图,并根据所述更新属性图,更新所述图数据结构中存储的子图统计信息。
上述为本实施例的一种应用于客户端的图查询装置的示意性方案。需要说明的是,该应用于客户端的图查询装置的技术方案与上述的应用于客户端的图查询方法的技术方案属于同一构思,应用于客户端的图查询装置的技术方案未详细描述的细节内容,均可以参见上述应用于客户端的图查询方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了应用于服务端的图查询装置实施例,图8示出了本说明书一个实施例提供的一种应用于服务端的图查询装置的结构示意图。如图8所示,该装置包括:
分布式流引擎处理节点802,被配置为接收客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,其中,所述数据流结构为所述客户端对接收的子图查询语句进行处理获得;
所述分布式流引擎处理节点,进一步被配置为根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端。
可选地,所述装置,还包括:
分布式图存储节点,被配置为:
确定初始属性图,根据预设拆分策略对所述初始属性图进行拆分,并将拆分后的初始属性图分别存储在所述分布式计算集群的目标执行节点。
可选地,所述装置,还包括:
图稀疏节点,被配置为:
响应于系统初始化请求,从所述分布式计算集群的目标执行节点确定所述初始属性图;
根据预设采样策略对所述初始属性图进行采样,获得目标属性图,并将所述目标属性图发送至所述客户端,其中,所述目标属性图小于所述初始属性图。
所述分布式流引擎处理节点802,进一步被配置为:
根据所述目标执行节点对所述数据流结构进行解码,并获得所述目标执行节点根据解码结果,在对应的拆分后的初始属性图进行查询确定的目标子图。
上述为本实施例的一种应用于服务端的图查询装置的示意性方案。需要说明的是,该应用于服务端的图查询装置的技术方案与上述的应用于服务端的图查询方法的技术方案属于同一构思,应用于服务端的图查询装置的技术方案未详细描述的细节内容,均可以参见上述应用于服务端的图查询方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了图查询系统实施例,图9示出了本说明书一个实施例提供的一种图查询系统的结构示意图。如图9所示,该系统包括:
所述客户端902,被配置为解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取,将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至所述服务端904;
所述服务端904,被配置为接收所述客户端902发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端902;
所述客户端902,进一步被配置为接收所述服务端904返回的所述目标子图,并将所述目标子图返回至所述用户。
可选地,所述客户端902包括图模式解析节点、策略优化节点;
相应地,所述图模式解析节点,被配置为解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,并将所述子图结构发送至所述策略优化节点;
所述策略优化节点,被配置为根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;
所述策略优化节点,进一步被配置为将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端904。
可选地,所述客户端902还包括管理节点;
相应地,所述管理节点,被配置为接收所述服务端904发送的目标属性图,并确定所述目标属性图中的子图统计信息;
根据所述子图统计信息以所述目标属性图的形式构建图数据结构,并将所述子图统计信息存储在所述图数据结构。
可选地,所述服务端904包括分布式流引擎处理节点、分布式图存储节点;
相应地,所述分布式流引擎处理节点,被配置为接收客户端902发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,其中,所述数据流结构为所述客户端对接收的子图查询语句进行处理获得;
根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,以及在根据所述分布式存储节点确定的初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端902。
可选地,所述服务端904还包括图稀疏节点;
所述图稀疏节点,被配置为响应于系统初始化请求,根据所述分布式存储节点,从所述分布式计算集群的目标执行节点确定所述初始属性图;
根据预设采样策略对所述初始属性图进行采样,获得目标属性图,并将所述目标属性图发送至所述客户端902,其中,所述目标属性图小于所述初始属性图。
结合图9,以该图查询系统为GLogS系统为例对图模式查询的处理过程进行具体说明:
系统启动和初始化:系统启动原始属性图被载入系统中,通过哈希分区策略,将原始属性图拆分为多个小图分区,分别存储在分布式计算集群的各个节点,由分布式图存储节点(GraphStore)统一管理;系统初始化时,分配在各个节点的分布式流引擎处理节点(Distributed DataFlow Engine)的执行器,将把其对应节点上存储的小图分区载入内存;然后图稀疏节点(Graph Sparsifier)根据GraphStore读取该原始属性图,进行稀疏采样,生成稀疏化的小图,并将该小图提供给图数据结构的管理节点(GLogue Manager)。GLogueManager在接受到小图后,从中提取并推导该小图上的高维统计信息,建立图数据结构(GLogue),将高维统计信息也以属性图的形式存储在GLogue中。GLogue在生成后,会被提供给策略优化节点(Plan Optimizer)以在将来对用户的提交的查询进行优化。与此同时,图模式解析节点(Pattern Paser),PlanOptimizer,远程过程调用服务(RPC Service)、数据流插件(Dataflow Plugin),数据流执行器(Dataflow Executors)也将一起启动来准备处理即将到来的图模式查询。自此,系统启动和初始化阶段结束。
具体的图模式查询过程如下:
1.用户向GLogS系统的前端输入Gremlin match语句,即图模式查询语句;
2.前端(即客户端902)Pattern Parser在接收到该Gremlin match语句之后,将该Gremlin match语句转换为PatternDesc结构,即图模式结构,并将该PatternDesc结构发送至Plan Optimizer;
3.前端Plan Optimizer根据提前定义的计算复杂度估计模型、该PatternDesc结构以及存储在GLogue中的高维统计信息,生成计算复杂度最低的执行策略;
4.前端PlanOptimizer将该执行策略转换为包含目标流算子的数据流结构(DataflowDesc),并将该DataflowDesc发送至后端(即服务端904)Distributed DataFlowEngine;
5.后端Distributed DataFlow Engine通过远程过程调用服务(即RPC服务)的形式将该DataflowDesc发送到,分配在分布式计算集群的各个节点的执行器,各个节点的执行器对该DataflowDesc进行解码,提取出其中的流算子并生成相应的执行代码;
6.各执行器执行该图模式查询语句匹配的代码,并生成相应的图模式查询结果,并将该图模式查询结果返回给Distributed DataFlow Engine进行汇总,DistributedDataFlow Engine最后会将汇总后的图模式查询结果通过前端Pattern Paser返回给用户。
此外,图数据结构的管理节点还会对经常被查询的图模式、但是该图数据结构中未存在与该图模式对应的高维统计信息的情况进行处理,具体处理方式可以参见上述实施例,在此不再赘述。
上述为本实施例的一种图查询系统的示意性方案。需要说明的是,该图查询系统的技术方案与上述的应用于图查询系统的图查询方法的技术方案属于同一构思,图查询系统的技术方案未详细描述的细节内容,均可以参见上述应用于图查询系统的图查询方法的技术方案的描述。
图10示出了根据本说明书一个实施例提供的一种计算设备1000的结构框图。该计算设备1000的部件包括但不限于存储器1010和处理器1020。处理器1020与存储器1010通过总线1030相连接,数据库1050用于保存数据。
计算设备1000还包括接入设备1040,接入设备1040使得计算设备1000能够经由一个或多个网络1060通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备1040可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)接口,等等。
在本说明书的一个实施例中,计算设备1000的上述部件以及图10中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图10所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1000可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备1000还可以是移动式或静止式的服务器。
其中,处理器1020用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述图查询方法的步骤。上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的图查询方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述图查询方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述图查询方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的图查询方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述图查询方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述图查询方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的图查询方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述图查询方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (12)
1.一种图查询方法,应用于客户端,包括:
解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构;
接收服务端发送的目标属性图,并确定所述目标属性图中的子图统计信息;
根据所述子图统计信息以所述目标属性图的形式,构建图数据结构,并将所述子图统计信息存储在所述图数据结构,其中,所述子图统计信息为所述目标属性图的高维统计信息;
根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;
将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端;
接收所述服务端根据所述数据流结构,在所述初始属性图中进行查询返回的目标子图,并将所述目标子图返回至所述用户。
2.根据权利要求1所述的图查询方法,所述解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,包括:
接收用户发送的子图查询语句,并对所述子图查询语句进行解析;
在解析结果满足预设查询条件的情况下,生成与所述子图查询语句对应的子图结构;或者
在所述解析结果不满足所述预设查询条件的情况下,为所述用户返回预设查询结果。
3.根据权利要求1所述的图查询方法,所述根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,包括:
根据所述子图结构,在所述图数据结构中,确定所述子图结构对应的目标点;
确定与所述目标点关联的子图统计信息,通过最短路径算法确定目标子图查询执行策略。
4.根据权利要求1所述的图查询方法,所述解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构之后,还包括:
确定所述子图结构对应的查询子图的查询次数;
在所述查询子图的查询次数大于等于预设次数阈值、且所述查询子图在所述图数据结构中不存在对应的子图统计信息的情况下,向所述服务端发送统计信息更新请求;
接收所述服务端根据所述统计信息更新请求返回的更新属性图,并根据所述更新属性图,更新所述图数据结构中存储的子图统计信息。
5.一种图查询方法,应用于服务端,包括:
接收客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,其中,所述数据流结构为所述客户端对接收的子图查询语句进行处理获得,所述数据流结构根据权利要求1-4任一项所述的图查询方法获得;
根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端。
6.根据权利要求5所述的图查询方法,所述接收客户端发送的数据流结构之前,还包括:
确定初始属性图,根据预设拆分策略对所述初始属性图进行拆分,并将拆分后的初始属性图分别存储在所述分布式计算集群的目标执行节点。
7.根据权利要求6所述的图查询方法,所述将拆分后的初始属性图分别存储在所述分布式计算集群的目标执行节点之后,还包括:
响应于系统初始化请求,从所述分布式计算集群的目标执行节点确定所述初始属性图;
根据预设采样策略对所述初始属性图进行采样,获得目标属性图,并将所述目标属性图发送至所述客户端,其中,所述目标属性图小于所述初始属性图。
8.根据权利要求6所述的图查询方法,所述根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,包括:
根据所述目标执行节点对所述数据流结构进行解码,并获得所述目标执行节点根据解码结果,在对应的拆分后的初始属性图进行查询确定的目标子图。
9.一种图查询方法,应用于图查询系统,所述图查询系统包括客户端、服务端,其中,所述方法包括:
所述客户端,解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,接收服务端发送的目标属性图,并确定所述目标属性图中的子图统计信息,根据所述子图统计信息以所述目标属性图的形式,构建图数据结构,并将所述子图统计信息存储在所述图数据结构,其中,所述子图统计信息为所述目标属性图的高维统计信息,根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取,将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至所述服务端;
所述服务端,接收所述客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端;
所述客户端,接收所述服务端返回的所述目标子图,并将所述目标子图返回至所述用户。
10.根据权利要求9所述的图查询方法,所述客户端包括图模式解析节点、策略优化节点;
相应地,所述解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取,将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至所述服务端,包括:
所述图模式解析节点,解析用户针对初始属性图发送的子图查询语句,生成与所述子图查询语句对应的子图结构,并将所述子图结构发送至所述策略优化节点;
所述策略优化节点,根据子图统计信息、所述子图结构,通过预设计算方式确定目标子图查询执行策略,其中,所述子图统计信息从根据目标属性图构建的图数据结构获取;
所述策略优化节点,将所述目标子图查询执行策略,编码为数据流结构,并将所述数据流结构发送至服务端。
11.根据权利要求9所述的图查询方法,所述服务端包括分布式流引擎处理节点、分布式图存储节点;
相应地,所述接收所述客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,在初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端,包括:
所述分布式流引擎处理节点,接收客户端发送的数据流结构,并将所述数据流结构发送至分布式计算集群的目标执行节点,其中,所述数据流结构为所述客户端对接收的子图查询语句进行处理获得;
根据所述目标执行节点对所述数据流结构进行解码,获得所述目标执行节点根据解码结果,以及在根据所述分布式存储节点确定的初始属性图进行查询确定的目标子图,并将所述目标子图返回至所述客户端。
12.根据权利要求11所述的图查询方法,所述服务端还包括图稀疏节点;
所述图稀疏节点,响应于系统初始化请求,根据所述分布式存储节点,从所述分布式计算集群的目标执行节点确定所述初始属性图;
根据预设采样策略对所述初始属性图进行采样,获得目标属性图,并将所述目标属性图发送至所述客户端,其中,所述目标属性图小于所述初始属性图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310413647.6A CN116150437B (zh) | 2023-04-12 | 2023-04-12 | 图查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310413647.6A CN116150437B (zh) | 2023-04-12 | 2023-04-12 | 图查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116150437A CN116150437A (zh) | 2023-05-23 |
CN116150437B true CN116150437B (zh) | 2023-09-26 |
Family
ID=86373952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310413647.6A Active CN116150437B (zh) | 2023-04-12 | 2023-04-12 | 图查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116150437B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117171401B (zh) * | 2023-11-03 | 2024-01-26 | 之江实验室 | 基于分层预计算的图数据中最短路径的查询方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033135A (zh) * | 2018-06-06 | 2018-12-18 | 北京大学 | 一种面向软件项目知识图谱的自然语言查询方法及系统 |
CN109684349A (zh) * | 2018-11-20 | 2019-04-26 | 中国科学院计算技术研究所 | 一种基于sql与图计算交互式分析的查询方法和系统 |
CN111897911A (zh) * | 2020-06-11 | 2020-11-06 | 中国科学院计算机网络信息中心 | 一种基于次级属性图的非结构化数据查询方法及系统 |
CN115114441A (zh) * | 2022-04-02 | 2022-09-27 | 北京明略昭辉科技有限公司 | 查询图构造方法、装置、存储介质以及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10445361B2 (en) * | 2016-12-15 | 2019-10-15 | Microsoft Technology Licensing, Llc | Caching of subgraphs and integration of cached subgraphs into graph query results |
US10810210B2 (en) * | 2017-05-12 | 2020-10-20 | Battelle Memorial Institute | Performance and usability enhancements for continuous subgraph matching queries on graph-structured data |
-
2023
- 2023-04-12 CN CN202310413647.6A patent/CN116150437B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033135A (zh) * | 2018-06-06 | 2018-12-18 | 北京大学 | 一种面向软件项目知识图谱的自然语言查询方法及系统 |
CN109684349A (zh) * | 2018-11-20 | 2019-04-26 | 中国科学院计算技术研究所 | 一种基于sql与图计算交互式分析的查询方法和系统 |
CN111897911A (zh) * | 2020-06-11 | 2020-11-06 | 中国科学院计算机网络信息中心 | 一种基于次级属性图的非结构化数据查询方法及系统 |
CN115114441A (zh) * | 2022-04-02 | 2022-09-27 | 北京明略昭辉科技有限公司 | 查询图构造方法、装置、存储介质以及电子设备 |
Non-Patent Citations (2)
Title |
---|
Fast Search for Dynamic Multi-Relational Graphs;Choudhury, S et al.;arxiv;第1-8页 * |
HybriG:一种高效处理大量重边的属性图存储架构;黄权隆;黄艳香;邵蓥侠;孟嘉;任鑫琦;崔斌;冯是聪;;计算机学报(08);第1766-1779页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116150437A (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857917B (zh) | 面向威胁情报的安全知识图谱构建方法及系统 | |
CN110147437B (zh) | 一种基于知识图谱的搜索方法及装置 | |
CN107515887B (zh) | 一种适用于多种大数据管理系统的交互式查询方法 | |
CN113010547B (zh) | 一种基于图神经网络的数据库查询优化方法及系统 | |
US8719299B2 (en) | Systems and methods for extraction of concepts for reuse-based schema matching | |
Gilson et al. | From web data to visualization via ontology mapping | |
CN114218400A (zh) | 基于语义的数据湖查询系统及方法 | |
CN114356971A (zh) | 数据处理方法、装置以及系统 | |
CN116150437B (zh) | 图查询方法 | |
US20230082563A1 (en) | Data processing method and data processing apparatus | |
CN113282623A (zh) | 数据处理方法及装置 | |
CN115374105A (zh) | 数据处理方法以及装置 | |
CN109471957B (zh) | 一种基于统一标签的元数据转换方法及装置 | |
Neun et al. | Web service approaches for providing enriched data structures to generalisation operators | |
CN108021607A (zh) | 一种基于大数据平台的无线城市审计数据离线分析方法 | |
CN113806376B (zh) | 索引构建方法及装置 | |
CN113407810B (zh) | 一种基于大数据的城市信息和服务集成系统及方法 | |
KR101229274B1 (ko) | 대용량 온톨로지의 효율적인 저장 및 유지관리를 위한 관계형 데이터베이스 기반저장소, 검색방법 및 이를 이용하여 컴퓨터에 검색을 실행시키는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체 | |
CN115601047A (zh) | 数据处理方法以及装置 | |
Tadesse et al. | ARDI: automatic generation of RDFS models from heterogeneous data sources | |
CN111813918B (zh) | 一种科技资源推荐处理方法及装置 | |
Suria et al. | An enhanced web service recommendation system with ranking QoS information | |
Nair et al. | Fog-cloud collaboration for real-time streaming applications: fcc for rtsas | |
CN115329221B (zh) | 一种针对多源地理实体的查询方法及查询系统 | |
Liu et al. | An ensemble clustering method based on consistency cluster consensus approach and MapReduce model |
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 |