CN113918160A - 图数据库执行计划生成及调度的方法、系统、装置和介质 - Google Patents
图数据库执行计划生成及调度的方法、系统、装置和介质 Download PDFInfo
- Publication number
- CN113918160A CN113918160A CN202111046369.2A CN202111046369A CN113918160A CN 113918160 A CN113918160 A CN 113918160A CN 202111046369 A CN202111046369 A CN 202111046369A CN 113918160 A CN113918160 A CN 113918160A
- Authority
- CN
- China
- Prior art keywords
- execution plan
- execution
- scheduling
- node
- message
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种图数据库执行计划生成及调度的方法、系统、装置和介质,其中,该方法包括:获取图查询语句,通过词法解析器分析图查询语句,生成预先定义好的Token,并通过语法解析器将该预先定义好的Token解析成数据结构,得到抽象语法树;接着,通过执行计划生成器对该抽象语法树进行处理,生成执行计划,并通过执行计划优化器对执行计划进行优化,其中,执行计划包括自定义的执行计划算子和自定义的拓扑结构;最后,通过执行计划调度器对执行计划进行调度,输出得到执行结果。通过本申请,解决了由于图数据库执行计划的执行代码不能复用和执行调度无法并行执行,而导致的研发成本高、执行不灵活的问题,降低了开发成本,提高了执行效率。
Description
技术领域
本申请涉及图数据库技术领域,特别是涉及图数据库执行计划生成及调度的方法、系统、装置和介质。
背景技术
图数据库是一种用于存储图数据的数据库,具有提供用户查询图数据的能力。通常图数据库会提供图查询语言,使得用户能通过图查询语言描述需要的图数据。图数据库通常包含图查询引擎以及图存储引擎,其中,图存储引擎用于存储图数据,图查询引擎用于查询图数据。图查询引擎的重要组成部分主要包括:词法解析器(Scanner)及语法解析器(Parser)、语义分析器(Semantic Analyzer)、执行计划生成器(Planner)、执行计划优化器(Optimizer)和执行计划调度器(Scheduler),其中,执行计划是指由多个执行节点组成的相互依赖的一个图拓扑,通过这样一个图拓扑可以完成从图存储中拉取图数据并进行后续各种计算的逻辑,最后向用户输出最终结果。
在相关技术中,图数据库中的执行计划需要专用代码执行相关查询语言,且不能复用,此外,执行计划的调度是同步调度,无法实现并行化执行调度。
目前针对相关技术中,由于图数据库执行计划的执行代码不能复用和执行调度无法并行执行,而导致的研发成本高、执行不灵活的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种图数据库执行计划生成及调度的方法、系统、装置和介质,以至少解决相关技术中由于图数据库执行计划的执行代码不能复用和执行调度无法并行执行,而导致的研发成本高、执行不灵活的问题。
第一方面,本申请实施例提供了一种图数据库执行计划生成及调度的方法,所述方法包括:
获取图查询语句,通过词法解析器分析所述图查询语句,生成预先定义好的Token,并通过语法解析器将所述预先定义好的Token解析成数据结构,得到抽象语法树;
通过执行计划生成器对所述抽象语法树进行处理,生成执行计划,并通过执行计划优化器对所述执行计划进行优化,其中所述执行计划包括自定义的执行计划算子和自定义的拓扑结构;
通过执行计划调度器对所述执行计划进行调度,输出执行结果。
在其中一些实施例中,所述通过执行计划调度器对所述执行计划进行调度包括:
通过所述执行计划中依赖节点的消息通知器向所述节点发送消息;
所述节点的消息接收器接收到所述消息,并通过所述消息对所述节点进行执行计划的执行或错误处理。
在其中一些实施例中,在通过所述消息对所述节点进行执行计划的执行之后,所述方法包括:
通过所述执行计划调度器对所述节点进行动态调度。
在其中一些实施例中,所述通过所述执行计划调度器对所述节点进行动态调度包括:
所述执行计划调度器通过分支选择节点的执行结果调度分支;
所述执行计划调度器通过循环节点的执行结果调度LoopBody分支,其中,当所述循环节点的执行结果为false时,退出循环,否则继续循环。
在其中一些实施例中,所述执行计划的遍历方式包括:
通过广度优先遍历的方式,所述执行计划调度器遍历所述执行计划,为所述执行计划的各个节点建立完整的消息通知流;
所述执行计划从叶子节点开始执行,并通过所述消息流依次触发执行计划执行。
在其中一些实施例中,在得到抽象语法树之后,所述方法包括:
通过语义分析器对所述抽象语法树进行分析,判断所述抽象语法树的语义是否合法,其中所述语义合法性可由用户进行自定义。
第二方面,本申请实施例提供了一种图数据库执行计划生成及调度的系统,所述系统包括:
解析模块,用于获取图查询语句,通过词法解析器分析所述图查询语句,生成预先定义好的Token,并通过语法解析器将所述预先定义好的Token解析成数据结构,得到抽象语法树;
生成优化模块,用于通过执行计划生成器对所述抽象语法树进行处理,生成执行计划,并通过执行计划优化器对所述执行计划进行优化,其中所述执行计划包括自定义的执行计划算子和自定义的拓扑结构;
调度模块,用于通过执行计划调度器对所述执行计划进行调度,输出执行结果。
在其中一些实施例中,所述调度模块,还用于通过所述执行计划中依赖节点的消息通知器向所述节点发送消息,
所述节点的消息接收器接收到所述消息,并通过所述消息对所述节点进行执行计划的执行或错误处理。
第三方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的图数据库执行计划生成及调度的方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的图数据库执行计划生成及调度的方法。
相比于相关技术,本申请实施例提供的图数据库执行计划生成及调度的方法,获取图查询语句,通过词法解析器分析图查询语句,生成预先定义好的Token,并通过语法解析器将该预先定义好的Token解析成数据结构,得到抽象语法树;接着,通过执行计划生成器对该抽象语法树进行处理,生成执行计划,并通过执行计划优化器对执行计划进行优化,其中,执行计划包括自定义的执行计划算子和自定义的拓扑结构;最后,通过执行计划调度器对执行计划进行调度,输出得到执行结果。
本申请的有益效果有:1、本申请对执行计划算子及拓扑结构进行自定义设计,通过执行计划实现查询语言的底层执行逻辑,自定义的执行计划算子可以被不同的语法或者语言复用,达到模块化,可复用的目的,降低了研发成本。2、本申请的调度器通过异步消息通知机制,高效调度执行计划,减少阻塞,使得执行计划可以灵活设计。且执行计划不同的分支之间可以实现并行执行和动态调度,有效提升了执行效率,达到了低延时的目的。3、本申请通过广度优先遍历的方式遍历执行计划,能防止递归方式导致堆栈溢出的现象。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的图数据库执行计划生成及调度的方法的流程图;
图2是根据本申请实施例的各拓扑结构示意图;
图3是根据本申请实施例的某一执行计划实例示意图;
图4是根据本申请实施例的各拓扑结构对应的调度机制示意图;
图5是根据本申请实施例的图数据库执行计划生成及调度的系统的结构框图;
图6是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请实施例提供了一种图数据库执行计划生成及调度的方法,图1是根据本申请实施例的图数据库执行计划生成及调度的方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101,获取图查询语句,通过词法解析器分析图查询语句,生成预先定义好的Token,并通过语法解析器将预先定义好的Token解析成数据结构,得到抽象语法树;
本实施例中,首先获取图查询语句(Graph Query Language,简称GQL),即ASCII码值,并通过图查询引擎中的词法解析器分析图查询语句,生成预先定义好的Token,输出到后面的语法分析器中。接着,通过语法解析器通过各种定义好的Token定义语法分析规则,对预先定义好的Token进行解析,解析成程序内部的数据结构,得到抽象语法树。
优选的,在得到抽象语法树之后,本实施例通过语义分析器对抽象语法树进行分析,判断抽象语法树的语义是否合法,其中语义合法性可由用户进行自定义。
步骤S102,通过执行计划生成器对抽象语法树进行处理,生成执行计划,并通过执行计划优化器对执行计划进行优化,其中执行计划包括自定义的执行计划算子和自定义的拓扑结构;
优选的,本实施例通过执行计划生成器将抽象语法树生成执行计划,其中,执行计划包括自定义的执行计划算子和自定义的拓扑结构。具体地,表1是本实施例中自定义的执行计划算子,如下表1所示;此外,本实施例中自定义的拓扑结构主要包括:无输入/一元输出(叶子节点),一元输入/一元输出,二元输入/一元输出,多元输入/多元输出,以及Select/Loop这两个特殊节点分别用于实现选择和循环。需要说明的是,拓扑是指各个执行节点在执行计划中的位置和关系,且执行计划确定之后,在执行阶段拓扑结构是不会改变的。图2是根据本申请实施例的各拓扑结构示意图,如图2所示,图2.1的无输入/一元输出的执行计划算子包括:GetNeighbors、GetVertices、GetEdges;图2.2一元输入/一元输出的执行计划算子包括:Sort、Dedup、Project、Filter、Limit、Aggregate;图2.3二元输入/一元输出的执行计划算子包括:Union、Minus、Intersect、Join;图2.4多元输入/多元输出的执行计划算子包括:PassThrough;图2.5的Select节点本质上是一元输入一元输出,但是还有两个额外的分支用于实现选择,分别是if分支和else分支;图2.6的Loop节点本质上也是一元输入一元输出,不过多了一个LoopBody用于表示循环体。
表1
算子名称 | 算子说明 |
GetNeighbors | 完成图语义中一跳查询的执行 |
GetVertices | 用于获取点数据 |
GetEdges | 用于获取边数据 |
Loop | 用于实现循环 |
Select | 用于实现选择 |
Union | 集合 |
Minus | 计算差集 |
Intersect | 计算交集 |
Join | 实现数据连接 |
Sort | 对数据进行排序 |
Dedup | 去重 |
Project | 投影 |
PassThrough | 数据透传节点 |
Filter | 数据过滤 |
Limit | 数据截断 |
Aggregate | 数据聚合 |
图3是根据本申请实施例的某一执行计划实例示意图,如图3所示,GetNeighbor是指图语义中沿着某种边的一跳拓展,Loop表示循环节点,GetVertices表示取点,Union表示集合,图3所示的执行计划是输出N跳目的点的集合。具体地,通过Loop节点循环沿着某种边的一跳拓展,并通过GetVertices取点,最后将点汇合到Union集合中。
进一步地,在生成执行计划之后,本实施例通过执行计划优化器对执行计划进行优化,具体地,基于某些规则或者基于某些代价对一个执行计划进行优化,得到最优执行计划。
本实施例对执行计划算子及拓扑结构进行自定义设计,通过执行计划实现查询语言的底层执行逻辑,自定义的执行计划算子可以被不同的语法或者语言复用,达到模块化,可复用的目的,降低了研发成本;
步骤S103,通过执行计划调度器对执行计划进行调度,输出执行结果。需要说明的是,调度包括调度机制和遍历机制,调度器包括消息通知器(Notifier)和消息接收器(Receiver),执行计划中的每个节点会将消息通知器注册在依赖该节点的其他节点上,而消息接收器会被注册保存在该节点上;
优选的,本实施例采用的调度机制是异步消息通知机制,具体地,通过执行计划中依赖节点的消息通知器向该节点发送消息,接着,该节点上的消息接收器会接收到发送的消息,并通过接收到的消息对该节点进行执行计划的执行或错误处理;
在其中一些实施例中,在通过接收到的消息对节点进行执行计划的执行之后,本实施例通过执行计划调度器对节点进行动态调度;优选的,执行计划调度器可以通过Select分支选择节点的执行结果调度分支,实现分支选择的动态调度;或者,执行计划调度器通过Loop循环节点的执行结果调度LoopBody分支,其中,当循环节点的执行结果为false时,退出循环,否则继续循环,实现循环的动态调度;
具体地,图4是根据本申请实施例的各拓扑结构对应的调度机制示意图,如图4所示,图4.1的无输入/一元输出的拓扑由于没有直接依赖节点,因此,调度器将直接创建该节点(Node)的任务投入任务池中;图4.2一元输入/一元输出的拓扑节点有一个输入(input)和一个输出(output),调度器在调度到该节点时,将在依赖节点注册一个通知器(registerNotifier),当依赖节点执行完成后,会通知该节点开始执行(Notify to run);图4.3二元输入/一元输出的拓扑有两个输入(input1、input2)和一个输出(output)。调度器在调度该节点时需要同时向两个依赖节点注册通知器(register Notifier1、registerNotifier2),当其所有依赖节点执行完成后,会通知该节点开始执行(Notify to run);多元输入/多元输出的拓扑有多个输入及多个输出。调度器在调度该节点时需要同时向所有依赖节点注册通知器,当所有依赖节点执行完成后,会通知该节点开始执行;图4.4的Select节点本质上是一个输入(input)和一个输出(output),但是Select节点还有两个特殊的依赖关系,那就是IF分支和ELSE分支。当调度器调度到Select节点时,向其依赖节点注册通知器(register Notifier),当Select节点被通知开始执行后(Notify to run),调度器会基于Select节点的执行结果,即true或false,来调度IF分支或ELSE分支(schedulethe branch)。而IF分支和ELSE分支的调度与整个执行计划的调度方式是一致的,这样就实现了一个基于异步消息机制的分支选择的动态调度;图4.5的Loop节点本质上也是一元输入(input)和一个输出(output),不同的是Loop节点会有一个额外的LoopBody依赖节点。当调度器调度到Loop节点时,仍然需要向其依赖节点注册通知器(register Notifier),通过其依赖节点的通知器来触发当前节点的执行(Notify to run),然后调度器会基于Loop的执行结果,即true或false,来调度LoopBody分支,当Loop节点执行结果为false时,退出循环,否则继续执行循环(schedule the LoopBody until Loop return false)。这样就实现了一个基于异步消息机制的循环的动态调度。
优选的,由于本实施例的图数据库执行计划部分,实际上是一个有向图的设计,因此,本实施例采用的遍历机制是广度优先遍历,具体地,通过广度优先遍历的方式,执行计划调度器遍历执行计划,为执行计划的各个节点建立完整的消息通知流;接着,执行计划从叶子节点开始执行,并通过消息流依次触发执行计划执行。
本实施例的调度器通过异步消息通知机制,高效调度执行计划,减少阻塞,使得执行计划可以灵活设计。且执行计划不同的分支之间可以实现并行执行和动态调度,有效提升了执行效率,达到了低延时的目的。此外,本实施例通过广度优先遍历的方式遍历执行计划,能达到防止递归方式导致堆栈溢出的目的。
通过上述步骤S101至步骤S103,本申请实施例对执行计划算子及拓扑结构进行自定义设计,通过执行计划实现查询语言的底层执行逻辑,自定义的执行计划算子可以被不同的语法或者语言复用,达到模块化,可复用的目的,降低了研发成本。此外,本申请通过异步消息通知机制,高效调度执行计划,减少阻塞,使得执行计划可以灵活设计。且执行计划不同的分支之间可以实现并行执行和动态调度,有效提升了执行效率,达到了低延时的目的。解决了由于图数据库执行计划的执行代码不能复用和执行调度无法并行执行,而导致的研发成本高、执行不灵活的问题。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种网络用户角色识别的系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的图数据库执行计划生成及调度的系统的结构框图,如图5所示,该系统包括解析模块51、生成优化模块52和调度模块53:
解析模块51,用于获取图查询语句,通过词法解析器分析图查询语句,生成预先定义好的Token,并通过语法解析器将预先定义好的Token解析成数据结构,得到抽象语法树;生成优化模块52,用于通过执行计划生成器对抽象语法树进行处理,生成执行计划,并通过执行计划优化器对执行计划进行优化,其中执行计划包括自定义的执行计划算子和自定义的拓扑结构;调度模块53,用于通过执行计划调度器对执行计划进行调度,输出执行结果。
通过上述系统,本申请实施例的生成优化模块52对执行计划算子及拓扑结构进行自定义设计,通过执行计划实现查询语言的底层执行逻辑,自定义的执行计划算子可以被不同的语法或者语言复用,达到模块化,可复用的目的,降低了研发成本。调度模块53通过异步消息通知机制,高效调度执行计划,减少阻塞,使得执行计划可以灵活设计。且执行计划不同的分支之间可以实现并行执行和动态调度,有效提升了执行效率,达到了低延时的目的。解决了由于图数据库执行计划的执行代码不能复用和执行调度无法并行执行,而导致的研发成本高、执行不灵活的问题。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
此外,需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
另外,结合上述实施例中的图数据库执行计划生成及调度的方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种图数据库执行计划生成及调度的方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种图数据库执行计划生成及调度的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,图6是根据本申请实施例的电子设备的内部结构示意图,如图6所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图6所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种图数据库执行计划生成及调度的方法,数据库用于存储数据。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种图数据库执行计划生成及调度的方法,其特征在于,所述方法包括:
获取图查询语句,通过词法解析器分析所述图查询语句,生成预先定义好的Token,并通过语法解析器将所述预先定义好的Token解析成数据结构,得到抽象语法树;
通过执行计划生成器对所述抽象语法树进行处理,生成执行计划,并通过执行计划优化器对所述执行计划进行优化,其中所述执行计划包括自定义的执行计划算子和自定义的拓扑结构;
通过执行计划调度器对所述执行计划进行调度,输出执行结果。
2.根据权利要求1所述的方法,其特征在于,所述通过执行计划调度器对所述执行计划进行调度包括:
通过所述执行计划中依赖节点的消息通知器向所述节点发送消息;
所述节点的消息接收器接收到所述消息,并通过所述消息对所述节点进行执行计划的执行或错误处理。
3.根据权利要求2所述的方法,其特征在于,在通过所述消息对所述节点进行执行计划的执行之后,所述方法包括:
通过所述执行计划调度器对所述节点进行动态调度。
4.根据权利要求3所述的方法,其特征在于,所述通过所述执行计划调度器对所述节点进行动态调度包括:
所述执行计划调度器通过分支选择节点的执行结果调度分支;
所述执行计划调度器通过循环节点的执行结果调度LoopBody分支,其中,当所述循环节点的执行结果为false时,退出循环,否则继续循环。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述执行计划的遍历方式包括:
通过广度优先遍历的方式,所述执行计划调度器遍历所述执行计划,为所述执行计划的各个节点建立完整的消息通知流;
所述执行计划从叶子节点开始执行,并通过所述消息流依次触发执行计划执行。
6.根据权利要求1所述的方法,其特征在于,在得到抽象语法树之后,所述方法包括:
通过语义分析器对所述抽象语法树进行分析,判断所述抽象语法树的语义是否合法,其中所述语义合法性可由用户进行自定义。
7.一种图数据库执行计划生成及调度的系统,其特征在于,所述系统包括:
解析模块,用于获取图查询语句,通过词法解析器分析所述图查询语句,生成预先定义好的Token,并通过语法解析器将所述预先定义好的Token解析成数据结构,得到抽象语法树;
生成优化模块,用于通过执行计划生成器对所述抽象语法树进行处理,生成执行计划,并通过执行计划优化器对所述执行计划进行优化,其中所述执行计划包括自定义的执行计划算子和自定义的拓扑结构;
调度模块,用于通过执行计划调度器对所述执行计划进行调度,输出执行结果。
8.根据权利要求7所述的系统,其特征在于,
所述调度模块,还用于通过所述执行计划中依赖节点的消息通知器向所述节点发送消息,
所述节点的消息接收器接收到所述消息,并通过所述消息对所述节点进行执行计划的执行或错误处理。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至6中任一项所述的图数据库执行计划生成及调度的方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至6中任一项所述的图数据库执行计划生成及调度的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111046369.2A CN113918160A (zh) | 2021-09-02 | 2021-09-02 | 图数据库执行计划生成及调度的方法、系统、装置和介质 |
US17/688,020 US11874831B2 (en) | 2021-08-19 | 2022-03-07 | Method and system for managing execution plan in graph database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111046369.2A CN113918160A (zh) | 2021-09-02 | 2021-09-02 | 图数据库执行计划生成及调度的方法、系统、装置和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113918160A true CN113918160A (zh) | 2022-01-11 |
Family
ID=79234282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111046369.2A Pending CN113918160A (zh) | 2021-08-19 | 2021-09-02 | 图数据库执行计划生成及调度的方法、系统、装置和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113918160A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827930A (zh) * | 2023-02-15 | 2023-03-21 | 杭州悦数科技有限公司 | 一种图数据库的数据查询优化方法、系统和装置 |
CN116383454A (zh) * | 2023-04-10 | 2023-07-04 | 星环信息科技(上海)股份有限公司 | 图数据库的数据查询方法、电子设备及存储介质 |
CN117785884A (zh) * | 2023-12-28 | 2024-03-29 | 支付宝(杭州)信息技术有限公司 | 图查询语句的图逻辑执行计划生成方法、数据处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180150518A1 (en) * | 2016-11-29 | 2018-05-31 | Sap Se | Query plan execution engine |
CN111563101A (zh) * | 2020-07-11 | 2020-08-21 | 阿里云计算有限公司 | 执行计划优化方法、装置、设备及存储介质 |
-
2021
- 2021-09-02 CN CN202111046369.2A patent/CN113918160A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180150518A1 (en) * | 2016-11-29 | 2018-05-31 | Sap Se | Query plan execution engine |
CN111563101A (zh) * | 2020-07-11 | 2020-08-21 | 阿里云计算有限公司 | 执行计划优化方法、装置、设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
NEBULAGRAPH: "Nebula Graph源码解读系列|Vol.02详解Validator", 《公开网址:HTTPS://ZHUANLAN.ZHIHU.COM/P/399142663》 * |
NEBULAGRAPH: "Nebula Graph源码解读系列|Vol.03 Planner的实现", 《公开网址:HTTPS://ZHUANLAN.ZHIHU.COM/P/399146956》 * |
NEBULAGRAPH: "Nebula Graph源码解读系列|Vol.05 Scheduler和Executor两兄弟", 《公开网址:HTTPS://ZHUANLAN.ZHIHU.COM/P/405382705》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827930A (zh) * | 2023-02-15 | 2023-03-21 | 杭州悦数科技有限公司 | 一种图数据库的数据查询优化方法、系统和装置 |
CN115827930B (zh) * | 2023-02-15 | 2023-05-05 | 杭州悦数科技有限公司 | 一种图数据库的数据查询优化方法、系统和装置 |
CN116383454A (zh) * | 2023-04-10 | 2023-07-04 | 星环信息科技(上海)股份有限公司 | 图数据库的数据查询方法、电子设备及存储介质 |
CN116383454B (zh) * | 2023-04-10 | 2024-01-30 | 星环信息科技(上海)股份有限公司 | 图数据库的数据查询方法、电子设备及存储介质 |
CN117785884A (zh) * | 2023-12-28 | 2024-03-29 | 支付宝(杭州)信息技术有限公司 | 图查询语句的图逻辑执行计划生成方法、数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113918160A (zh) | 图数据库执行计划生成及调度的方法、系统、装置和介质 | |
CN107704265B (zh) | 一种面向业务流可配置的规则生成方法 | |
Potkonjak et al. | Optimizing resource utilization using transformations | |
Kelly et al. | Transitive closure of infinite graphs and its applications | |
US20090328016A1 (en) | Generalized expression trees | |
Guelfi et al. | A formal semantics of timed activity diagrams and its promela translation | |
Requeno et al. | Performance analysis of apache storm applications using stochastic petri nets | |
Mencagli et al. | Spinstreams: a static optimization tool for data stream processing applications | |
Danelutto et al. | Data stream processing via code annotations | |
Holzmann | Cobra: a light-weight tool for static and dynamic program analysis | |
Ritter et al. | Optimization strategies for integration pattern compositions | |
Requeno et al. | Quantitative analysis of apache storm applications: the newsasset case study | |
CN113407752B (zh) | 图数据库内存管理方法、系统、电子设备及存储介质 | |
CN116484947B (zh) | 算子的自动生成方法、装置、设备及介质 | |
Leung et al. | Scheduling time-constrained instructions on pipelined processors | |
CN113157720A (zh) | 查询语句的处理方法、装置、设备及介质 | |
US20230116546A1 (en) | Method for compilation, electronic device and storage medium | |
US11874831B2 (en) | Method and system for managing execution plan in graph database | |
Nethravathi et al. | Improved Parallel Scanner for the Concurrent Execution of Lexical Analysis Tasks on Multi-Core Systems | |
CN114358596A (zh) | 指标计算方法及装置 | |
CN111752967A (zh) | 基于sql的数据处理方法、装置、电子设备和存储介质 | |
Zhao et al. | AutoGraph: Optimizing DNN computation graph for parallel GPU kernel execution | |
Higashino et al. | Attributed graph rewriting for complex event processing self-management | |
CN112181374A (zh) | 一种数据整合方法、装置、电子设备及存储介质 | |
CN107818100B (zh) | 一种sql语句执行方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220111 |
|
RJ01 | Rejection of invention patent application after publication |