CN114996299A - 分布式数据库的计划执行方法、装置和系统 - Google Patents

分布式数据库的计划执行方法、装置和系统 Download PDF

Info

Publication number
CN114996299A
CN114996299A CN202210554683.XA CN202210554683A CN114996299A CN 114996299 A CN114996299 A CN 114996299A CN 202210554683 A CN202210554683 A CN 202210554683A CN 114996299 A CN114996299 A CN 114996299A
Authority
CN
China
Prior art keywords
execution
plan
data
line number
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210554683.XA
Other languages
English (en)
Inventor
唐铭豆
潘毅
朱涛
余璜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202210554683.XA priority Critical patent/CN114996299A/zh
Publication of CN114996299A publication Critical patent/CN114996299A/zh
Priority to PCT/CN2023/092952 priority patent/WO2023221813A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Operations Research (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书的实施例提供分布式数据库的计划执行方法、装置及系统。所提供的计划执行方法由计划执行节点处的第一执行线程执行。与被调度来执行当前逻辑子计划的至少一个第二执行线程一起,并行接收当前逻辑子计划的子逻辑子计划返回的回吐数据。判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子。响应于包含涉及行号生成操作的执行算子,缓存所接收的数据并向调度节点发送行号起始值获取请求。随后,根据所接收的行号起始值来为所缓存的数据生成数据行号。然后,与第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行当前逻辑子计划,并且与个第二执行线程一起,将当前逻辑子计划的执行结果作为回吐数据并行发送给被调度来执行当前逻辑子计划的父逻辑子计划的执行线程。

Description

分布式数据库的计划执行方法、装置和系统
技术领域
本说明书实施例通常涉及数据库领域,尤其涉及分布式数据库的计划执行方法及计划执行装置、数据查询方法及数据查询引擎和分布式数据库。
背景技术
分布式数据库由多个分布式存储节点组成。每个分布式存储节点包括数据查询引擎和数据存储引擎。分布式数据库通常采用share noting架构,比如,OceanBase数据库。在这种分布式数据库中,数据分布式地存储在各个数据存储引擎中。
在对分布式数据库执行数据查询时,在分布式存储节点接收到数据查询语句后,该分布式存储节点会根据所接收的数据查询语句生成分布式执行计划,每个分布式执行计划由一个PX算子管理,PX算子所管理的分布式执行计划转换为多个分布式逻辑子计划(DFO),该多个DFO被形成为树状结构。该多个DFO中的每个DFO被PX算子按照一定的逻辑顺序依次调度到多个分布式数据存储节点,由多个分布式存储节点启用多个执行线程来并行执行,由此实现数据查询。
然而,在一些分布式数据库的应用场景下,并行执行的DFO会包含涉及需要为所使用的数据生成数据行号的操作的执行算子,比如,COUNT算子,SUM算子等。例如,在数据查询语句(例如,SQL语句)的语义需要行号的情况下,优化器会选择在合适的执行算子的执行过程中创建行号,比如,在count算子的执行过程中创建行号。在分布式数据库中,数据行号生成操作通常采用ROWNUM函数来实现。ROWNUM函数的语义决定所生成的数据行号必须是连续唯一并且递增。如果DFO包含涉及需要为所使用的数据生成数据行号的操作的执行算子,则由于在该DFO的执行过程中,需要为所使用的数据生成数据行号,而所生成的数据行号需要保证连续递增,从而使得数据行号生成操作成为单点操作。术语“单点操作”是指由单线程顺序执行而无法并发执行的计算操作。在分布式数据库中,这种单点操作会导致对应的DFO无法并行执行,从而严重影响分布式数据库的并行执行性能。
发明内容
鉴于上述,本说明书实施例提供分布式数据库的计划执行方法及计划执行装置、数据查询方法及数据查询引擎和分布式数据库。利用该计划执行方法及计划执行装置,可以在计划执行过程中,一旦遇到需要为所使用的数据生成数据行号的操作的DFO,并行执行该DFO的多个执行线程就向调度节点发送行号起始值获取请求,由调度节点为各个执行线程分配不同的行号起始值,各个执行线程利用所分配的行号起始值来为本地接收的数据生成数据行号,并且随后利用生成有数据行号的数据来并行执行该DFO,由此提升分布式数据库的并行执行性能。
根据本说明书实施例的一个方面,提供一种用于执行分布式数据库的逻辑子计划的方法,所述方法由计划执行节点处的第一执行线程执行,所述方法包括:与被调度来执行当前逻辑子计划的至少一个第二执行线程一起,并行接收所述当前逻辑子计划的子逻辑子计划返回的回吐数据;判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子;响应于所述当前逻辑子计划包含涉及行号生成操作的执行算子,缓存所接收的数据并向调度节点发送行号起始值获取请求,所述行号起始值获取请求包括所缓存的数据行数,根据从所述调度节点接收的行号起始值来为所缓存的数据生成数据行号,所述行号起始值由所述调度节点响应于所述行号起始值获取请求而为所述第一执行线程分配,与所述第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行所述当前逻辑子计划;以及与所述第二执行线程一起,将所述当前逻辑子计划的执行结果作为回吐数据并行发送给被调度来执行所述当前逻辑子计划的父逻辑子计划的执行线程。
可选地,在上述方面的一个示例中,所述方法还可以包括:响应于所述当前逻辑子计划不包含涉及行号生成操作的执行算子,与所述第二执行线程一起,利用各自接收的数据并行执行所述当前逻辑子计划。
可选地,在上述方面的一个示例中,判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子可以包括:遍历所述当前逻辑子计划中的执行算子来判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子。
可选地,在上述方面的一个示例中,所述调度节点根据从所述第一执行线程和所述第二执行线程接收的行号起始值获取请求中的缓存数据行数,为所述第一执行线程和各个第二执行线程分配连续递增的行号起始值。
可选地,在上述方面的一个示例中,所述第二执行线程包括与所述第一执行线程位于同一计划执行节点的执行线程和/或与所述第一执行线程位于不同计划执行节点的执行线程。
可选地,在上述方面的一个示例中,各个计划执行节点处的执行线程的数目根据该计划执行节点所存储数据与所述当前逻辑子计划之间的数据关联性以及该计划执行节点处的空闲线程资源确定。
根据本说明书的实施例的另一方面,提供一种用于在分布式数据库进行数据查询的方法,包括:接收用户提供的数据查询语句;根据所接收的数据查询语句生成分布式执行计划;对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划,所述多个分布式逻辑子计划被形成为树状结构;将所述多个分布式逻辑子计划根据调度顺序依次调度到对应的分布式数据存储节点来按照如上所述的方法并行执行;以及将最顶层分布式逻辑子计划的执行结果作为数据查询结果提供给用户。
可选地,在上述方面的一个示例中,所述分布式逻辑子计划的调度顺序根据所述分布式逻辑子计划的树状结构确定。
根据本说明书的实施例的另一方面,提供一种用于执行分布式数据库的逻辑子计划的装置,所述分布式数据库包括多个分布式存储节点,所述装置应用于充当计划执行节点的第一分布式存储节点,所述装置包括:数据接收单元,经由所述第一分布式存储节点处的第一执行线程,与被调度来执行当前逻辑子计划的至少一个第二执行线程一起并行接收所述当前逻辑子计划的子逻辑子计划返回的回吐数据;计划判断单元,经由所述第一执行线程,判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子;计划执行单元,响应于所述当前逻辑子计划包含涉及行号生成操作的执行算子,经由所述第一执行线程,缓存所接收的数据并向调度节点发送行号起始值获取请求,所述行号起始值获取请求包括所缓存的数据行数,根据从所述调度节点接收的行号起始值来为所缓存的数据生成数据行号,所述行号起始值由所述调度节点响应于所述行号起始值获取请求而为所述第一执行线程分配,与所述第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行所述当前逻辑子计划;以及数据发送单元,经由所述第一执行线程,与所述第二执行线程一起,将所述当前逻辑子计划的执行结果作为回吐数据并行发送给被调度来执行所述当前逻辑子计划的父逻辑子计划的执行线程。
可选地,在上述方面的一个示例中,响应于所述当前逻辑子计划不包含涉及行号生成操作的执行算子,所述计划执行单元经由所述第一执行线程与所述第二执行线程一起,利用各自接收的数据并行执行所述当前逻辑子计划。
可选地,在上述方面的一个示例中,所述计划执行单元包括:数据缓存模块,响应于所述当前逻辑子计划包含涉及行号生成操作的执行算子,经由所述第一执行线程缓存所接收的数据;请求发送模块,经由所述第一执行线程向调度节点发送行号起始值获取请求;行号起始值接收模块,经由所述第一执行线程从所述调度节点接收行号起始值;行号生成模块,经由所述第一执行线程根据从所接收的行号起始值来为所缓存的数据生成数据行号;以及计划执行模块,经由所述第一执行线程与所述第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行所述当前逻辑子计划。
可选地,在上述方面的一个示例中,所述计划判断单元遍历所述当前逻辑子计划中的执行算子来判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子。
可选地,在上述方面的一个示例中,所述第一执行线程和各个第二执行线程处的数据所对应的行号起始值由所述调度节点根据从所述第一执行线程和所述第二执行线程接收的行号起始值获取请求中的缓存数据行数分配,并且所述第一执行线程和各个第二执行线程所接收的行号起始值连续递增。
根据本说明书的实施例的另一方面,提供一种用于在分布式数据库进行数据查询的数据查询引擎,所述分布式数据库包括多个分布式数据存储节点,每个分布式数据存储节点包括数据查询引擎和数据存储引擎,所述数据查询引擎包括:查询语句接收装置,接收用户提供的数据查询语句;计划生成装置;根据所接收的数据查询语句生成分布式执行计划;计划转化装置;对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划,所述多个分布式逻辑子计划被形成为树状结构;计划调度装置,将所述多个分布式逻辑子计划根据调度顺序依次调度到对应的分布式数据存储节点;如上所述的计划执行装置;以及查询结果提供装置,将最顶层分布式逻辑子计划的执行结果作为数据查询结果提供给用户。
根据本说明书的实施例的另一方面,提供一种分布式数据库,包括:至少两个分布式存储节点,每个存储节点包括数据存储引擎以及如上所述的数据查询引擎。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的计划执行装置,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的计划执行方法。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的数据查询引擎,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的数据查询方法。
根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如上所述的计划执行方法或者执行如上所述的数据查询方法。
根据本说明书的实施例的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的计划执行方法或者执行如上所述的数据查询方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了分布式数据库的示例示意图。
图2示出了根据本说明书的实施例的分布式数据库的数据查询过程的示例流程图。
图3示出了分布式执行计划的示例示意图。
图4A-图4E示出了分布式逻辑子计划的树状结构的示例示意图。
图5示出了根据本说明书的实施例的分布式数据库的计划执行方法的示例流程图。
图6示出了数据查询过程的示例示意图。
图7示出了图3中示出的分布式执行计划的计划执行过程的示例示意图。
图8示出了根据本说明书的实施例的分布式数据库的数据查询引擎的方框示意图。
图9示出了根据本说明书的实施例的分布式数据库的计划执行装置的方框示意图。
图10示出了根据本说明书的实施例的计划执行单元的方框示意图。
图11示出了根据本说明书的实施例的基于计算机系统实现的计划执行装置的示例示意图。
图12示出了根据本说明书的实施例的基于计算机系统实现的数据查询引擎的示例示意图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
图1示出了分布式数据库1的示例示意图。如图1所示,分布式数据库系统1包括多个存储节点10-1到10-4。存储节点10-1到10-4为分布式存储节点,每个存储节点包括数据查询引擎和数据存储引擎。要说明的是,图1示出的示例仅仅是例示性的。在其它实施例中,分布式数据库系统1可以包括更多或更少的存储节点。
分布式数据库1例如可以采用share noting架构,比如,OceanBase数据库。在这种分布式数据库中,数据分布式地存储在各个存储节点的存储引擎中。例如,数据可以被分割为多个数据分区(也可以称为数据分块),所分割出的数据分区分别存储到不同的存储引擎中。每个存储引擎可以存储一个或多个数据分区。每个存储节点上涉及的数据访问所需要的CPU资源和IO资源都发生在本地,由该存储节点上的数据查询引擎执行。
在进行数据查询时,分布式数据库中的一个存储节点充当分布式执行计划的调度节点,调度节点的数据查询引擎接收到数据查询语句并生成分布式执行计划后,会将分布式执行计划逻辑转换为多个逻辑子计划(例如,按照语义进行逻辑转换)。在本说明书中,逻辑子计划可以称为DFO(Data Flow Operation)。在完成DFO转换后,调度节点处的数据查询引擎将所生成的DFO并行调度给多个存储节点(即,计划执行节点),各个计划执行节点分别启用一个或多个执行线程来并行执行所调度的DFO。
图2示出了根据本说明书的实施例的分布式数据库的数据查询过程200的示例流程图。
在进行数据查询时,如图2所示,在210,经由用户所连接的存储节点处的数据查询引擎,接收用户输入的数据查询语句。在一个示例中,可以经由数据查询引擎的输入接口、输入单元或输入装置来接收用户输入的数据查询语句。例如,可以经由数据查询引擎的客户端界面上的输入框来接收用户输入的数据查询语句等。例如,在一个示例中,数据查询例如可以是SQL查询,以及数据查询语句可以包括SQL语句,比如,所接收的SQL语句例如可以为“select t2.a,t2.b,(select sum(c)from t5 where t1.b=t5.a)as sum from t1,t2,t3,t4 where t1.a=1and t1.b=t2.a and t1.b=t3.a and t1.b=t4.a”。
在220,在调度节点处,经由数据查询引擎根据所接收的数据查询语句生成分布式执行计划。例如,调度节点可以利用数据查询引擎中的优化器,根据所接收的数据查询语句生成分布式执行计划。分布式执行计划例如可以包括SQL执行计划,该SQL执行计划具有由多个SQL算子组成的树状结构。SQL算子是构成SQL执行计划的基本组成单元,用来描述与具体SQL语义对应的基础操作,比如,TABLE SCAN算子、TABLE INSERT算子、TABLE UPDATE算子、TABLE DELETE算子、JOIN算子、GROUP BY算子、ORDER BY算子、EXCHANGE算子等。相应地,优化器可以是SQL优化器。图3示出了针对上面描述的SQL语句的SQL执行计划的示例示意图。在一个示例中,用户所连接的存储节点可以充当调度节点。在其它示例中,调度节点也可以是其它存储节点。在这种情况下,用户所连接的存储节点需要将所接收的数据查询语句发送给调度节点。
在230,在调度节点处,经由数据查询引擎将分布式执行计划逻辑转换多个DFO。例如,可以根据SQL语义将SQL执行计划逻辑转换为多个DFO。针对图3中示出的SQL执行计划,可以以EXCHANGE OUT算子(发送算子)/EXCHANGE IN算子(接收算子)为边界来逻辑转换SQL执行计划,得到3个DFO。所得到的每个DFO可以包括多个串行执行的算子,例如,多个SQL算子。例如,一个DFO包含了扫描分区算子,聚集算子,发送算子,另外一个DFO包含收集算子、聚集算子等。每个SQL算子可以并行处理。具体地,9号算子-11号算子构成DFO0,4号算子-8号算子构成DFO1,以及1号算子-3号算子构成DFO2。
所生成的DFO具有树状结构,并且DFO之间存在层次关系。如果第一DFO执行时需要使用第二DFO的DFO处理结果,则第一DFO称为上层DFO或父DFO,而第二DFO称为下层DFO或子DFO。在生成DFO后,还可以生成DFO的调度顺序。DFO的调度顺序可以基于DFO的树状结构生成。DFO的调度顺序包括DFO的遍历调度顺序,即,基于遍历策略确定出的调度顺序。此外,DFO的并行执行度也可以基于DFO的树状结构生成。这里,术语“并行执行度”是并行调度的DFO的个数。针对图3示出的SQL执行计划,DFO的调度顺序为DFO0→DFO1→DFO2。
图4A-图4E示出了分布式逻辑子计划的树状结构的示例示意图。
在图4A示出的树状结构中,DFO的并行执行度为2,即,同时执行2个DFO。DFO的调度顺序为DFO2→DFO1→DFO4→DFO3→DFO8→DFO7→DFO6→DFO5。在图4B示出的树状结构中,DFO的并行执行度为2或3,即,同时执行2个DFO或3个DFO。DFO的调度顺序为DFO4→DFO3→DFO2→DFO1→DFO8→DFO7→DFO6→DFO5。在图4C示出的树状结构中,DFO的并行执行度为2,即,同时执行2个DFO。DFO的调度顺序为DFO4→DFO2→DFO1→DFO3→DFO8→DFO7→DFO6→DFO5。在图4D示出的树状结构中,DFO的并行执行度为2或3,即,同时执行2个DFO或3个DFO。DFO的调度顺序为DFO4→DFO2→DFO1→DFO10→DFO9→DFO3→DFO8→DFO7→DFO6→DFO5。图4E示出的树状结构中,DFO的并行执行度为2或3,即,同时执行2个DFO或3个DFO。DFO的调度顺序为DFO10→DFO9→DFO3→DFO4→DFO2→DFO1→DFO8→DFO7→DFO6→DFO5。
接着,循环执行240到270,直到输出数据查询结果。
具体地,在每次循环过程中,在240,判断调度是否完成,即,是否针对所有DFO都完成调度处理。如果针对所有DFO都完成调度处理,则在270,将当前DFO(即,Root DFO)的处理结果作为数据查询结果提供给用户。如果还存在未调度的DFO,则在250,按照调度顺序将当前未调度的DFO调度给各个计划执行节点。各个计划执行节点的数据查询引擎并行执行所接收的DFO。各个计划执行节点的DFO并行执行过程将在下面参照图5进行描述。接着,在260,在各个计划执行节点完成针对DFO的并行处理后,流式向父DFO(Patent DFO)回吐数据。
在调度节点将DFO调度到各个计划执行节点后,每个计划执行节点会从各自的空闲线程池中启用一个或多个空闲线程来并行执行所接收的DFO。每个计划执行节点所启用的线程可以成为执行线程。每个计划执行节点所启用的执行线程可以包括一个或多个线程。
在一些实施例中,各个计划执行节点处的执行线程的数目可以根据该计划执行节点所存储数据与当前DFO之间的数据关联性以及该计划执行节点处的空闲线程资源确定。在本说明书中,术语“数据关联性”用于指示DFO执行时所使用数据与计划执行节点所存储数据之间是否存在关联性,例如,所使用数据是否是所存储数据,或者所使用数据是否基于所存储数据得到等。例如,假设DFO的执行并行度为64,则各个计划执行节点需要总共启用64个线程。在这种情况下,如果计划执行节点中存在与DFO之间具有数据关联性的计划执行节点,则尽量选用该计划执行节点中的空闲线程作为执行线程。如果计划执行节点中不存在与DFO之间具有数据关联性的计划执行节点,则可以从各个计划执行节点中的空闲线程随机选择空闲线程作为执行线程。例如,对于包含数据扫描算子(TABLE SCAN)的DFO,尽量调度在待扫描数据所在存储节点中的空闲线程。对于不包含数据扫描算子的DFO,可以任意选取足量空闲线程来作为执行线程。此外,在一些实施例中,在进行执行线程选择时,还可以考虑各个计划执行节点的工作负载平衡,即,使得启用执行线程后,分布式数据库中的计划执行节点的工作负载尽量保持负载平衡。
图5示出了根据本说明书的实施例的分布式数据库的计划执行方法500的示例流程图。在下面的描述中,计划执行节点所启用的一个执行线程称为第一执行线程,以及与第一执行线程一起执行当前DFO的其它执行线程称为第二执行线程。第二执行线程可以包括至少一个执行线程。例如,第二执行线程可以包括与第一执行线程位于同一计划执行节点的执行线程和/或与第一执行线程位于不同计划执行节点的执行线程。
如图5所示,在501,第一执行线程与所有第二执行线程一起,并行接收当前DFO的子DFO返回的回吐数据。这里,术语“并行接收”是指第一执行线程和第二执行线程同时接收子DFO返回的回吐数据。术语“回吐数据”是指子DFO需要提供给父DFO以供父DFO使用来执行的数据。此外,可选地,在另一示例中,在存储节点并行处理多个DFO的情况下,例如,在存储节点存在用于生产数据的数据生产者DFO和用于消费数据的数据消费者DFO的情况下,第一执行线程与所有第二执行线程一起,并行流式接收当前DFO的子DFO返回的回吐数据。
在502,第一执行线程和各个第二执行线程分别判断当前DFO是否包含涉及行号生成操作的执行算子。例如,可以通过遍历当前DFO中的执行算子来判断当前DFO中是否包含涉及行号生成操作的执行算子。涉及行号生成操作的执行算子的示例例如可以包括但不限于:COUNT算子、SUM算子等。
响应于当前DFO不包含涉及行号生成操作的执行算子,在503,第一执行线程与所有第二执行线程一起,利用各自接收的数据并行执行当前DFO。随后,在504,第一执行线程与所有第二执行线程一起,将当前DFO的处理结果并行发送给被调度来执行当前DFO的父DFO的执行线程。
响应于当前DFO包含涉及行号生成操作的执行算子,在505,第一执行线程和各个第二执行线程分别缓存所接收的数据,并且在506,第一执行线程和各个第二执行线程分别向调度节点发送行号起始值获取请求,各个执行线程所发送的行号起始值获取请求包括该执行线程所缓存的数据行数。
响应于接收到各个执行线程所发送的行号起始值获取请求,调度节点根据所接收的行号起始值获取请求中的缓存数据行数,为第一执行线程和各个第二执行线程分配连续递增的行号起始值。所分配的行号起始值被分配提供给对应的执行线程。在所分配的行号起始值中,相邻两个行号起始值的差值不小于在先行号起始值所对应的执行线程所缓存的数据行数。在一个示例中,相邻两个行号起始值的差值可以等于在先行号起始值所对应的执行线程所缓存的数据行数。例如,假设存在两个执行线程:线程A和线程B。线程A缓存有5行数据,以及线程B缓存有10行数据,则为线程A分配的行号起始值MA=0,而给线程B分配的行号起始值MA=5。
在507,第一执行线程和各个第二执行线程分别从调度节点接收响应于行号起始值获取请求而返回的行号起始值,并且在508,第一执行线程和各个第二执行线程分别根据所接收的行号起始值来为所缓存的数据生成数据行号。
在为所缓存的数据生成数据行号后,在509,第一执行线程与各个第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行当前DFO,并且在510,第一执行线程与各个第二执行线程一起,将当前DFO的执行结果作为回吐数据并行发送给被调度来执行当前DFO的父DFO的执行线程,由此完成针对当前DFO的并行执行处理。
图6示出了图2中示出的数据查询过程的示例示意图。在图6的示例中,在进行数据查询时,接收到用户发起的数据查询语句的分布式存储节点中的PX Operator充当查询协调者(Query Coordinator,QC)。该分布式存储节点预约足够的线程资源。当分布式执行计划需要并行执行时,QC决定并行度,并且发送工作线程获取请求(QC请求)到各个分布式存储节点上的子查询协调者(Sub Query Coordinator,SQC)。SQC是各个分布式存储节点上用于处理QC请求的线程。SQC负责在所在分布式存储节点上为DFO申请执行资源、构造执行上下文环境等,然后调度工作线程(Worker)来在各个存储节点上并行执行DFO,如图6中所示,在各个QC或SQC处,并行调度的多个执行线程从扫描任务队列中竞争任务来执行。
如图6所示,QC将需要并行执行的DFO以RPC的方式分发到合适的存储节点。所调度的存储节点中的SQC调度PX线程执行所接收的DFO。当各个存储节点的DFO执行完毕后,流式向父DFO返回执行结果。
下面将参照图7来描述针对图3中示出的分布式执行计划的DFO执行过程。在图3中示出的分布式执行计划中,线程并行度为64,即,针对每个DFO,同时启用64个线程来并行执行。
图3的分布式执行计划用于实现向t2表并行插入t1表的数据,并且生成行号。图3中的分布式执行计划被划分为由一个PX算子管理的三个DFO,即,上述DFO0、DFO1和DFO2。在执行DFO时,首先执行DFO0,随后依次执行DFO1和DFO2。DFO0中的执行算子为数据扫描算子(TABLE SCAN),数据扫描算子不涉及数据行号生成操作,由此按照常规计划执行方法来启用64个执行线程并行执行。DFO0的回吐数据被并行提供给DFO1。DFO1中的执行算子为COUNT算子,COUNT算子涉及数据行号生成操作,由此按照根据本说明书的实施例的并行处理方法来启用64个执行线程并行执行。DFO1的回吐数据被并行提供给DFO2。DFO2中的执行算子为数据插入算子(INSERT),INSERT算子不涉及数据行号生成操作,由此按照常规计划执行方法来启用64个执行线程并行执行,由此完成分布式执行计划的执行过程。
利用上述DFO执行方案,一旦遇到需要为所使用的数据生成数据行号的操作的DFO,并行执行该DFO的多个执行线程就向调度节点发送行号起始值获取请求,由调度节点为各个执行线程分配不同的行号起始值,各个执行线程利用所分配的行号起始值来为本地接收的数据生成数据行号,并且随后利用生成有数据行号的数据来并行执行该DFO,由此提升分布式数据库的并行执行性能。
图8示出了根据本说明书的实施例的数据查询引擎800的示例方框图。
如图8所示,数据查询引擎800包括数据查询语句接收装置810、计划生成装置820、计划转换装置830、计划调度装置840、计划执行装置850和查询结果提供装置860。
数据查询语句接收装置810被配置为接收数据查询语句。例如,在一个示例中,数据查询例如可以是SQL查询,以及数据查询语句可以包括SQL语句,比如,所接收的SQL语句例如可以为“select t2.a,t2.b,(select sum(c)from t5 where t1.b=t5.a)as sumfrom t1,t2,t3,t4 where t1.a=1and t1.b=t2.a and t1.b=t3.a and t1.b=t4.a”。在一个示例中,数据查询语句接收装置810可以被实现为数据查询引擎的输入接口、输入单元或输入装置。例如,数据查询语句接收装置810可以是数据查询引擎的客户端界面上的输入框等。
计划生成装置820被配置为根据所接收的数据查询语句生成分布式执行计划。计划生成装置820的示例例如可以包括优化器,例如,SQL优化器。图3示出了SQL执行计划的示例示意图。
计划转换装置830被配置为对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划(DFO)。在一个示例中,计划转换装置830可以通过以数据重分布点为边界对分布式执行计划进行逻辑转化得到多个DFO。在本说明书中,术语“数据重分布”是指例如将数据从存储节点A重新分布到存储节点B的数据分布过程,该数据分布过程可以通过在分布式执行计划中负责数据发送和数据接收的算子(例如,Exchange out算子和Exchange in算子)来实现。DFO的拆分将会根据Exchange out算子和Exchange in算子拆成两个DFO,其中,一个DFO负责执行完本DFO的所有执行算子后发送数据,以及另一个DFO负责接收数据后再执行本DFO的所有执行算子。除了Exchange算子外,数据重分布还可以利用PX COORD算子实现。PX COORD算子是特殊的Exchange in算子,除了具备接收数据功能之外,它还具备调度子DFO执行的功能。
计划调度装置840被配置为将多个DFO根据调度顺序依次调度到对应的计划执行节点。响应于接收到DFO,各个计划执行节点处的计划执行装置850启用各自的执行线程来并行执行所接收的DFO。响应于DFO调度结束,查询结果提供装置860将最顶层DFO的执行结果作为数据查询结果提供给用户。
图9示出了根据本说明书的实施例的分布式数据库的计划执行装置900的方框示意图。如图9所示,计划执行装置900包括数据接收单元910、计划判断单元920、计划执行单元930和数据发送单元940。
数据接收单元910被配置为经由第一执行线程,与被调度来执行当前DFO的至少一个第二执行线程一起并行接收当前DFO的子DFO返回的回吐数据。数据接收单元910的操作可以参考上面参照图5的501描述的操作。
计划判断单元920被配置为经由第一执行线程,判断当前DFO是否包含涉及行号生成操作的执行算子。例如,计划判断单元920可以通过遍历当前DFO中的执行算子来判断当前DFO是否包含涉及行号生成操作的执行算子。计划判断单元920的操作可以参考上面参照图5的502描述的操作。
计划执行单元930被配置为响应于当前DFO包含涉及行号生成操作的执行算子,经由第一执行线程,缓存所接收的数据并向调度节点发送行号起始值获取请求,所述行号起始值获取请求包括所缓存的数据行数,并且根据从调度节点接收的行号起始值来为所缓存的数据生成数据行号,所述行号起始值由调度节点响应于行号起始值获取请求而为第一执行线程分配。然后,经由第一执行线程与第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行当前DFO。响应于当前DFO不包含涉及行号生成操作的执行算子,计划执行单元930经由第一执行线程与第二执行线程一起,利用各自接收的数据并行执行当前DFO。
数据发送单元940被配置为经由第一执行线程,与第二执行线程一起,将当前DFO的执行结果作为回吐数据并行发送给被调度来执行当前DFO的父DFO的执行线程。数据发送单元940的操作可以参考上面参照图5的510描述的操作。
图10示出了根据本说明书的实施例的计划执行单元1000的方框示意图。如图10所示,计划执行单元1000包括数据缓存模块1010、请求发送模块1020、行号起始值接收模块1030、行号生成模块1040和计划执行模块1050。
数据缓存模块1010被配置为响应于当前DFO包含涉及行号生成操作的执行算子,经由第一执行线程缓存所接收的数据。数据缓存模块1010的操作可以参考上面参照图5描述的505的操作。
请求发送模块1020被配置为经由第一执行线程向调度节点发送行号起始值获取请求。请求发送模块1020的操作可以参考上面参照图5描述的506的操作。
行号起始值接收模块1030被配置为经由第一执行线程从调度节点接收行号起始值。行号起始值接收模块1030的操作可以参考上面参照图5描述的507的操作。
行号生成模块1040被配置为经由第一执行线程,根据所接收的行号起始值来为所缓存的数据生成数据行号。行号生成模块1040的操作可以参考上面参照图5描述的508的操作。
计划执行模块1050被配置为经由第一执行线程与第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行当前DFO。计划执行模块1050的操作可以参考上面参照图5描述的509的操作。
如上参照图1到图10,对根据本说明书实施例的用于分布式数据库的计划执行方法、计划执行装置、数据查询方法、数据查询引擎和分布式数据库进行了描述。上面的计划执行装置和数据查询引擎可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图11示出了根据本说明书的实施例的基于计算机系统实现的计划执行装置1100的示意图。如图11所示,计划执行装置1100可以包括至少一个处理器1110、存储器(例如,非易失性存储器)1120、内存1130和通信接口1140,并且至少一个处理器1110、存储器1120、内存1130和通信接口1140经由总线1160连接在一起。至少一个处理器1110执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1110:与被调度来执行当前逻辑子计划的至少一个第二执行线程一起,并行接收当前逻辑子计划的子逻辑子计划返回的回吐数据;判断当前逻辑子计划是否包含涉及行号生成操作的执行算子;响应于当前逻辑子计划包含涉及行号生成操作的执行算子,缓存所接收的数据并向调度节点发送行号起始值获取请求,所述行号起始值获取请求包括所缓存的数据行数,根据从调度节点接收的行号起始值来为所缓存的数据生成数据行号,所述行号起始值由调度节点响应于所述行号起始值获取请求而为第一执行线程分配,与第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行当前逻辑子计划;以及与第二执行线程一起,将当前逻辑子计划的执行结果作为回吐数据并行发送给被调度来执行当前逻辑子计划的父逻辑子计划的执行线程。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1110进行本说明书的各个实施例中以上结合图1-图10描述的各种操作和功能。
图12示出了根据本说明书的实施例的基于计算机系统实现的数据查询引擎1200的示意图。如图12所示,数据查询引擎1200可以包括至少一个处理器1210、存储器(例如,非易失性存储器)1220、内存1230和通信接口1240,并且至少一个处理器1210、存储器1220、内存1230和通信接口1240经由总线1260连接在一起。至少一个处理器1210执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1210:接收用户提供的数据查询语句;根据所接收的数据查询语句生成分布式执行计划;对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划,所述多个分布式逻辑子计划被形成为树状结构;将多个分布式逻辑子计划根据调度顺序依次调度到对应的分布式数据存储节点来按照如上所述的方法并行执行;以及将最顶层分布式逻辑子计划的执行结果作为数据查询结果提供给用户。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1210进行本说明书的各个实施例中以上结合图1-图10描述的各种操作和功能。
根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-图10描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图1-图10描述的各种操作和功能。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。

Claims (19)

1.一种用于执行分布式数据库的逻辑子计划的方法,所述方法由计划执行节点处的第一执行线程执行,所述方法包括:
与被调度来执行当前逻辑子计划的至少一个第二执行线程一起,并行接收所述当前逻辑子计划的子逻辑子计划返回的回吐数据;
判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子;
响应于所述当前逻辑子计划包含涉及行号生成操作的执行算子,
缓存所接收的数据并向调度节点发送行号起始值获取请求,所述行号起始值获取请求包括所缓存的数据行数,
根据从所述调度节点接收的行号起始值来为所缓存的数据生成数据行号,所述行号起始值由所述调度节点响应于所述行号起始值获取请求而为所述第一执行线程分配,
与所述第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行所述当前逻辑子计划;以及
与所述第二执行线程一起,将所述当前逻辑子计划的执行结果作为回吐数据并行发送给被调度来执行所述当前逻辑子计划的父逻辑子计划的执行线程。
2.如权利要求1所述的方法,还包括:
响应于所述当前逻辑子计划不包含涉及行号生成操作的执行算子,与所述第二执行线程一起,利用各自接收的数据并行执行所述当前逻辑子计划。
3.如权利要求1所述的方法,其中,判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子包括:
遍历所述当前逻辑子计划中的执行算子来判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子。
4.如权利要求1所述的方法,其中,所述调度节点根据从所述第一执行线程和所述第二执行线程接收的行号起始值获取请求中的缓存数据行数,为所述第一执行线程和各个第二执行线程分配连续递增的行号起始值。
5.如权利要求1所述的方法,其中,所述第二执行线程包括与所述第一执行线程位于同一计划执行节点的执行线程和/或与所述第一执行线程位于不同计划执行节点的执行线程。
6.如权利要求5所述的方法,其中,各个计划执行节点处的执行线程的数目根据该计划执行节点所存储数据与所述当前逻辑子计划之间的数据关联性以及该计划执行节点处的空闲线程资源确定。
7.一种用于在分布式数据库进行数据查询的方法,包括:
接收用户提供的数据查询语句;
根据所接收的数据查询语句生成分布式执行计划;
对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划,所述多个分布式逻辑子计划被形成为树状结构;
将所述多个分布式逻辑子计划根据调度顺序依次调度到对应的分布式数据存储节点来按照如权利要求1到6中任一所述的方法并行执行;以及
将最顶层分布式逻辑子计划的执行结果作为数据查询结果提供给用户。
8.如权利要求7所述的方法,其中,所述分布式逻辑子计划的调度顺序根据所述分布式逻辑子计划的树状结构确定。
9.一种用于执行分布式数据库的逻辑子计划的装置,所述分布式数据库包括多个分布式存储节点,所述装置应用于充当计划执行节点的第一分布式存储节点,所述装置包括:
数据接收单元,经由所述第一分布式存储节点处的第一执行线程,与被调度来执行当前逻辑子计划的至少一个第二执行线程一起并行接收所述当前逻辑子计划的子逻辑子计划返回的回吐数据;
计划判断单元,经由所述第一执行线程,判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子;
计划执行单元,响应于所述当前逻辑子计划包含涉及行号生成操作的执行算子,经由所述第一执行线程,缓存所接收的数据并向调度节点发送行号起始值获取请求,所述行号起始值获取请求包括所缓存的数据行数,根据从所述调度节点接收的行号起始值来为所缓存的数据生成数据行号,所述行号起始值由所述调度节点响应于所述行号起始值获取请求而为所述第一执行线程分配,与所述第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行所述当前逻辑子计划;以及
数据发送单元,经由所述第一执行线程,与所述第二执行线程一起,将所述当前逻辑子计划的执行结果作为回吐数据并行发送给被调度来执行所述当前逻辑子计划的父逻辑子计划的执行线程。
10.如权利要求9所述的装置,其中,响应于所述当前逻辑子计划不包含涉及行号生成操作的执行算子,所述计划执行单元经由所述第一执行线程与所述第二执行线程一起,利用各自接收的数据并行执行所述当前逻辑子计划。
11.如权利要求9所述的装置,其中,所述计划执行单元包括:
数据缓存模块,响应于所述当前逻辑子计划包含涉及行号生成操作的执行算子,经由所述第一执行线程缓存所接收的数据;
请求发送模块,经由所述第一执行线程向调度节点发送行号起始值获取请求;
行号起始值接收模块,经由所述第一执行线程从所述调度节点接收行号起始值;
行号生成模块,经由所述第一执行线程根据从所接收的行号起始值来为所缓存的数据生成数据行号;以及
计划执行模块,经由所述第一执行线程与所述至第二执行线程一起,利用各自接收的生成有数据行号的数据并行执行所述当前逻辑子计划。
12.如权利要求9所述的装置,其中,所述计划判断单元遍历所述当前逻辑子计划中的执行算子来判断所述当前逻辑子计划是否包含涉及行号生成操作的执行算子。
13.如权利要求9所述的装置,其中,所述第一执行线程和各个第二执行线程处的数据所对应的行号起始值由所述调度节点根据从所述第一执行线程和所述第二执行线程接收的行号起始值获取请求中的缓存数据行数分配,并且所述第一执行线程和各个第二执行线程所接收的行号起始值连续递增。
14.一种用于在分布式数据库进行数据查询的数据查询引擎,所述分布式数据库包括多个分布式数据存储节点,每个分布式数据存储节点包括数据查询引擎和数据存储引擎,所述数据查询引擎包括:
查询语句接收装置,接收用户提供的数据查询语句;
计划生成装置;根据所接收的数据查询语句生成分布式执行计划;
计划转化装置;对分布式执行计划进行逻辑转化得到多个分布式逻辑子计划,所述多个分布式逻辑子计划被形成为树状结构;
计划调度装置,将所述多个分布式逻辑子计划根据调度顺序依次调度到对应的分布式数据存储节点;
如权利要求9到13中任一所述的计划执行装置;以及
查询结果提供装置,将最顶层分布式逻辑子计划的执行结果作为数据查询结果提供给用户。
15.一种分布式数据库,包括:
至少两个分布式存储节点,每个存储节点包括数据存储引擎以及如权利要求14所述的数据查询引擎。
16.一种用于分布式数据库的计划调度装置,包括:
至少一个处理器,
与所述至少一个处理器耦合的存储器,以及
存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1到6中任一所述的方法。
17.一种用于分布式数据库的数据查询引擎,包括:
至少一个处理器,
与所述至少一个处理器耦合的存储器,以及
存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求7或8所述的方法。
18.一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如权利要求1到6中任一所述的方法或者执行如权利要求7或8所述的方法。
19.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如权利要求1到6中任一所述的方法或者执行如权利要求7或8所述的方法。
CN202210554683.XA 2022-05-19 2022-05-19 分布式数据库的计划执行方法、装置和系统 Pending CN114996299A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210554683.XA CN114996299A (zh) 2022-05-19 2022-05-19 分布式数据库的计划执行方法、装置和系统
PCT/CN2023/092952 WO2023221813A1 (zh) 2022-05-19 2023-05-09 分布式数据库的计划执行方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210554683.XA CN114996299A (zh) 2022-05-19 2022-05-19 分布式数据库的计划执行方法、装置和系统

Publications (1)

Publication Number Publication Date
CN114996299A true CN114996299A (zh) 2022-09-02

Family

ID=83027014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210554683.XA Pending CN114996299A (zh) 2022-05-19 2022-05-19 分布式数据库的计划执行方法、装置和系统

Country Status (2)

Country Link
CN (1) CN114996299A (zh)
WO (1) WO2023221813A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023221813A1 (zh) * 2022-05-19 2023-11-23 北京奥星贝斯科技有限公司 分布式数据库的计划执行方法、装置和系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574900A (en) * 1994-02-25 1996-11-12 International Business Machines Corporation System and method for optimizing parallel processing of database queries
CN107329814B (zh) * 2017-06-16 2020-05-26 电子科技大学 一种基于rdma的分布式内存数据库查询引擎系统
CN111858610B (zh) * 2020-07-28 2024-08-13 贝壳技术有限公司 数据行号分配方法和装置、存储介质、电子设备
CN114996299A (zh) * 2022-05-19 2022-09-02 北京奥星贝斯科技有限公司 分布式数据库的计划执行方法、装置和系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023221813A1 (zh) * 2022-05-19 2023-11-23 北京奥星贝斯科技有限公司 分布式数据库的计划执行方法、装置和系统

Also Published As

Publication number Publication date
WO2023221813A1 (zh) 2023-11-23

Similar Documents

Publication Publication Date Title
Viswanathan et al. {CLARINET}:{WAN-Aware} Optimization for Analytics Queries
Arabnejad et al. List scheduling algorithm for heterogeneous systems by an optimistic cost table
Fang et al. Parallel stream processing against workload skewness and variance
CN104050042B (zh) Etl作业的资源分配方法及装置
Liu et al. Revisiting pipelined parallelism in multi-join query processing
CN114661752A (zh) 分布式数据库的计划调度方法、装置和系统
Wang et al. Phase-reconfigurable shuffle optimization for Hadoop MapReduce
Zhou et al. An adaptable distributed query processing architecture
CN114996299A (zh) 分布式数据库的计划执行方法、装置和系统
Li et al. The packing server for real-time scheduling of mapreduce workflows
CN113886111B (zh) 一种基于工作流的数据分析模型计算引擎系统及运行方法
US20160034307A1 (en) Modifying a flow of operations to be executed in a plurality of execution environments
Chen et al. Pisces: optimizing multi-job application execution in mapreduce
CN110134506A (zh) 基于处理器内核动态的实时动态关键路径多核调度方法
CN114969111B (zh) 分布式数据库的逻辑子计划执行方法、装置及系统
CN116582407A (zh) 一种基于深度强化学习的容器化微服务编排系统及方法
Tang et al. A network load perception based task scheduler for parallel distributed data processing systems
Suman et al. Analysis of process scheduling algorithm for multiprocessor system
Raju et al. A Comparative Study of Spark Schedulers' Performance
Hameurlain et al. CPU and incremental memory allocation in dynamic parallelization of SQL queries
CN114860739B (zh) 针对分布式数据库的查询方法及装置
Shah et al. Enabling qos support for multi-core message broker in publish/subscribe system
Hemamalini et al. State of the art: task scheduling algorithms in a heterogeneous grid computing environment
Sebastian Improved fair scheduling algorithm for Hadoop clustering
US10915373B2 (en) Enabling rewire-aware MapReduce cluster in disaggregated systems

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