分布式数据库的计划调度方法、装置和系统与流程

文档序号:30527710发布日期:2022-06-25 08:37阅读:86来源:国知局
1.本说明书实施例通常涉及数据库领域,尤其涉及分布式数据库的计划调度方法及计划调度装置、数据查询方法及数据查询引擎和分布式数据库。
背景技术
::2.分布式数据库由多个分布式数据存储节点组成。每个分布式数据存储节点包括数据查询引擎和数据存储引擎。分布式数据库通常采用sharenoting架构,比如,oceanbase数据库。在这种分布式数据库中,数据分布式地存储在各个数据存储引擎中。3.在对分布式数据库执行数据查询时,在分布式数据存储节点接收到数据查询语句后,该分布式数据存储节点会根据所接收的数据查询语句生成分布式执行计划,将所生成的分布式执行计划转换为多个分布式逻辑子计划,该多个分布式逻辑子计划被形成为树状结构。该多个分布式逻辑子计划按照一定的逻辑顺序依次调度到多个分布式数据存储节点上并行执行,由此实现数据查询。在对分布式逻辑子计划进行调度时,所有分布式逻辑子计划会被依次层层调度来执行一次。按照这种调度方式,在存在分布式逻辑子计划不会对上层逻辑子计划回吐数据的情况下,如果仍然调度执行该分布式逻辑子计划的上层逻辑子计划,则由于该分布式逻辑子计划对上层逻辑子计划的回吐数据为空集,则该上层逻辑子计划的执行结果必然为空集,由此使得上层逻辑执行子计划的调度执行是不必要的调度处理。技术实现要素:4.鉴于上述,本说明书实施例提供分布式数据库的计划调度方法及计划调度装置、数据查询方法及数据查询引擎和分布式数据库。利用该计划调度方法及计划调度装置,可以在计划调度过程中,一旦遇到不会向上回吐数据的分布式逻辑子计划,则根据分布式逻辑子计划的执行依赖关系确定下一待调度的分布式逻辑子计划,而不是根据分布式逻辑子计划的调度顺序确定下一待调度的分布式逻辑子计划,从而可以跳过调度与该不回吐数据的分布式逻辑子计划具有执行依赖关系的部分分布式逻辑子计划,由此降低调度开销,提升数据查询效率。5.根据本说明书实施例的一个方面,提供一种用于调度分布式数据库的分布式逻辑子计划的方法,所述分布式数据库包括多个分布式数据存储节点,所述分布式逻辑子计划通过对分布式执行计划进行逻辑转化得到并且具有树状结构,所述方法包括:获取当前调度的分布式逻辑子计划的执行结果;响应于执行结果表明该当前调度的分布式逻辑子计划不回吐数据,根据分布式逻辑子计划的执行依赖关系以及调度顺序确定下一待调度的分布式逻辑子计划,所述分布式逻辑子计划的执行依赖关系在生成分布式执行计划时得到;以及将所确定的下一待调度的分布式逻辑子计划调度到对应的分布式数据存储节点来并行执行,其中,在调度执行所确定的下一待调度的分布式逻辑子计划时,向所确定的下一待调度的分布式逻辑子计划返回用于指示该当前调度的分布式逻辑子计划不回吐数据的指示消息。6.可选地,在上述方面的一个示例中,所述方法还可以包括:响应于执行结果表明该当前调度的分布式逻辑子计划回吐数据,根据分布式逻辑子计划的调度顺序确定下一待调度的分布式逻辑子计划。7.可选地,在上述方面的一个示例中,根据分布式逻辑子计划的执行依赖关系以及调度顺序确定下一待调度的分布式逻辑子计划可以包括:在存在与所述当前调度的分布式逻辑子计划具有执行依赖关系的未执行分布式逻辑子计划时,将与所述当前调度的分布式逻辑子计划具有执行依赖关系的未执行分布式逻辑子计划中的最顶层分布式逻辑子计划确定为所述下一待调度的分布式逻辑子计划,在不存在与所述当前调度的分布式逻辑子计划具有执行依赖关系的未执行分布式逻辑子计划时,将所述调度顺序中下一未执行分布式逻辑子计划确定为所述下一待调度的分布式逻辑子计划。8.可选地,在上述方面的一个示例中,所述分布式逻辑子计划通过以数据重分布点为边界对分布式执行计划进行逻辑转化得到。9.可选地,在上述方面的一个示例中,分布式逻辑子计划包括多个数据处理算子和/或数据交换算子,并且所述多个数据处理算子和/或数据交换算子被调度到所述分布式数据库中的多个分布式数据存储节点并行处理。10.可选地,在上述方面的一个示例中,所述分布式逻辑子计划的调度顺序包括所述分布式逻辑子计划的遍历调度顺序。11.可选地,在上述方面的一个示例中,所述分布式逻辑子计划的遍历调度顺序以及分布式逻辑子计划的当前执行并行度根据所述分布式逻辑子计划的树状结构决定。12.根据本说明书的实施例的另一方面,提供一种分布式数据库的数据查询方法,所述分布式数据库包括多个分布式数据存储节点,每个分布式数据存储节点包括数据查询引擎和数据存储引擎,所述数据查询方法由数据查询引擎执行,所述数据查询方法包括:接收用户提供的数据查询语句;根据所接收的数据查询语句生成分布式执行计划;对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划,所述多个分布式逻辑子计划被形成为树状结构;按照如上所述的调度策略,将所述多个分布式逻辑子计划依次调度到对应的分布式数据存储节点来并行执行;以及将最顶层分布式逻辑子计划的执行结果作为数据查询结果提供给用户。13.根据本说明书的实施例的另一方面,提供一种用于调度分布式数据库的分布式逻辑子计划的计划调度装置,所述分布式数据库包括多个分布式数据存储节点,所述分布式逻辑子计划通过对分布式执行计划进行逻辑转化得到,所述计划调度装置包括:执行结果获取单元,获取当前调度的分布式逻辑子计划的执行结果;调度计划确定单元,响应于执行结果表明该当前调度的分布式逻辑子计划不回吐数据,根据分布式逻辑子计划的执行依赖关系以及调度顺序确定下一待调度的分布式逻辑子计划,所述分布式逻辑子计划的执行依赖关系在生成分布式执行计划时得到;以及计划调度单元,将所确定的下一待调度的分布式逻辑子计划调度到对应的分布式数据存储节点来并行执行,其中,在调度执行所确定的下一待调度的分布式逻辑子计划时,向所确定的下一待调度的分布式逻辑子计划返回用于指示该当前调度的分布式逻辑子计划不回吐数据的指示消息。14.可选地,在上述方面的一个示例中,响应于执行结果表明该当前调度的分布式逻辑子计划回吐数据,所述调度计划确定单元根据分布式逻辑子计划的调度顺序确定下一待调度的分布式逻辑子计划。15.可选地,在上述方面的一个示例中,响应于执行结果表明该当前调度的分布式逻辑子计划不回吐数据,所述调度计划确定单元被配置为在存在与所述当前调度的分布式逻辑子计划具有执行依赖关系的未执行分布式逻辑子计划时,将与所述当前调度的分布式逻辑子计划具有执行依赖关系的未执行分布式逻辑子计划中的最顶层分布式逻辑子计划确定为所述下一待调度的分布式逻辑子计划,在不存在与所述当前调度的分布式逻辑子计划具有执行依赖关系的未执行分布式逻辑子计划时,将所述调度顺序中下一未执行分布式逻辑子计划确定为所述下一待调度的分布式逻辑子计划。16.可选地,在上述方面的一个示例中,所述分布式逻辑子计划通过以数据重分布点为边界对分布式执行计划进行逻辑转化得到。17.可选地,在上述方面的一个示例中,分布式逻辑子计划包括多个数据处理算子和/或数据交换算子,所述计划调度单元将所述多个数据处理算子和/或数据交换算子调度到所述分布式数据库中的多个分布式数据存储节点并行处理。18.可选地,在上述方面的一个示例中,所述计划调度装置还可以包括:调度顺序确定单元,根据所述分布式逻辑子计划的树状结构决定所述分布式逻辑子计划的调度顺序。19.可选地,在上述方面的一个示例中,所述分布式逻辑子计划的调度顺序包括所述分布式逻辑子计划的遍历调度顺序。20.可选地,在上述方面的一个示例中,所述调度顺序确定单元根据所述分布式逻辑子计划的树状结构决定所述分布式逻辑子计划的遍历调度顺序以及分布式逻辑子计划的当前执行并行度。21.根据本说明书的实施例的另一方面,提供一种用于分布式数据库的数据查询引擎,所述分布式数据库包括多个分布式数据存储节点,每个分布式数据存储节点包括数据查询引擎和数据存储引擎,所述数据查询引擎包括:数据查询语句接收装置,接收用户提供的数据查询语句;计划生成装置,根据所接收的数据查询语句生成分布式执行计划;计划转换装置,对所述分布式执行计划进行逻辑转化得到多个分布式逻辑子计划;计划调度装置,按照如上所述的调度策略,将所述多个分布式逻辑子计划依次调度到对应的分布式数据存储节点来并行执行;计划执行装置,执行所述计划调度装置调度到所在分布式数据存储节点的分布式逻辑子计划;以及查询结果提供装置,将最顶层分布式逻辑子计划的执行结果作为数据查询结果提供给用户。22.根据本说明书的实施例的另一方面,提供一种分布式数据库,包括:至少两个分布式存储节点,每个存储节点包括数据存储引擎以及如上所述的数据查询引擎。23.根据本说明书的实施例的另一方面,提供一种用于分布式数据库的执行计划调度装置,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的计划调度方法。24.根据本说明书的实施例的另一方面,提供一种用于分布式数据库的数据查询引擎,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的数据查询方法。25.根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如上所述的计划调度方法或者执行如上所述的数据查询方法。26.根据本说明书的实施例的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的计划调度方法或者执行如上所述的数据查询方法。附图说明27.通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。28.图1示出了分布式数据库的示例示意图。29.图2示出了现有数据查询引擎的示例方框图。30.图3示出了基于图2中的数据查询引擎实现的分布式数据库的数据查询过程的示例流程图。31.图4示出了分布式执行计划的示例示意图。32.图5示出了图4中示出的对分布式执行计划进行逻辑转换后得到的分布式逻辑子计划的示例示意图。33.图6示出了图3中示出的数据查询过程的示例示意图。34.图7示出了根据本说明书的实施例的数据查询引擎的示例方框图。35.图8示出了根据本说明书的实施例的分布式数据库的数据查询查询过程的示例流程图。36.图9示出了图5中的分布式逻辑子计划的执行依赖关系的示例示意图。37.图10a-图10e示出了分布式逻辑子计划的树状结构的示例示意图。38.图11示出了根据本说明书的实施例的分布式数据库的计划调度方法的示例流程图。39.图12示出了根据本说明书的实施例的基于计算机系统实现的计划调度装置的示例示意图。40.图13示出了根据本说明书的实施例的基于计算机系统实现的数据查询引擎的示例示意图。具体实施方式41.现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。42.如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。43.图1示出了分布式数据库1的示例示意图。如图1所示,分布式数据库系统1包括多个存储节点10-1到10-4。存储节点10-1到10-4为分布式存储节点,每个存储节点包括数据查询引擎和数据存储引擎。要说明的是,图1示出的示例仅仅是例示性的。在其它实施例中,分布式数据库系统1可以包括更多或更少的存储节点。44.分布式数据库1例如可以采用sharenoting架构,比如,oceanbase数据库。在这种分布式数据库中,数据分布式地存储在各个存储节点的存储引擎中。例如,数据可以被分割为多个数据分区(也可以称为数据分块),所分割出的数据分区分别存储到不同的存储引擎中。每个存储引擎可以存储一个或多个数据分区。每个存储节点上涉及的数据访问所需要的cpu资源和io资源都发生在本地,由该存储节点上的数据查询引擎执行。45.在存储节点的本地数据查询引擎接收到数据查询语句并生成分布式执行计划后,本地数据查询引擎会将分布式执行计划逻辑转换为多个逻辑子计划(例如,按照语义进行逻辑转换)。在本说明书中,逻辑子执行子计划可以称为dfo(dataflowoperation)。在完成dfo转换后,本地数据查询引擎将所生成的dfo并行调度给多个存储节点来并行执行。46.图2示出了现有数据查询引擎200的示例方框图,以及图3示出了基于图2中的数据查询引擎实现的分布式数据库的数据查询过程300的示例流程图。47.如图2所示,数据查询引擎200包括数据查询语句接收装置210、计划生成装置220、计划转换装置230、计划调度装置240和计划执行装置250。48.在进行数据查询时,如图3所示,在310,经由数据查询语句接收装置210接收数据查询语句。例如,在一个示例中,数据查询例如可以是sql查询,以及数据查询语句可以包括sql语句,比如,所接收的sql语句例如可以为“selectt2.a,t2.b,(selectsum(c)fromt5wheret1.b=t5.a)assumfromt1,t2,t3,t4wheret1.a=1andt1.b=t2.aandt1.b=t3.aandt1.b=t4.a”。在一个示例中,数据查询语句接收装置210可以被实现为数据查询引擎的输入接口、输入单元或输入装置。例如,数据查询语句接收装置210可以是数据查询引擎的客户端界面上的输入框等。49.在320,经由计划生成装置220根据所接收的数据查询语句生成分布式执行计划。计划生成装置220可以包括优化器,例如,sql优化器。分布式执行计划例如可以包括sql执行计划,该sql执行计划具有由多个sql算子组成的树状结构。sql算子是构成sql执行计划的基本组成单元,用来描述与具体sql语义对应的基础操作,比如,tablescan算子、tableinsert算子、tableupdate算子、tabledelete算子、join算子、groupby算子、orderby算子、exchange算子等。图4示出了sql执行计划的示例示意图。50.在330,经由计划转换装置230将分布式执行计划逻辑转换多个dfo。例如,计划转换装置230可以根据sql语义将sql执行计划逻辑转换为多个dfo。针对图4中示出的sql执行计划,可以以exchangeout算子(发送算子)/exchangein算子(接收算子)为边界来逻辑转换sql执行计划,所得到的逻辑转换结果如图5所示。在图5的示例中,sql算子被赋予编号(id列),例如,0号算子为unionall。如图5所示,0号算子、1号算子和20号算子构成dfo0(rootdfo或根dfo)。2号算子-4号算子以及18号算子-19号算子构成dfo1。5号算子-7号算子以及16号算子-17号算子构成dfo2。8号算子-10号算子以及14号算子-15号算子构成dfo3。11号算子-13号算子构成dfo4。21号算子-23号算子以及37号算子-38号算子构成dfo5。24号算子-26号算子以及35号算子-36号算子构成dfo6。27号算子-29号算子以及33号算子-34号算子构成dfo7。30号算子-32号算子构成dfo8。要说明的是,图5中各个节点处的英文字符是分布式执行计划中的各个对应执行算子的简写。51.所得到的每个dfo算子可以包括多个串行执行的算子,例如,多个sql算子。例如,一个dfo包含了扫描分区算子,聚集算子,发送算子,另外一个dfo包含收集算子、聚集算子等。52.接着,循环执行340到370,直到输出数据查询结果。53.具体地,在每次循环过程中,在340,经由计划调度装置240依次调度执行所生成的dfo。在进行dfo调度时,在350,判断调度是否完成,即,是否针对所有dfo都完成调度处理。如果针对所有dfo都完成调度处理,则在380,将当前dfo(即,rootdfo)的处理结果作为数据查询结果提供给用户。如果还存在未调度的dfo,则在360,按照一定的逻辑顺序确定下一待调度的dfo,并将该待调度的dfo调度到合适的分布式数据存储节点。各个分布式数据存储节点的数据查询引擎并行执行所接收的dfo。接着,在370,在各个分布式数据存储节点处的dfo并行执行完毕后,流式向父dfo(patentdfo)回吐数据。如果不存在未调度的dfo,则向用户输出数据查询结果。如果存在未调度的dfo,则返回到340循环执行。54.图6示出了图3中示出的数据查询过程的示例示意图。在图6的示例中,在进行数据查询时,接收到用户发起的数据查询语句的分布式存储节点中的pxoperator充当查询协调者(querycoordinator,qc)。该分布式存储节点预约足够的线程资源。当分布式执行计划需要并行执行时,qc决定并行度,并且发送工作线程获取请求(qc请求)到各个分布式存储节点上的子查询协调者(subquerycoordinator,sqc)。sqc是各个分布式存储节点上用于处理qc请求的线程。sqc负责在所在分布式存储节点上为dfo申请执行资源、构造执行上下文环境等,然后调度工作线程(worker)来在各个分布式存储节点上并行执行dfo,如图6中所示,在各个qc或sqc处,并行调度的多个线程从扫描任务队列中竞争任务来执行。55.如图6所示,qc将需要并行执行的dfo以rpc的方式分发到合适的分布式存储节点。分布式存储节点中的sqc调度px线程执行所接收的dfo。当各个分布式存储节点的dfo执行完毕后,流式向父dfo返回执行结果。56.在上述数据查询方案中,在对dfo进行调度时,所有dfo会被依次层层调度来执行一次。按照这种调度方式,在存在dfo不会对上层dfo(父dfo)回吐数据的情况下,仍然调度执行该dfo的上层dfo。在实际执行时,由于该dfo对上层dfo的回吐数据为空集,则该上层dfo的执行结果必然为空集,由此使得上层dfo的调度执行是不必要的调度执行。每次调度执行都会产生调度开销(例如,计算资源开销)和处理时间,从而造成不必要的调度开销,并且降低数据查询效率。57.鉴于上述,本说明书的实施例提出一种用于分布式数据库的计划调度方案。利用该计划调度方案,在分布式执行计划生成过程中,对各个执行算子进行分析以确定出执行算子之间是否存在语义依赖,由此确定出各个dfo之间的执行依赖关系。在计划调度过程中,一旦遇到不会向上回吐数据的dfo,则根据dfo的执行依赖关系确定下一待调度的dfo,而不是根据dfo的调度顺序确定下一待调度的dfo,从而可以跳过与该不回吐数据的dfo具有执行依赖关系的部分dfo而不调度,由此降低调度开销,提升数据查询效率。58.图7示出了根据本说明书的实施例的数据查询引擎700的示例方框图。59.如图7所示,数据查询引擎700包括数据查询语句接收装置710、计划生成装置720、计划转换装置730、计划调度装置740、计划执行装置750和查询结果提供装置760。60.数据查询语句接收装置710被配置为接收数据查询语句。例如,在一个示例中,数据查询例如可以是sql查询,以及数据查询语句可以包括sql语句,比如,所接收的sql语句例如可以为“selectt2.a,t2.b,(selectsum(c)fromt5wheret1.b=t5.a)assumfromt1,t2,t3,t4wheret1.a=1andt1.b=t2.aandt1.b=t3.aandt1.b=t4.a”。在一个示例中,数据查询语句接收装置210可以被实现为数据查询引擎的输入接口、输入单元或输入装置。例如,数据查询语句接收装置210可以是数据查询引擎的客户端界面上的输入框等。61.计划生成装置720被配置为根据所接收的数据查询语句生成分布式执行计划。计划生成装置720的示例例如可以包括优化器,例如,sql优化器。图4示出了sql执行计划的示例示意图。62.计划转换装置730被配置为对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划(dfo)。在一个示例中,计划转换装置730可以通过以数据重分布点为边界对分布式执行计划进行逻辑转化得到多个dfo,如图5所示。在本说明书中,术语“数据重分布”是指例如将数据从存储节点a重新分布到存储节点b的数据分布过程,该数据分布过程可以通过在分布式执行计划中负责数据发送和数据接收的算子(例如,exchangeout算子和exchangein算子)来实现。dfo的拆分将会根据exchangeout算子和exchangein算子拆成两个dfo,其中,一个dfo负责执行完本dfo的所有执行算子后发送数据,以及另一个dfo负责接收数据后再执行本dfo的所有执行算子。除了exchange算子外,数据重分布还可以利用pxcoord算子实现。pxcoord算子是特殊的exchangein算子,除了具备接收数据功能之外,它还具备调度子dfo执行的功能。63.此外,计划生成装置720还可以对分布式执行计划的各个执行算子进行语义分析,以确定执行算子之间的语义依赖关系。在将分布式执行计划转换为dfo后,计划生成装置720根据执行算子之间的语义依赖关系来确定各个dfo之间的执行依赖关系。例如,对于算子inner_join,只要其任意子算子不返回数据,则算子inner_join也不返回数据。在确定各个算子之间的语义依赖关系时,自底向上执行语义分析。而对于count/sum等聚合函数操作,即使子算子没有数据也需要返回数据,其依赖关系将会在包含此类算子的dfo中断。64.对于被形成为树状结构的dfo而言,树状的多个dfo之间具有依赖关系,上层父dfo依赖下层子dfo的数据。如果子dfo没有数据,则可以跳过执行该子dfo的中间父dfo,而直接执行到依赖关系中的顶层父dfo。65.图9示出了图5中的分布式逻辑子计划的执行依赖关系的示例示意图。在图9的示例中,dfo0对dfo1和dfo5具有执行依赖关系。dfo1对dfo2、dfo3和dfo4具有依赖关系。dfo2对dfo3和dfo4具有依赖关系。dfo3对dfo4具有依赖关系。dfo5对dfo6、dfo7和dfo8具有依赖关系。dfo6对dfo7和dfo8具有依赖关系。dfo7对dfo8具有依赖关系。此外,dfo1、dfo2、dfo3和dfo4形成依赖关系链路,dfo1是该依赖关系链路中的最顶层dfo。dfo5、dfo6、dfo7和dfo8形成依赖关系链路,dfo5是该依赖关系链路中的最顶层dfo。要说明的是,在依赖关系确认时,不考虑根dfo(即,dfo0)。66.此外,在生成dfo后,还可以生成dfo的调度顺序。在一个示例中,所生成的dfo具有树状结构,以及dfo的调度顺序可以基于dfo的树状结构生成。dfo的调度顺序包括dfo的遍历调度顺序,即,基于遍历策略确定出的调度顺序。此外,dfo的并行执行度也可以基于dfo的树状结构生成。这里,术语“并行执行度”是并行调度的dfo的个数。67.图10a-图10e示出了分布式逻辑子计划的树状结构的示例示意图。68.在图10a示出的树状结构中,dfo的并行执行度为2,即,同时执行2个dfo。dfo的调度顺序为dfo2→dfo1→dfo4→dfo3→dfo8→dfo7→dfo6→dfo5。在图10b示出的树状结构中,dfo的并行执行度为2或3,即,同时执行2个dfo或3个dfo。dfo的调度顺序为dfo4→dfo3→dfo2→dfo1→dfo8→dfo7→dfo6→dfo5。在图10c示出的树状结构中,dfo的并行执行度为2,即,同时执行2个dfo。dfo的调度顺序为dfo4→dfo2→dfo1→dfo3→dfo8→dfo7→dfo6→dfo5。在图10d示出的树状结构中,dfo的并行执行度为2或3,即,同时执行2个dfo或3个dfo。dfo的调度顺序为dfo4→dfo2→dfo1→dfo10→dfo9→dfo3→dfo8→dfo7→dfo6→dfo5。图10e示出的树状结构中,dfo的并行执行度为2或3,即,同时执行2个dfo或3个dfo。dfo的调度顺序为dfo10→dfo9→dfo3→dfo4→dfo2→dfo1→dfo8→dfo7→dfo6→dfo5。69.计划调度装置740被配置为根据dfo的执行结果,将多个dfo依次调度到对应的分布式数据存储节点来并行执行。每个dfo可以包括多个数据处理算子和/或数据交换算子。在dfo执行时,该多个数据处理算子和/或数据交换算子可以被调度到分布式数据库中的多个分布式数据存储节点并行处理。70.计划调度装置740的dfo调度过程是循环执行过程。在每次循环过程中,计划调度装置740根据当前dfo的执行结果确定下一待调度的dfo,并将所确定出的下一待调度的dfo调度到分布式数据存储节点来并行执行。71.具体地,响应于当前调度的dfo的执行结果表明该dfo不回吐数据,计划调度装置740根据dfo的执行依赖关系以及调度顺序确定下一待调度的dfo。响应于当前调度的dfo的执行结果表明该dfo回吐数据,计划调度装置740根据dfo的调度顺序确定下一待调度的dfo。72.在一个示例中,响应于当前调度的dfo的执行结果表明该dfo不回吐数据,在存在与该当前调度的dfo具有执行依赖关系的未执行dfo时,计划调度装置740将未执行dfo中的最顶层dfo确定为下一待调度的dfo。在不存在与该当前调度的dfo具有执行依赖关系的未执行dfo时,计划调度装置740将调度顺序中的下一未执行dfo确定为下一待调度的dfo。73.计划执行装置750被配置为执行计划调度装置740调度到所在分布式数据存储节点的dfo。查询结果提供装置被配置为将最顶层dfo(即,根dfo)的执行结果作为数据查询结果提供给用户。74.图8示出了根据本说明书的实施例的分布式数据库的数据查询查询过程1100的示例流程图75.如图8所示,在810,经由数据查询语句接收装置接收用户提供的数据查询语句。在820,经由计划生成装置根据所接收的数据查询语句生成分布式执行计划。76.在830,经由计划转换装置对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划,所得到的多个分布式逻辑子计划被形成为树状结构。77.在840,经由计划调度装置将多个分布式逻辑子计划依次调度到对应的分布式数据存储节点来并行执行。78.图11示出了根据本说明书的实施例的分布式数据库的计划调度方法1100的示例流程图。图11所示出的计划调度方法由计划调度装置循环执行。79.如图11所示,在每次循环过程中,在1110,将当前待调度的dfo调度到多个合适的分布式数据存储节点来并行执行。响应于多个分布式数据节点处的dfo并行执行完成,在1120,获取该当前调度的dfo的执行结果。例如,各个分布式数据节点流式向计划调度装置返回各自的执行结果,计划调度装置根据各个分布式数据节点返回的执行结果来确定出该当前调度的dfo的执行结果,并提供给该当前调度的dfo的父dfo。或者,计划调度装置将各个分布式数据节点返回的执行结果直接提供给该当前调度的dfo的父dfo。80.在1130,确定调度是否完成。如果调度完成,则将该当前dfo(即,最顶层dfo)的执行结果作为数据查询结果提供给用户。81.如果调度未完成,则在1140,根据该当前dfo的执行结果,确定下一待调度的dfo。具体地,响应于当前调度的dfo的执行结果表明该dfo不回吐数据,根据dfo的执行依赖关系以及调度顺序确定下一待调度的dfo。响应于当前调度的dfo的执行结果表明该dfo回吐数据,根据dfo的调度顺序确定下一待调度的dfo。82.在一个示例中,响应于当前调度的dfo的执行结果表明该dfo不回吐数据,在存在与该当前调度的dfo具有执行依赖关系的未执行dfo时,将未执行dfo中的最顶层dfo确定为下一待调度的dfo。在不存在与该当前调度的dfo具有执行依赖关系的未执行dfo时,将调度顺序中的下一未执行dfo确定为下一待调度的dfo。83.在确定出下一待调度的dfo后,返回到1110来执行下一循环过程。在所确定的下一待调度的dfo是根据dfo的执行依赖关系以及调度顺序确定出时,还向所确定的下一待调度的dfo返回用于指示该当前调度的dfo不回吐数据的指示消息,例如,eof(endoffile)消息。84.如上参照图1到图11,对根据本说明书实施例的用于分布式数据库的计划调度方法、计划调度装置、数据查询方法、数据查询引擎和分布式数据库进行了描述。上面的计划调度装置和数据查询引擎可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。85.图12示出了根据本说明书的实施例的基于计算机系统实现的计划调度装置1200的示意图。如图12所示,计划调度装置1200可以包括至少一个处理器1210、存储器(例如,非易失性存储器)1220、内存1230和通信接口1240,并且至少一个处理器1210、存储器1220、内存1230和通信接口1240经由总线1260连接在一起。至少一个处理器1210执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。86.在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1210:获取当前调度的分布式逻辑子计划的执行结果;响应于执行结果表明该当前调度的分布式逻辑子计划不回吐数据,根据分布式逻辑子计划的执行依赖关系以及调度顺序确定下一待调度的分布式逻辑子计划,所述分布式逻辑子计划的执行依赖关系在生成分布式执行计划时得到;以及将所确定的下一待调度的分布式逻辑子计划调度到对应的分布式数据存储节点来并行执行,其中,在调度执行所确定的下一待调度的分布式逻辑子计划时,向所确定的下一待调度的分布式逻辑子计划返回用于指示该当前调度的分布式逻辑子计划不回吐数据的指示消息。87.应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1210进行本说明书的各个实施例中以上结合图1-图11描述的各种操作和功能。88.图13示出了根据本说明书的实施例的基于计算机系统实现的数据查询引擎1300的示意图。如图13所示,数据查询引擎1300可以包括至少一个处理器1310、存储器(例如,非易失性存储器)1320、内存1330和通信接口1340,并且至少一个处理器1310、存储器1320、内存1330和通信接口1340经由总线1360连接在一起。至少一个处理器1310执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。89.在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1310:接收用户提供的数据查询语句;根据所接收的数据查询语句生成分布式执行计划;对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划,所述多个分布式逻辑子计划被形成为树状结构;按照如上所述的调度策略,将所述多个分布式逻辑子计划依次调度到对应的分布式数据存储节点来并行执行;以及将最顶层分布式逻辑子计划的执行结果作为数据查询结果提供给用户。90.应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1310进行本说明书的各个实施例中以上结合图1-图11描述的各种操作和功能。91.根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-图11描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。92.在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。93.可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd-rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。94.根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图1-图11描述的各种操作和功能。95.本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。96.需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。97.以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,fpga或asic)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。98.上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。99.本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1