CN117785884A - 图查询语句的图逻辑执行计划生成方法、数据处理方法及装置 - Google Patents
图查询语句的图逻辑执行计划生成方法、数据处理方法及装置 Download PDFInfo
- Publication number
- CN117785884A CN117785884A CN202311853712.3A CN202311853712A CN117785884A CN 117785884 A CN117785884 A CN 117785884A CN 202311853712 A CN202311853712 A CN 202311853712A CN 117785884 A CN117785884 A CN 117785884A
- Authority
- CN
- China
- Prior art keywords
- graph
- tree
- logic
- difference
- conversion
- 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
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000006243 chemical reaction Methods 0.000 claims abstract description 152
- 238000012545 processing Methods 0.000 claims description 33
- 238000005457 optimization Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 37
- 230000008569 process Effects 0.000 description 23
- 230000014509 gene expression Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本说明书实施例提供图查询语句的图逻辑执行计划生成方法、数据处理方法及装置。在生成图查询语句的图逻辑执行计划时,首先,生成图查询语句的抽象语法树。随后,对抽象语法树进行基于图逻辑算子的图逻辑转换,以得到图查询语句的图逻辑执行计划,所得到的图逻辑执行计划包括被组织为树状结构的图逻辑算子集合。
Description
技术领域
本说明书实施例通常涉及图数据库领域,尤其涉及图查询语句的图逻辑执行计划生成方法、数据处理方法及装置。
背景技术
随着图数据库和图计算技术的逐渐成熟,图数据库被越来越多地应用于各种应用场景。然而,在对图数据库进行图数据查询时,并没有统一的图查询语言标准,从而使得每种图查询语言实现的图查询语句存在表达形式差异,由此需要采用绑定的逻辑执行计划生成方案来生成不同的逻辑执行计划,从而无法实现图查询语言兼容。
发明内容
本说明书实施例提供图查询语句的图逻辑执行计划生成方法、数据处理方法及装置。利用该图逻辑执行计划生成方法,针对图查询语句生成由图逻辑算子组成的图逻辑执行计划。由于图逻辑算子用于描述图查询语句所对应的图查询任务的最小处理逻辑执行单元,与图查询语句的具体图查询语言实现无关,从而针对语义相同的图查询语句的不同图查询语言实现方式,可以得到相同的图逻辑执行计划,由此实现图逻辑执行计划生成方案的图查询语言兼容性。
根据本说明书的实施例的一个方面,提供一种用于生成图查询语句的图逻辑执行计划的方法,包括:生成图查询语句的抽象语法树;以及对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以得到所述图查询语句的图逻辑执行计划,所述图逻辑执行计划包括被组织为树状结构的图逻辑算子集合。
可选地,在上述方面的一个示例中,对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以得到所述图查询语句的图逻辑执行计划可以包括:根据所述抽象语法树的节点结构和节点语义,将所述抽象语法树切分为多个可转换子树结构,所述可转换子树结构包括可独立完成图逻辑转换的子树结构,并且具有图逻辑转换方式,所述图逻辑转换方式包括图逻辑算子转换和图逻辑算子执行顺序关系转换;以及根据可转换子树结构的图逻辑转换方式对所述可转换子树结构进行图逻辑转换,以得到所述图查询语句的图逻辑执行计划。
可选地,在上述方面的一个示例中,根据所述抽象语法树的节点结构和节点语义,将所述抽象语法树切分为多个可转换子树结构可以包括:按照树遍历的方式,根据所述抽象语法树的节点结构和节点语义来从所述抽象语法树中搜索出所述多个可转换子树结构。
可选地,在上述方面的一个示例中,一旦搜索出可转换子树结构,就执行所搜索出的可转换子树结构的图逻辑转换。
可选地,在上述方面的一个示例中,所述可转换子树结构包括可独立完成图逻辑转换的最大子树结构。
可选地,在上述方面的一个示例中,所述方法还可以包括:将所述抽象语法树转换为通用语法树,所述通用语法树针对语义相同的图查询语句的不同图查询语言实现方式具有统一的描述结构。相应地,对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以生成所述图查询语句的图逻辑执行计划可以包括:对所述通用语法树进行基于图逻辑算子的图逻辑转换,以生成所述图查询语句的图逻辑执行计划。
可选地,在上述方面的一个示例中,将所述抽象语法树转换为通用语法树可以包括:从所述抽象语法树中确定出存在图查询语言实现差异的差异子树结构;以及根据所述差异子树结构的差异类型所对应的结构转换方式,对所述差异子树结构进行结构转换。
可选地,在上述方面的一个示例中,所述图查询语句实现差异包括语义结构实现差异和语法结构实现差异。相应地,根据所述差异子树结构的差异类型所对应的转换方式,对所述差异子树结构进行结构转换可以包括:响应于所述差异子树结构的差异类型为语义结构实现差异,在所述差异子树结构的父节点下增加标准通用语法树中规定的其它图查询语言实现的子树结构;响应于所述差异子树结构的差异类型为语法结构实现差异,将所述差异子树结构转换为所述标准通用语法树中规定的统一子树结构。
可选地,在上述方面的一个示例中,所述方法还可以包括:对所生成的图逻辑执行计划进行计划优化。
可选地,在上述方面的一个示例中,针对所述图逻辑执行计划的计划优化经由可插拔式执行计划优化器实现。
根据本说明书的实施例的另一方面,提供一种数据处理方法,包括:生成图查询语句的抽象语法树;对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以得到所述图查询语句的图逻辑执行计划,所述图逻辑执行计划包括被组织为树状结构的图逻辑算子集合;以及根据所述图逻辑执行计划来执行与所述图查询语句对应的数据处理。
根据本说明书的实施例的另一方面,提供一种用于生成图查询语句的图逻辑执行计划的装置,包括:抽象语法树生成器,生成图查询语句的抽象语法树;以及图逻辑转换器,对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以生成所述图查询语句的图逻辑执行计划,所述图逻辑执行计划包括被组织为树状结构的图逻辑算子集合。
可选地,在上述方面的一个示例中,所述图逻辑转换器可以包括:树结构切分模块,根据所述抽象语法树的节点结构和节点语义,将所述抽象语法树切分为多个可转换子树结构,所述可转换子树结构包括可独立完成图逻辑转换的子树结构,并且具有图逻辑转换方式,所述图逻辑转换方式包括图逻辑算子转换和图逻辑算子执行顺序关系转换;以及图逻辑转换模块,根据可转换子树结构的图逻辑转换方式对所述可转换子树结构进行图逻辑转换。
可选地,在上述方面的一个示例中,所述树结构切分模块按照树遍历的方式,根据所述抽象语法树的节点结构和节点语义来从所述抽象语法树中搜索出所述多个可转换子树结构。
可选地,在上述方面的一个示例中,所述装置还可以包括:语法树转换器,将所述抽象语法树转换为通用语法树,所述通用语法树针对语义相同的图查询语句的不同图查询语言实现方式具有统一的描述结构。相应地,所述图逻辑转换器对所述通用语法树进行基于图逻辑算子的图逻辑转换,以生成所述图查询语句的图逻辑执行计划。
可选地,在上述方面的一个示例中,所述语法树转换器可以包括:差异树结构确定模块,从所述抽象语法树中确定出存在图查询语言实现差异的差异子树结构;以及差异树结构转换模块,根据所述差异子树结构的差异类型所对应的结构转换方式,对所述差异子树结构进行结构转换。
可选地,在上述方面的一个示例中,所述图查询语句实现差异包括语义结构实现差异和语法结构实现差异。响应于所述差异子树结构的差异类型为语义结构实现差异,所述差异树结构转换模块在所述差异子树结构的父节点下增加标准通用语法树中规定的其它图查询语言实现的子树结构;响应于所述差异子树结构的差异类型为语法结构实现差异,所述差异树结构转换模块将所述差异子树结构转换为所述标准通用语法树中规定的统一子树结构。
根据本说明书的实施例的另一方面,提供一种数据处理装置,包括:抽象语法树生成器,生成图查询语句的抽象语法树;图逻辑转换器,对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以得到所述图查询语句的图逻辑执行计划,所述图逻辑执行计划包括被组织为树状结构的图逻辑算子集合;以及计划执行器,根据所述图逻辑执行计划来执行与所述图查询语句对应的数据处理。
根据本说明书的实施例的另一方面,提供一种用于生成图查询语句的图逻辑执行计划的装置,包括:至少一个处理器;与所述至少一个处理器耦合的存储器;以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的用于生成图查询语句的图逻辑执行计划的方法。
根据本说明书的实施例的另一方面,提供一种数据处理装置,包括:至少一个处理器;与所述至少一个处理器耦合的存储器;以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的数据处理方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了根据本说明书的实施例的图逻辑执行计划生成方法的示例流程图。
图2示出了根据本说明书的实施例的图查询语句的示例示意图。
图3示出了根据本说明书的实施例的抽象语法树生成过程的示例示意图。
图4示出了根据本说明书的实施例的抽象语法树的示例示意图。
图5示出了根据本说明书的实施例的图逻辑转换过程的示例流程图。
图6示出了根据本说明书的实施例的基于树遍历的图逻辑转换过程的示例流程图。
图7示出了根据本说明书的实施例的图逻辑转换过程的示例示意图。
图8示出了两种不同图查询语言所编写的图查询语句的抽象语法树之间的差异对比图。
图9示出了根据本说明书的实施例的语法树转换过程的示例流程图。
图10A和图10B示出了根据本说明书的实施例的差异树结构转换的示例示意图。
图11示出了根据本说明书的实施例的通用语法树的示例示意图。
图12示出了根据本说明书的实施例的图逻辑执行计划的示例示意图。
图13示出了根据本说明书的实施例的经过优化后的图逻辑执行计划的示例示意图。
图14示出了根据本说明书的实施例的数据处理方法的示例流程图。
图15示出了根据本说明书的实施例的图逻辑执行计划生成装置的示例方框图。
图16示出了根据本说明书的实施例的语法树转换器的示例方框图。
图17示出了根据本说明书的实施例的图逻辑转换器的示例方框图。
图18示出了根据本说明书的实施例的数据处理装置的示例方框图。
图19示出了根据本说明书的实施例的基于计算机系统实现的图逻辑执行计划生成装置的示例示意图。
图20示出了根据本说明书的实施例的基于计算机系统实现的数据处理装置的示例示意图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
本说明书中使用的流程图示出了根据本说明书中的一些实施例的系统实现的操作。应该清楚地理解,流程图的操作可以不按顺序实现。相反,操作可以以反转顺序或同时实现。此外,可以向流程图添加一个或多个其他操作。可以从流程图中移除一个或多个操作。
近年来,随着图计算技术的逐渐成熟和互联网技术的发展,图数据库被越来越多地应用于各个应用领域,比如,金融领域、医疗领域、安全领域等等。图数据库中的图数据由节点(顶点)和边组成,其中,节点表示实体,以及边表示实体之间的关系。例如,社交图数据中,每个人表示一个节点,以及他们的关系(比如,朋友,家人,同事等)构成边。相较于关系型数据库,图数据库对图数据的存储、查询以及数据结构等存在有较大的差别。
在对图数据库中的数据进行查询时,存在多种基于不同的图查询语言编写的图查询语句。每种图查询语言具有各自的语法特性,从而使得所编写出的图查询语句之间存在语法差异。由于各种图查询语言所编写出的图查询语句之间存在语法差异,使得在基于图查询语句生成对应的逻辑执行计划时,针对每种图查询语言所编写的图查询语句,绑定一种专用的逻辑执行计划生成器来对图查询语句进行语法和语义解析以及逻辑执行计划生成,并且生成不同的逻辑执行计划,从而无法实现逻辑执行计划生成时的图查询语言兼容。
鉴于此,本说明书的实施例提出一种图逻辑执行计划生成方案。在该图逻辑执行计划生成方案中,针对图查询语句生成由图逻辑算子组成的图逻辑执行计划。由于图逻辑算子用于描述图查询语句所对应的图查询任务的最小处理逻辑执行单元,与图查询语句的具体图查询语言实现无关,从而针对基于不同图查询语言实现的具有相同语义的图查询语句,可以得到相同的图逻辑执行计划,由此实现图逻辑执行计划生成方案的图查询语言兼容性。
下面参照附图描述根据本说明书的实施例的图逻辑执行计划生成方法、数据处理方法、图逻辑执行计划生成装置和数据处理装置。
图1示出了根据本说明书的实施例的图逻辑执行计划生成方法100的示例流程图。图逻辑执行计划生成方法100可以由图逻辑执行计划生成装置执行。
如图1所示,在110,在接收到图查询语句后,生成图查询语句的抽象语法树。
图查询语句例如可以由图逻辑执行计划生成装置从可无线连接或有线连接的其它设备(例如,用户设备)处接收。其它设备的示例例如可以包括但不限于服务器、终端、智能设备等。图2示出了根据本说明书的实施例的图查询语句的示例示意图。图2所示出的图查询语句用于从图数据库中获取姓名为Tom的人物所有参演的电影。
在接收到图查询语句后,对图查询语句进行词法分析和语法分析,由此确定图查询语句的语法结构和层次关系,并根据所确定出的语法结构和层次关系生成抽象语法树(Abstract Syntax Tree,AST)。抽象语法树是图查询语句的源代码的抽象语法结构的树状表示。抽象语法树中的每个节点都表示源代码的一种结构。抽象语法树不会表示出图查询语句的真实语法中出现的每个细节,比如,嵌套括号被隐含在树结构中,在抽象语法树中不会以树节点的形式呈现。
图3示出了根据本说明书的实施例的抽象语法树生成过程的示例示意图。
如图3所示,在接收到图查询语句后,对图查询语句进行词法分析。例如,利用词法分析器Lex,从左到右逐字符扫描图查询语句。在扫描过程,如果遇到正确的字符结构,则返回对应的词法单元(token)给语法树构建器。如果遇到不正确的字符结构,则给出报错信息,例如,转义字符等。
在从语法分析器Lex接收到词法单元后,语法树构建器开始自上而下地构建抽象语法树。在进行抽象语法树构建时,如果遇到的词法单元是非运算符,则将该词法单元包装为语法树节点结构并压入语法树构建器的语法树节点栈。如果遇到的词法单元是运算符,则需要添加新的运算符到运算符栈,并将得到的操作数包装为语法树节点压入语法树节点栈中。每次向运算符栈压入新运算符之前,都需要查看当前运算符栈顶的旧运算符与新运算符之间的运算优先级。如果旧运算符的优先级高,则先处理旧运算符(用掉语法树节点栈中的语法树节点,并将运算得到的节点再压回语法树节点栈)。旧运算符完成处理后出栈,随后的旧运算符成为新的栈顶运算符。针对该新栈顶运算符和新运算符重复上述过程,直到处于栈顶的旧运算符的优先级低于新运算符,并将新运算符压入运算符栈。
图4示出了根据本说明书的实施例的抽象语法树的示例示意图。图4中的抽象语法树基于图2中示出的图查询语句得到。要说明的是,图查询语句可以基于不同图查询语言编写出,针对具有相同语义的图查询语句(即,用于实现相同查询处理的图查询语句),不同查询语言编写出的图查询语句的表达形式会存在差异,由此导致所得到的抽象语法树也存在差异。
在如上得到抽象语法树后,在120,对抽象语法树进行基于图逻辑算子的图逻辑转换,以得到图查询语句的图逻辑执行计划,所得到的图逻辑执行计划中的图逻辑算子被形成为树状结构。
图逻辑算子是用于描述图查询任务的最小执行单元,比如,用于获取点的图逻辑算子、用于获取边的图逻辑算子、用于获取不定跳路径的图逻辑算子等。针对相同的图查询任务单元,图逻辑算子具有统一的表现形式,与查询任务的具体图查询语言表现形式无关。
下面列出本说明书的实施例所设计的图逻辑算子的示例描述。
(1)图逻辑算子AllNodesScan,参数为(binding_var:String),输出结果为binding_var,用于获取所有节点,结果绑定在变量binding_var。
(2)图逻辑算子NodeByLabelsScan,参数为(binding_var:String,labels:LabelTree),输出结果为binding_var,用于获取符合标签约束的数据,标签约束为labels:LabelTree,LabelTree支持label的与(And),或(Or),非(Not)操作,结果绑定在变量binding_var。
(3)图逻辑算子NodeSeek,参数为(binding_var:String,labels:String,field:String,value:Expr),输出结果为binding_var,用于使用索引差值节点,结果绑定在变量binding_var。
(4)图逻辑算子ExpandAll,参数为(src_ref:String,binding_dst:String,binding_edge:String,dir:Direction,labels:LabelTree,filters:List<Expr>),输出结果为child.row.columns,binding_dst和binding_edge,用于在给定起始点变量src_ref的情况下,遍历给定方向dir的边及目标点,所获得的边绑定在变量binding_edge,以及所获得的目标点绑定在变量binding_dst。算子内支持设置边标签过滤条件labels。此外,算子内支持设置过滤条件filters,以用于进行PerNodeLimit扩展。
(5)图逻辑算子VarLengthExpand,参数为(src_ref:String,binding_dst:String,binding_edges:String,binding_edge:String,dir:Direction,labels:LabelTree,filters:List<Expr>,min_hop:Integer,max_hop:Integer),输出结果为child.row.columns,binding_dst和binding_edges,用于在给定起始点变量src_ref的情况下,遍历给定方向dir的多跳结果,所获得的目标点绑定在变量binding_dst,中间节点没有对应的绑定。变量binding_edges表示路径中的所有边,变量binding_edge表示路径中的每条边,在算子执行过程中,binding_edge代表的边持续改变,在算子执行结束时,binding_edge的生命周期结束。算子内支持设置边标签过滤条件labels。算子内支持设置过滤条件filters,以用于进行PerNodeLimit扩展。
(6)图逻辑算子Create,参数为(binding_var:String,properties:List<String,Expr>),输出结果为Null(空),用于创建点或边。所创建的点或边绑定在变量binding_var。
(7)图逻辑算子Delete,参数为(var_ref:String),输出结果为Null,用于删除点或边。
(8)图逻辑算子SetProperty,参数为(var_ref:String,field:String,value:Expr),输出结果为Null,用于设置点或边的属性。
(9)图逻辑算子Apply,参数为(),输出结果为lhs.row.columns,rhs.row.columns,用于将左侧算子所获取的行数据提供给右侧算子使用。Apply算子所产生的行数据包含左侧数据和右侧数据。
(10)图逻辑算子SemiApply,参数为(),输出结果为lhs.row.columns,用于将左侧算子所获取的行数据提供给右侧算子使用。如果右侧算子至少产生一行数据(存在结果),则SemiApply算子所产生的行数据仅包含左侧行数据。否则,SemiApply算子不产生任何数据。
(11)图逻辑算子AntiSemiApply,参数为(),输出结果为lhs.row.columns,用于将左侧算子所获取的行数据提供给右侧算子使用。AntiSemiApply算子所产生的行数据仅包含左侧行数据。否则,AntiSemiApply算子不产生任何数据。
(12)图逻辑算子Argument,参数为(args:List<String>),输出结果为Null,用于从左侧向右侧传递行数据。
(13)图逻辑算子ProcedureCall,参数为(name:String,args:List<Expr>),输出结果为child.row.columns,用于调用存储过程。
(14)图逻辑算子CartesianProduct,参数为(),输出结果为hs.row.columns,rhs.row.columns,用于生成两个输入的笛卡尔积,其中,来自左侧算子的每个行将与来自右侧算子的所有行组合。
(15)图逻辑算子ProduceResults,参数为(),输出结果为child.row.columns,用于准备结果。
(16)图逻辑算子Optional,参数为(),输出结果为child.row.columns,用于Optional Match查询。Optional将传递任意子算子所提供的行。如果子算子不提供任何数据,则产生一个所有列均为null的行。
(17)图逻辑算子Filter,参数为(filters:List<Expr>),输出结果为child.row.columns,用于过滤每行数据,仅传递谓词结果为true的行。
(18)图逻辑算子Projection,参数为(items:List<tuple<Expr,String>>),输出结果为[item[1]for itemin items],用于计算一组表达式并生成结果。
(19)图逻辑算子Sort,参数为(sort:List<Tuple<Expr,Order>>),输出结果为child.row.columns,用于按所提供的键对行进行排序。
(20)图逻辑算子Limit,参数为(limit:Integer),输出结果为child.row.columns,用于从传入的行中返回前n行。
(21)图逻辑算子Skip,参数为(skip:Interger),输出结果为child.row.columns,用于从传入的行中跳过n行。
(22)图逻辑算子Distinct,参数为(),输出结果为child.row.columns,用于从传入的行中删除重复行。
(23)图逻辑算子Aggregation,参数为(group:List<tuple<Expr,String>>,aggregation:List<tuple<Expr,String>>),输出结果为[g[1]for g in group]+[a[1]fora in aggregation],用于计算分组的表达式并根据结果进行分组,对每个分组通过聚合函数计算聚合结果。
(24)图逻辑算子GetEdges,参数为(src_ref:String,binding_edge:String,dir:Direction,labels:LabelTree,filters:List<Expr>),输出结果为child.row.columns,binding_edge,用于在给定起点src_ref的情况下,遍历给定方向dir的边,所获得的边绑定在变量binding_edge。算子内支持设置边标签过滤条件labels。算子内支持设置过滤条件filters,以用于进行PerNodeLimit扩展。相较于ExpandAll算子,GetEdges算子不获取目标点,可以用于对特定存储引擎进行查询优化。
(25)图逻辑算子ExtractEdge,参数为(edge_ref:String,binding_dst:String),输出结果为child.row.columns,binding_dst,用于在定边edge_ref的情况下,获取边的目标点,结果绑定在变量binding_dst。
所设计的图逻辑算子延用了部分关系性逻辑算子,比如,Filter算子和Sort算子等,也设计了专用于图数据库处理的算子,比如,AllNodesScan算子、NodeByLabelsScan算子、NodeSeek算子、ExpandAll算子、VarLengthExpand算子、Create算子、Delete算子、SetProperty算子、Apply算子、SemiApply算子、AntiSemiApply算子、Argument算子、GetEdges算子、ExtractEdge算子等。
图5示出了根据本说明书的实施例的图逻辑转换过程500的示例流程图。
如图5所示,在510,根据抽象语法树的节点结构和节点语义,将抽象语法树切分为多个可转换子树结构,所切分出的可转换子树结构包括可独立完成图逻辑转换的子树结构,并且具有图逻辑转换方式。图逻辑转换方式例如可以包括图逻辑算子转换和图逻辑算子执行顺序关系转换。图逻辑算子转换用于指示将可转换子树结构转换为图逻辑算子或者按照执行顺序依次连接的图逻辑算子组合(集合)。图逻辑算子执行顺序关系转换用于指示将可转换子树结构转换为先前已经转换的子树结构中的图逻辑算子之间的执行顺序关系。这里,独立完成图逻辑转换是指针对可转换子树结构的图逻辑转换不需要或依赖于该可转换子树结构之外的抽象语法树结构。在一些实施例中,可转换子树结构可以包括可独立完成图逻辑转换的最大子树结构。
在一些实施例中,可转换子树结构的图逻辑转换方式可以基于可转换子树结构的节点结构和节点语义来确定出。如果可转换子树结构包括多个语法树节点,则确定该可转换子树结构的图逻辑转换方式为图逻辑算子转换。如果可转换子树结构包括单个语法树节点且语法树节点的节点语义指示对应一个图逻辑处理,则确定该可转换子树结构的图逻辑转换方式为图逻辑算子转换。如果可转换子树结构包括单个语法树节点且语法树节点的节点语义指示对应下游子节点的图逻辑处理之间的关系,则确定该可转换子树结构的图逻辑转换方式为图逻辑算子执行顺序关系转换。
例如,在遍历到抽象语法树的一个语法树节点时,例如,MatchStatement、PrimitiveResultStatement,根据该语法树节点的节点语义(比如,节点属性和节点定义等)判断为该语法树节点可进行图逻辑算子转换,则根据抽象语法树的节点结构找出与该语法树节点相对应的可独立执行的子树结构,并将该子树结构切换为可转换子树结构。
在一些实施例中,可以按照树遍历的方式来遍历抽象语法树,并根据抽象语法树的节点结构和节点语义来从抽象语法树中搜索出多个可转换子树结构。
在520,针对每个可转换子树结构,根据该可转换子树结构的图逻辑转换方式对该可转换子树结构进行图逻辑转换。在完成所有可转换子树结构的图逻辑转换后,可以得到图查询语句的图逻辑执行计划。
在一些实施例中,在按照树遍历的方式搜索可转换子树结构后,一旦搜索出可转换子树结构,就立刻执行所搜索出的可转换子树结构的图逻辑转换。在一些实施例中,可以在搜索出所有可转换子树结构后,才开始执行可转换子树结构的图逻辑转换。
图6示出了根据本说明书的实施例的基于树遍历的图逻辑转换过程600的示例流程图。
如图6所示,自抽象语法树的根节点开始进行树遍历,循环执行图逻辑转换过程。在每次图逻辑转换时,在610,遍历抽象语法树的未处理结构,以搜索出当前未处理结构中的首个可转换子树结构。例如,可以从上一图逻辑转换过程所处理的可转换子树结构的根节点起,在抽象语法树的剩余树结构中继续遍历来进行可转换子树结构搜索。
在620,在搜索出可转换子树结构后,根据该可转换子树结构的图逻辑转换方式来对该可转换子树结构进行图逻辑转换。
在630,判断是否针对抽象语法树的所有语法树节点都完成了图逻辑转换。如果还存在未完成图逻辑转换的语法树节点,则返回到610,执行下一图逻辑转换过程。如果针对所有语法树节点都完成图逻辑转换,则输出当前得到的图逻辑算子树结构,作为图逻辑执行计划。
图7示出了根据本说明书的实施例的图逻辑转换过程的示例示意图。
如图7所示,按照树遍历的方式自抽象语法树的根节点开始进行图逻辑转换。首先,在根节点的左侧分支结构中搜索可转换子树结构,在搜索到根节点的左侧子节点时,发现该子节点为MatchStatement节点。根据MatchStatement节点的节点语义,可以判断存在以MatchStatement节点为根节点的子树结构可独立完成图逻辑转换。随后,基于抽象语法树的节点结构,找出以MatchStatement节点为根节点的可转换子树结构,如图中的左侧虚线框所示。接着,将所找出的以MatchStatement节点为根节点的可转换子树结构转换为对应的图逻辑算子集合。例如,基于MatchStatement所对应的可转换子树结构的语义信息,将该可转换子树结构为转换为图逻辑算子ExpandAll(src_ref:n,binding_dst:m,dir:PointRight)和AllNodesScan(n),同时该两个图逻辑算子组成父子关系,其中,ExpandAll(src_ref:n,binding_dst:m,dir:PointRight)为父图逻辑算子,以及AllNodesScan(n)为子图逻辑算子,即,ExpandAll->AllNodesScan。
在如上完成针对根节点的左侧分支结构的图逻辑转换后,自可转换子树结构的根节点(即,MatchStatement节点)起,执行针对抽象语法树的未处理结构的遍历处理,由此在根节点的右侧分支中进一步进行搜索,进而搜索到以PrimitiveStatement为根节点的第二个可转换子树结构。基于该第二个可转换子树结构的语义信息分析,可将第二个可转换子树结构转换为图逻辑算子Projection。
在完成图逻辑算子Projection转换后,抽象语法树还剩下根节点未处理。通过对根节点的节点语义分析,该根节点用于描述MatchStatement节点和PrimitiveStatement节点之间的逻辑执行顺序关系,由此将根节点的图逻辑转换方式确定为图逻辑算子执行顺序关系转换,并按照根节点所反映出的MatchStatement节点和PrimitiveStatement节点之间的逻辑执行顺序关系,顺序连接MatchStatement节点和PrimitiveStatement节点所对应的图逻辑算子结构,即,将MatchStatement节点所对应的图逻辑算子结构ExpandAll->AllNodesScan和PrimitiveStatement节点所对应的图逻辑算子Projection转换为父子关系,由此完成抽象语法树的图逻辑转换处理,并得到图查询语言所对应的图逻辑执行计划。
针对不同图查询语言所编写的同一图查询语句,由于语义表达和语法结构上的差异,导致所生成的抽象语法树也会存在不同语义表达造成的语义差异(语义结构实现差异)和相同语义表达但语法结构不同而导致的结构差异(语法结构实现差异)。
图8示出了两种不同图查询语言所编写的图查询语句的抽象语法树之间的差异对比图。在图8中,分别示出了基于GQL语言实现的图查询语句的抽象语法树和基于CYPHER语言实现的图查询语句的抽象语法树。
从图8中可以看出,两个抽象语法树之间存在如图所示的语义结构实现差异和语法结构实现差异。在本说明书中,术语“语义结构实现差异”用于指代不同图查询语言实现的图查询语句所对应的抽象语法树中针对同一图查询功能或图查询任务(例如,同一对象)的整体结构或者局部结构(子树结构)所描述的图查询语义不同且不能完整转换。例如,针对对象“EdgePattern”,基于GQL语言实现的图查询语句的抽象语法树中具有三个节点“Variable:e”、“LabelName:acted_in”和“RIGHT ARROW”,而基于CYPHER语言实现的图查询语句的抽象语法树中具有两个节点“LabelName:acted_in”和“RIGHT ARROW”,从而针对对象“EdgePattern”,两个抽象语法树之间存在语义结构实现差异。
术语“语法结构实现差异”用于指代不同图查询语言实现的图查询语句所对应的抽象语法树中针对同一图查询功能或图查询任务(例如,同一对象)的整体结构或者局部结构(子树结构)所描述的图查询语义相同,但由于语言特性、生成方法等问题而导致语法结构不同。例如,基于GQL语言实现的图查询语句的抽象语法树中的由“where clause”所引导的子树结构与基于CYPHER语言实现的图查询语句的抽象语法树中由“Property”所引导的子树结构具有相同的图查询语义,但语法实现结构不同。
考虑到从抽象语法树到图逻辑执行计划的转换过程比较复杂,并且不同的图查询语言所编写的图查询语句所对应的抽象语法树存在语法结构和语义结构上的差异性,从而针对每种图查询语言所编写的图查询语句,都需要分别执行不同的抽象语法树到图逻辑执行计划的转换过程,从而使得在面对不同图查询语言平台时的图逻辑执行计划生成方案效率不高。
为此,设计了一种通用语法树结构,在该通用语法树结构中,针对语义结构实现差异,可以在通用语法树结构中合并考虑多种不同图查询语言所对应的语法树子结构,即,在同一父节点下并列列出多种不同图查询语言所对应的语法树子结构。针对语法结构实现差异(语义相同,但语法实现结构不同),可以将多种不同图查询语言所对应的语法结构统一为一种标准语法结构,由此消除多种不同的图查询语言之间的语法结构差异和语义结构差异。标准语法结构可以是从多种不同图查询语言所对应的语法结构中选择出的,或者综合考虑多种不同图查询语言所对应的语法结构来构建出,或者是独立设计的一种语法结构。
在一些实施例中,例如,在图查询语句包括声明式图查询语句的情况下,还可以将抽象语法树转换为通用语法树,通用语法树被设计为针对语义相同的图查询语句的不同图查询语言实现方式具有统一的描述结构。然后,对通用语法树进行基于图逻辑算子的图逻辑转换,以生成图查询语句的图逻辑执行计划。基于通用语法树的图逻辑转换过程与上述基于抽象语法树的图逻辑转换过程类似,在此不再描述。
图9示出了根据本说明书的实施例的语法树转换过程900的示例流程图。
如图9所示,在910,从抽象语法树中确定出存在图查询语言实现差异的差异子树结构。差异子树结构可以具有差异类型。差异子树结构的差异类型例如可以包括语义结构实现差异和语法结构实现差异。例如,可以从底而下遍历抽象语法树,对所遍历到的节点,根据通用语法树的树结构规定,确定是否存在以该节点为根节点的差异子树结构,并且确定出差异子树结构的差异类型。这里,差异子树结构可以包括用于实现节点所表示的图查询语义。例如,根据通用语法树的树结构规定,对于节点Match,每个EdgePattern子节点需要具有一个对应的Variable子节点。在当前抽象语法树中,针对节点Match,如果子节点EdgePattern不具有子节点Variable,那么子节点EdgePattern所引导的子树结构就是差异子树。
在920,根据差异子树结构的差异类型所对应的结构转换方式,对差异子树结构进行结构转换。例如,如果差异子树结构的差异类型为语义结构实现差异,则在差异子树结构的父节点下增加标准通用语法树中规定的其它图查询语言实现的子树结构。如果差异子树结构的差异类型为结构实现差异,则将差异子树结构转换为标准通用语法树中规定的统一子树结构。
图10A和图10B示出了根据本说明书的实施例的差异树结构转换的示例示意图。
在图10A的示例中,差异子树结构的差异类型为语义结构实现差异,即,在抽象语法树中具有存在语义结构实现差异的子树结构P1。在这种情况下,通用语法树在子树结构P1的父节点下还有并列列出的其它图查询语言实现的子树结构P2,由此在抽象语法树中,在该父节点下增加其它图查询语言实现的子树结构P2,由此实现不同图查询语言下的通用语法树的结构一致。
在图10B的示例中,差异子树结构的差异类型为语法结构实现差异,即,针对同一语义的不同语法表达形式。在这种情况下,将节点Expression、OrExpression,XorExpression和AndExpression进行表达式压缩来压缩为节点BAnd。在其它示例中,也可以按照其它预定规则来实现语法结构的统一化处理。例如,在一些实施例中,可以将不同图查询语言的语法表达形式统一为某种图查询语言的语法表达形式。例如,可以将图8中示出的语法结构实现差异统一为基于GQL语言实现的语法结构,即,由“where clause”引导的语法结构。
图11示出了根据本说明书的实施例的通用语法树的示例示意图,以及图12示出了根据本说明书的实施例的图逻辑执行计划的示例示意图。
在如上得到图逻辑执行计划后,还可以对所生成的图逻辑执行计划进行计划优化。例如,可以根据图查询任务的逻辑和物理特性,通过一系列的优化算法和规则来进行图逻辑执行计划优化。图逻辑执行计划优化的目标是尽可能减少图查询任务的执行代价,比如,减少I/O访问、减少计算量和优化操作顺序等,由此提高图查询的性能和效率。
在一些实施例中,由于图逻辑执行计划与图查询语句的图查询语言实现无关,从而可以使用可插拔式执行计划优化器实现图逻辑执行计划的计划优化。在可插拔式执行计划优化器中,可以随意自行设计和规定执行计划优化规则,而无需考虑与图逻辑执行计划之间的兼容性。
图13示出了根据本说明书的实施例的经过优化后的图逻辑执行计划的示例示意图。在图13示出的示例中,可以匹配非确定长度的图逻辑执行计划的子计划,例如,Filter->ExpandAll+->AllNodesScan。在匹配到上面的模式后,以RBO Optimizer为例,可以根据优化规则直接调整图逻辑执行计划,例如,优先以n4为查询起点。
利用上述图逻辑执行计划生成方案,针对图查询语句生成由图逻辑算子组成的图逻辑执行计划。由于图逻辑算子用于描述图查询语句所对应的图查询任务的最小处理逻辑执行单元,与图查询语句的具体图查询语言实现无关,从而针对不同图查询语句实现的图查询语句,可以得到相同的图逻辑执行计划,由此实现图逻辑执行计划生成方案的图查询语言兼容性。
利用上述图逻辑执行计划生成方案,通过树遍历的方式来搜索出可转换子树结构并在找到可转换子树结构后立刻执行图逻辑转换,可以提升图逻辑执行计划的生成效率。
利用上述图逻辑执行计划生成方案,通过将可转换子树结构规定为包括可独立完成图逻辑转换的最大子树结构,可以提高一次图逻辑转换的子树结构处理量,由此减少图逻辑转换次数,进而进一步提升图逻辑执行计划的生成效率。
利用上述图逻辑执行计划生成方案,通过将抽象语法树转换为通用语法树,并基于通用语法树来进行语法树到图逻辑执行计划的转换,由于通用语法树到图逻辑执行计划的生成可以按照统一的生成方式来实现,并且抽象语法树到通用语法树的转换过程简单,从而可以降低面对不同图查询语言实现的多种图查询语句时的图逻辑执行计划生成过程的复杂度。
图14示出了根据本说明书的实施例的数据处理方法1400的示例流程图。
如图14所示,在1410,生成图查询语句的抽象语法树。
在1420,对抽象语法树进行基于图逻辑算子的图逻辑转换,以得到图查询语句的图逻辑执行计划,所得到的图逻辑执行计划包括具有树状结构的图逻辑算子集合。图逻辑执行计划的生成过程可以参考上面描述的图逻辑执行计划生成过程。
在1430,根据图逻辑执行计划来执行与图查询语句对应的数据处理。
对于图数据库来说,图查询语句所对应的数据处理任务例如可以包括对图数据库中存储的图数据执行“增”、“删”、“改”、“查”等操作。除“增”操作外,其他操作都需要找到需要进行操作的对象。图数据库中的对象可以包括图数据边、图数据顶点、包含图数据边和图数据顶点的路径等。
在一些实施例中,由于不同图查询语言所实现的图查询语句可以得到相同表现形式的图逻辑执行计划,从而可以认为图逻辑执行计划是图查询语句的统一中间表示,并且可以使用来进行不同图查询语言所编写的图查询语句之间的转换。例如,在存在基于GQL语言编写的图查询语句后,可以使用基于GQL语言编写的图查询语句生成图逻辑执行计划。随后,根据图逻辑执行计划来推导出基于CYPHER(OpenCypher)语言编写的图查询语句,由此实现不同图查询语言之间的图查询语句转换。
图15示出了根据本说明书的实施例的图逻辑执行计划生成装置1500的示例方框图。如图15所示,图逻辑执行计划生成装置1500包括抽象语法生成器1510、语法树转换器1520、图逻辑转换器1530和执行计划优化器1540。
抽象语法树生成器1510被配置为生成图查询语句的抽象语法树。抽象语法树生成器1510的操作可以参考上面参照图1的110描述的操作。
语法树转换器1520被配置为将抽象语法树转换为通用语法树,所得到的通用语法树针对语义相同的图查询语句的不同图查询语言实现方式具有统一的描述结构。语法树转换器1520的操作可以参考上面参照图9描述的操作。
图逻辑转换器1530被配置为对通用语法树进行基于图逻辑算子的图逻辑转换,以生成图查询语句的图逻辑执行计划,所生成的图逻辑执行计划包括具有树状结构的图逻辑算子集合。图逻辑转换器1530的操作可以参考上面参照图5-图7描述的操作。
执行计划优化器1540被配置为对图逻辑执行计划进行优化。
图16示出了根据本说明书的实施例的语法树转换器1600的示例方框图。如图16所示,语法树转换器1600包括差异树结构确定模块1610和差异树结构转换模块1620。
差异树结构确定模块1610被配置为从抽象语法树中确定出存在图查询语言实现差异的差异子树结构。差异树结构确定模块1610的操作可以参考上面参照图9的910描述的操作。
差异树结构转换模块1620被配置为根据差异子树结构的差异类型所对应的结构转换方式,对差异子树结构进行结构转换。
在一些实施例中,图查询语言实现差异可以包括语义结构实现差异和语法结构实现差异。响应于差异子树结构的差异类型为语义结构实现差异,差异树结构转换模块在差异子树结构的父节点下增加标准通用语法树中规定的其它图查询语言实现的子树结构。响应于差异子树结构的差异类型为语法结构实现差异,差异树结构转换模块将差异子树结构转换为所述标准通用语法树中规定的统一子树结构。
图17示出了根据本说明书的实施例的图逻辑转换器1700的示例方框图。如图17所示,图逻辑转换器1700包括树结构切分模块1710和图逻辑转换模块1720。
树结构切分模块1710被配置为根据抽象语法树的节点结构和节点语义,将抽象语法树切分为多个可转换子树结构,所切分出的可转换子树结构包括可独立完成图逻辑转换的子树结构,并且具有图逻辑转换方式。图逻辑转换方式包括图逻辑算子转换和图逻辑算子执行顺序关系转换。树结构切分模块1710的操作可以参考图5的510描述的操作。
图逻辑转换模块1720被配置为根据可转换子树结构的图逻辑转换方式对可转换子树结构进行图逻辑转换。图逻辑转换模块1720的操作可以参考上面参照图5的520描述的操作。
在一些实施例中,树结构切分模块1710可以按照树遍历的方式,根据抽象语法树的节点结构和节点语义来从抽象语法树中搜索出多个可转换子树结构。在一些实施例中,一旦树结构切分模块搜索出可转换子树结构,图逻辑转换模块1720就对所搜索出的可转换子树结构进行图逻辑转换。
要说明的是,在一些实施例中,图逻辑执行计划生成装置1500也可以不包括语法树转换器1520和/或执行计划优化器1540。在不包括语法树转换器1520的情况下,图逻辑转换器1530对抽象语法树进行基于图逻辑算子的图逻辑转换,以生成图查询语句的图逻辑执行计划。
图18示出了根据本说明书的实施例的数据处理装置1800的示例方框图。如图18所示,数据处理装置1800包括抽象语法树生成器1810、图逻辑转换器1810和计划执行器1830。
抽象语法树生成器1810被配置为生成图查询语句的抽象语法树。
图逻辑转换器1820被配置为对抽象语法树进行基于图逻辑算子的图逻辑转换,以得到图查询语句的图逻辑执行计划,所得到的图逻辑执行计划包括被组织为树状结构的图逻辑算子集合。
计划执行器1830被配置为根据图逻辑执行计划来执行与图查询语句对应的数据处理。
如上参照图1到图18,对根据本说明书实施例的图逻辑执行计划生成方法、图逻辑执行计划生成装置、数据处理方法和数据处理装置进行了描述。上述图逻辑执行计划生成装置和数据处理装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图19示出了根据本说明书的实施例的基于计算机系统实现的图逻辑执行计划生成装置1900的示例示意图。如图19所示,图逻辑执行计划生成装置1900可以包括至少一个处理器1910、存储器(例如,非易失性存储器)1920、内存1930和通信接口1940,并且至少一个处理器1910、存储器1920、内存1930和通信接口1940经由总线1960连接在一起。至少一个处理器1910执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1910:生成图查询语句的抽象语法树;以及对抽象语法树进行基于图逻辑算子的图逻辑转换,以得到图查询语句的图逻辑执行计划,图逻辑执行计划包括被组织为树状结构的图逻辑算子集合。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1910进行本说明书的各个实施例中以上结合图1-图13和图15-图17描述的各种操作和功能。
图20示出了根据本说明书的实施例的基于计算机系统实现的数据处理装置2000的示例示意图。如图20所示,数据处理装置2000可以包括至少一个处理器2010、存储器(例如,非易失性存储器)2020、内存2030和通信接口2040,并且至少一个处理器2010、存储器2020、内存2030和通信接口2040经由总线2060连接在一起。至少一个处理器2010执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器2010:生成图查询语句的抽象语法树;对抽象语法树进行基于图逻辑算子的图逻辑转换,以得到图查询语句的图逻辑执行计划,图逻辑执行计划包括具有树状结构的图逻辑算子集合;以及根据图逻辑执行计划来执行与图查询语句对应的数据处理。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器2010进行本说明书的各个实施例中以上结合图14和图18描述的各种操作和功能。
根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-图18描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图1-图18描述的各种操作和功能。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (20)
1.一种用于生成图查询语句的图逻辑执行计划的方法,包括:
生成图查询语句的抽象语法树;以及
对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以得到所述图查询语句的图逻辑执行计划,所述图逻辑执行计划包括被组织为树状结构的图逻辑算子集合。
2.如权利要求1所述的方法,其中,对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以得到所述图查询语句的图逻辑执行计划包括:
根据所述抽象语法树的节点结构和节点语义,将所述抽象语法树切分为多个可转换子树结构,所述可转换子树结构包括可独立完成图逻辑转换的子树结构,并且具有图逻辑转换方式,所述图逻辑转换方式包括图逻辑算子转换和图逻辑算子执行顺序关系转换;以及
根据可转换子树结构的图逻辑转换方式对所述可转换子树结构进行图逻辑转换,以得到所述图查询语句的图逻辑执行计划。
3.如权利要求2所述的方法,其中,根据所述抽象语法树的节点结构和节点语义,将所述抽象语法树切分为多个可转换子树结构包括:
按照树遍历的方式,根据所述抽象语法树的节点结构和节点语义来从所述抽象语法树中搜索出所述多个可转换子树结构。
4.如权利要求3所述的方法,其中,一旦搜索出可转换子树结构,就执行所搜索出的可转换子树结构的图逻辑转换。
5.如权利要求2所述的方法,其中,所述可转换子树结构包括可独立完成图逻辑转换的最大子树结构。
6.如权利要求1所述的方法,还包括:
将所述抽象语法树转换为通用语法树,所述通用语法树针对语义相同的图查询语句的不同图查询语言实现方式具有统一的描述结构,
对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以生成所述图查询语句的图逻辑执行计划包括:
对所述通用语法树进行基于图逻辑算子的图逻辑转换,以生成所述图查询语句的图逻辑执行计划。
7.如权利要求6所述的方法,其中,将所述抽象语法树转换为通用语法树包括:
从所述抽象语法树中确定出存在图查询语言实现差异的差异子树结构;以及
根据所述差异子树结构的差异类型所对应的结构转换方式,对所述差异子树结构进行结构转换。
8.如权利要求7所述的方法,其中,所述图查询语句实现差异包括语义结构实现差异和语法结构实现差异,
根据所述差异子树结构的差异类型所对应的转换方式,对所述差异子树结构进行结构转换包括:
响应于所述差异子树结构的差异类型为语义结构实现差异,在所述差异子树结构的父节点下增加标准通用语法树中规定的其它图查询语言实现的子树结构;
响应于所述差异子树结构的差异类型为语法结构实现差异,将所述差异子树结构转换为所述标准通用语法树中规定的统一子树结构。
9.如权利要求1所述的方法,还包括:
对所生成的图逻辑执行计划进行计划优化。
10.如权利要求9所述的方法,其中,针对所述图逻辑执行计划的计划优化经由可插拔式执行计划优化器实现。
11.一种数据处理方法,包括:
生成图查询语句的抽象语法树;
对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以得到所述图查询语句的图逻辑执行计划,所述图逻辑执行计划包括被组织为树状结构的图逻辑算子集合;以及
根据所述图逻辑执行计划来执行与所述图查询语句对应的数据处理。
12.一种用于生成图查询语句的图逻辑执行计划的装置,包括:
抽象语法树生成器,生成图查询语句的抽象语法树;以及
图逻辑转换器,对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以生成所述图查询语句的图逻辑执行计划,所述图逻辑执行计划包括被组织为树状结构的图逻辑算子集合。
13.如权利要求12所述的装置,其中,所述图逻辑转换器包括:
树结构切分模块,根据所述抽象语法树的节点结构和节点语义,将所述抽象语法树切分为多个可转换子树结构,所述可转换子树结构包括可独立完成图逻辑转换的子树结构,并且具有图逻辑转换方式,所述图逻辑转换方式包括图逻辑算子转换和图逻辑算子执行顺序关系转换;以及
图逻辑转换模块,根据可转换子树结构的图逻辑转换方式对所述可转换子树结构进行图逻辑转换。
14.如权利要求13所述的装置,其中,所述树结构切分模块按照树遍历的方式,根据所述抽象语法树的节点结构和节点语义来从所述抽象语法树中搜索出所述多个可转换子树结构。
15.如权利要求12所述的装置,还包括:
语法树转换器,将所述抽象语法树转换为通用语法树,所述通用语法树针对语义相同的图查询语句的不同图查询语言实现方式具有统一的描述结构,
所述图逻辑转换器对所述通用语法树进行基于图逻辑算子的图逻辑转换,以生成所述图查询语句的图逻辑执行计划。
16.如权利要求15所述的装置,其中,所述语法树转换器包括:
差异树结构确定模块,从所述抽象语法树中确定出存在图查询语言实现差异的差异子树结构;以及
差异树结构转换模块,根据所述差异子树结构的差异类型所对应的结构转换方式,对所述差异子树结构进行结构转换。
17.如权利要求16所述的装置,其中,所述图查询语句实现差异包括语义结构实现差异和语法结构实现差异,
响应于所述差异子树结构的差异类型为语义结构实现差异,所述差异树结构转换模块在所述差异子树结构的父节点下增加标准通用语法树中规定的其它图查询语言实现的子树结构;
响应于所述差异子树结构的差异类型为语法结构实现差异,所述差异树结构转换模块将所述差异子树结构转换为所述标准通用语法树中规定的统一子树结构。
18.一种数据处理装置,包括:
抽象语法树生成器,生成图查询语句的抽象语法树;
图逻辑转换器,对所述抽象语法树进行基于图逻辑算子的图逻辑转换,以得到所述图查询语句的图逻辑执行计划,所述图逻辑执行计划包括被组织为树状结构的图逻辑算子集合;以及
计划执行器,根据所述图逻辑执行计划来执行与所述图查询语句对应的数据处理。
19.一种用于生成图查询语句的图逻辑执行计划的装置,包括:
至少一个处理器;
与所述至少一个处理器耦合的存储器;以及
存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1到10中任一所述的用于生成图查询语句的图逻辑执行计划的方法。
20.一种数据处理装置,包括:
至少一个处理器;
与所述至少一个处理器耦合的存储器;以及
存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求11所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311853712.3A CN117785884B (zh) | 2023-12-28 | 图查询语句的图逻辑执行计划生成方法、数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311853712.3A CN117785884B (zh) | 2023-12-28 | 图查询语句的图逻辑执行计划生成方法、数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117785884A true CN117785884A (zh) | 2024-03-29 |
CN117785884B CN117785884B (zh) | 2024-09-03 |
Family
ID=
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010107113A (ko) * | 2000-05-25 | 2001-12-07 | 서정연 | 자연어 정보 검색 시스템에서 구문 트리를 이용한 자연어질의의 불린 질의 및 벡터 질의 변환 방법 |
KR20160021585A (ko) * | 2014-08-18 | 2016-02-26 | 슈어소프트테크주식회사 | 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체 |
US20200117664A1 (en) * | 2018-10-15 | 2020-04-16 | Ocient Inc. | Generation of a query plan in a database system |
CN111221852A (zh) * | 2018-11-27 | 2020-06-02 | 北京奇虎科技有限公司 | 基于大数据的混合查询处理方法及装置 |
CN113918160A (zh) * | 2021-09-02 | 2022-01-11 | 杭州欧若数网科技有限公司 | 图数据库执行计划生成及调度的方法、系统、装置和介质 |
CN114443041A (zh) * | 2021-11-30 | 2022-05-06 | 阿里云计算有限公司 | 抽象语法树的解析方法及计算机程序产品 |
CN115982416A (zh) * | 2023-01-29 | 2023-04-18 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置、可读存储介质及电子设备 |
CN116795859A (zh) * | 2022-03-14 | 2023-09-22 | 腾讯科技(深圳)有限公司 | 数据分析方法、装置、计算机设备和存储介质 |
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010107113A (ko) * | 2000-05-25 | 2001-12-07 | 서정연 | 자연어 정보 검색 시스템에서 구문 트리를 이용한 자연어질의의 불린 질의 및 벡터 질의 변환 방법 |
KR20160021585A (ko) * | 2014-08-18 | 2016-02-26 | 슈어소프트테크주식회사 | 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체 |
US20200117664A1 (en) * | 2018-10-15 | 2020-04-16 | Ocient Inc. | Generation of a query plan in a database system |
CN111221852A (zh) * | 2018-11-27 | 2020-06-02 | 北京奇虎科技有限公司 | 基于大数据的混合查询处理方法及装置 |
CN113918160A (zh) * | 2021-09-02 | 2022-01-11 | 杭州欧若数网科技有限公司 | 图数据库执行计划生成及调度的方法、系统、装置和介质 |
CN114443041A (zh) * | 2021-11-30 | 2022-05-06 | 阿里云计算有限公司 | 抽象语法树的解析方法及计算机程序产品 |
CN116795859A (zh) * | 2022-03-14 | 2023-09-22 | 腾讯科技(深圳)有限公司 | 数据分析方法、装置、计算机设备和存储介质 |
CN115982416A (zh) * | 2023-01-29 | 2023-04-18 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置、可读存储介质及电子设备 |
Non-Patent Citations (3)
Title |
---|
WEISONG SUN等: "Abstract Syntax Tree for Programming Language Understanding and Representation: How Far Are We?", ARIXV, 1 December 2023 (2023-12-01) * |
李寒雪: "基于Cypher的图数据库查询编译器实现与测试", 中国优秀硕士学位论文全文数据库, 15 January 2023 (2023-01-15) * |
李陈扬: "基于图数据库的查询计划生成与优化研究", 中国优秀硕士学位论文全文数据库 信息科技辑, no. 1, 15 January 2022 (2022-01-15), pages 138 - 886 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9053210B2 (en) | Graph query processing using plurality of engines | |
US9158859B2 (en) | Segment matching search system and method | |
US7860863B2 (en) | Optimization model for processing hierarchical data in stream systems | |
US10901990B1 (en) | Elimination of common subexpressions in complex database queries | |
US10762087B2 (en) | Database search | |
EP3671526B1 (en) | Dependency graph based natural language processing | |
US11281864B2 (en) | Dependency graph based natural language processing | |
KR102294522B1 (ko) | 파서 생성 | |
US9311058B2 (en) | Jabba language | |
US10360002B2 (en) | Method, apparatus, and computer-readable medium for generating an alternative implementation of a program on one or more engines | |
Ghrab et al. | Grad: On graph database modeling | |
US10726006B2 (en) | Query optimization using propagated data distinctness | |
Unbehauen et al. | Accessing relational data on the web with sparqlmap | |
CN111444220A (zh) | 规则驱动和数据驱动相结合的跨平台sql查询优化方法 | |
US8515983B1 (en) | Segment matching search system and method | |
CN101101610A (zh) | 基于多水平划分法的大规模集成电路划分方法 | |
KR20130064160A (ko) | Rdf 데이터에 대한 sparql 질의 결과의 개체 관계 변형 시스템 및 그 방법 | |
CN117785884B (zh) | 图查询语句的图逻辑执行计划生成方法、数据处理方法及装置 | |
CN117785884A (zh) | 图查询语句的图逻辑执行计划生成方法、数据处理方法及装置 | |
CN112783836A (zh) | 信息交换方法、装置及计算机存储介质 | |
RU2605387C2 (ru) | Способ и система для хранения данных графов | |
CN115809294A (zh) | 一种基于Spark SQL临时视图的快速ETL方法 | |
CN115292347A (zh) | 一种基于规则的主动式sql算法性能检查装置及方法 | |
EP3944127A1 (en) | Dependency graph based natural language processing | |
CN112965723B (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 |