CN107784032A - 一种数据查询结果的渐进式输出方法、装置及系统 - Google Patents

一种数据查询结果的渐进式输出方法、装置及系统 Download PDF

Info

Publication number
CN107784032A
CN107784032A CN201610798093.6A CN201610798093A CN107784032A CN 107784032 A CN107784032 A CN 107784032A CN 201610798093 A CN201610798093 A CN 201610798093A CN 107784032 A CN107784032 A CN 107784032A
Authority
CN
China
Prior art keywords
sql statement
node
tree
executive plan
gradual
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
Application number
CN201610798093.6A
Other languages
English (en)
Other versions
CN107784032B (zh
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.)
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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 Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201610798093.6A priority Critical patent/CN107784032B/zh
Publication of CN107784032A publication Critical patent/CN107784032A/zh
Application granted granted Critical
Publication of CN107784032B publication Critical patent/CN107784032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2445Data retrieval commands; View definitions
    • 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

Landscapes

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

Abstract

本发明公开了一种数据查询结果的渐进式输出方法、装置及系统,用以解决现有的数据库查询中,需要完成所有查询操作后才能得到整个结果集,导致数据查询任务响应时间长,无法满足用户及时观察执行结果和尽早处理结果集的需求的问题。方法为:获取SQL语句;对SQL语句进行分析确定SQL语句包含的各操作,并对SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征SQL语句的渐进式执行过程的树状结构的执行计划,其中,树状结构的执行计划的每个节点对应SQL语句的至少一个操作;按照树状结构的执行计划渐进式执行SQL语句包含的操作,并渐进式输出按照树状结构的执行计划得到的执行结果。

Description

一种数据查询结果的渐进式输出方法、装置及系统
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据查询结果的渐进式输出方法、装置及系统。
背景技术
数据库系统是上层应用普遍使用的数据管理系统。在数据库系统中查询操作所占的比例最大,而查询操作所基于的选择(select)语句是结构化查询语言(StructuredQuery Language,SQL)中代价最大的语句。如果数据量积累到一定程度,例如银行的账户数据库表信息积累到上百万甚至上千万条记录,通过查询语句全表扫描一次往往需要数分钟甚至数小时。
因此,在当前数据库系统中大数据集的操作执行时间长,等所有查询操作完成后一次性返回整个结果集。
新型的大数据分布式运算系统如Hadoop、Spark等,基于处于海量数据的MapReduce模型设计,使得大规模数据的操作时间大大缩短,例如使用MapReduce模型仅需分钟级的操作执行时间,而且MapReduce模型下对海量数据也可以进行选择、投影、并集、差集、叉积、聚合等运算。不过,MapReduce模型也是完成所有运算得到最终结果并存储在文件中后返回该最终结果,并且中间运算过程中存在多次跟磁盘文件系统之间的输入输出操作。
因此,大数据分布式运算系统在处理大规模数据时虽在整体上减少了执行时间,但仍存在等待输出结果的时间长,不利于针对该输出结果的并行任务的设计及执行。
当前经典的数据库系统包括Oracle、SQLServer和MySQL。如图1所示为SQLServer的系统架构示意图。以SQLServer为例,当前经典的数据库系统,主要包括:网络管理模块、查询引擎模块和存储引擎模块等。其中,查询引擎模块由查询解析子系统、查询优化子系统和查询执行子系统构成。存储引擎模块由事务管理子系统、缓存管理子系统以及对外提供的访问接口模块构成。SQLServer线性执行对数据库的查询操作,对SQL语句解析后提交给存储引擎执行并等待直至最终结果被存储引擎返回。在SQLServer等数据库系统中,查询结果由查询引擎一次性返回。如图2所示为同一条SQL语句的两种查询树的表达形式,不同的查询树产生不同的中间结果,由此产生不同的输入输出代价。对SQL语句查询优化的大部分工作在于尽量减少不必要的中间结果,以提高查询性能。
Hive采用MapReduce模型的类SQL数据处理框架,是基于Hadoop实现的开元大数据查询系统,工作原理如图3所示,Hive对外提供SQL接口,Hive对SQL命令进行解析,生成Map-Reduce任务,将该任务交给Hadoop分布式执行,由Hadoop执行Map-Reduce任务后返回执行结果。
综上所述,现有的数据库查询中,需要完成所有查询操作后才能得到整个结果集,导致数据查询任务响应时间长,无法满足用户及时观察执行结果和尽早处理结果集的需求,并且无法实现基于大数据处理结果的流水式多任务并行处理。
发明内容
本发明实施例提供一种数据查询结果的渐进式输出方法、装置及系统,用以解决现有的数据库查询中,需要完成所有查询操作后才能得到整个结果集,导致数据查询任务响应时间长,无法满足用户及时观察执行结果和尽早处理结果集的需求的问题。
本发明实施例提供的具体技术方案如下:
第一方面,本发明实施例提供了一种数据查询结果的渐进式输出方法,该方法主要包括:
获取结构化查询语言SQL语句;
对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作;
按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果。
该实施例中,通过对SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征该SQL语句的执行过程的树状结构的执行计划,该树状结构的执行计划中的每个节点对应该SQL语句的至少一个操作,按照该树状结构的执行计划渐进式执行该SQL语句包含的各操作,并渐进式输出按照该树状结构的执行计划得到的执行结果,从而使得数据操作执行结果可以渐进式返回,不需要在完成所有查询操作后才能得到整个结果集,降低了数据查询任务响应的时长,满足了用户及时观察执行结果和尽早处理结果集的需求。并且,为实现基于大数据处理结果的流水式多任务并行处理提供了可能性。
可能的实施方式中,按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果,包括:
按照所述树状结构的执行计划启动从每个叶节点到根节点的并行化处理;
其中,所述并行化处理过程中,对于任意一个叶节点,将所述叶节点对部分数据执行操作产生的数据,经从所述叶节点至所述根节点的每级节点分别进行操作后,得到所述部分数据的执行结果,并输出所述部分数据的执行结果。
该实施例中,通过在并行化处理过程中,依次从叶节点到根节点对部分数据进行处理得到该部分数据的执行结果,提高了查询效率,并且使得能够渐进式输出查询结果。
可能的实施方式中,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,包括:
在所述SQL语句包含的每个操作所在的所述树状结构的执行计划的树节点上增加排序操作子节点,所述排序操作子节点用于根据父节点对应的所述操作的属性,对所述父节点对应的所述操作所需的集合中包含的元素进行排序。
该实施例中,通过对每个操作所在的树节点上增设排序操作子节点,由该排序操作子节点对相应的集合中的元素进行渐进式排序,为能够对集合的渐进式处理提供了保障,并进一步提高了查询效率。
可能的实施方式中,对所述SQL语句包含的各操作进行渐进式调整,包括:
将所述SQL语句包含的各操作中需要基于原始数据集进行的单集合操作,作为所述树状结构的执行计划的叶节点;
将所述SQL语句包含的各操作中需要基于子节点输出的结果进行的双集合或单集合操作,作为所述树状结构的执行计划中所述子节点的父节点。
该实施例中,通过对SQL语句包含的各操作进行渐进式调整,使得能够得到用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划。
可能的实施方式中,对所述SQL语句包含的各操作进行渐进式调整,包括:
若所述SQL语句中包含聚合操作,将所述聚合操作置于所述树状结构的执行计划的根节点。
该实施方式中,通过将聚合操作置于树状结构的执行计划的根节点,使得聚合操作不会影响其他操作的渐进式执行过程。
可能的实施方式中,渐进式输出按照所述树状结构的执行计划得到的执行结果,包括:
若所述SQL语句中包含聚合操作,基于所述部分数据进行聚合操作得到执行结果并输出所述执行结果,直至确定所述聚合操作得到的执行结果不发生变化时,输出所述聚合操作的最终结果。
第二方面,本发明实施例提供了一种数据查询结果的渐进式输出装置,包括:
获取模块,用于获取结构化查询语言SQL语句;
生成模块,用于对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作;
处理模块,用于按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果。
可能的实施方式中,所述处理模块具体用于:
按照所述树状结构的执行计划启动从每个叶节点到根节点的并行化处理;
其中,所述并行化处理过程中,对于任意一个叶节点,将所述叶节点对部分数据执行操作产生的数据,经从所述叶节点至所述根节点的每级节点分别进行操作后,得到所述部分数据的执行结果,并输出所述部分数据的执行结果。
可能的实施方式中,所述生成模块具体用于:
在所述SQL语句包含的每个操作所在的所述树状结构的执行计划的树节点上增加排序操作子节点,所述排序操作子节点用于根据父节点对应的所述操作的属性,对所述父节点对应的所述操作所需的集合中包含的元素进行排序。
可能的实施方式中,所述生成模块具体用于:
将所述SQL语句包含的各操作中需要基于原始数据集进行的单集合操作,作为所述树状结构的执行计划的叶节点;
将所述SQL语句包含的各操作中需要基于子节点输出的结果进行的双集合或单集合操作,作为所述树状结构的执行计划中所述子节点的父节点。
可能的实施方式中,所述生成模块具体用于:
若所述SQL语句中包含聚合操作,将所述聚合操作置于所述树状结构的执行计划的根节点。
可能的实施方式中,所述处理模块具体用于:
若所述SQL语句中包含聚合操作,基于所述部分数据进行聚合操作得到执行结果并输出所述执行结果,直至确定所述聚合操作得到的执行结果不发生变化时,输出所述聚合操作的最终结果。
第三方面,本发明实施例提供了一种数据查询结果的渐进式输出装置,该装置主要包括处理器和存储器,其中,存储器中保存有预设的程序,处理器读取存储器中的程序,按照该程序执行以下过程:
获取结构化查询语言SQL语句;
对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作;
按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果。
可能的实施方式中,所述处理器具体用于:
按照所述树状结构的执行计划启动从每个叶节点到根节点的并行化处理;
其中,所述并行化处理过程中,对于任意一个叶节点,将所述叶节点对部分数据执行操作产生的数据,经从所述叶节点至所述根节点的每级节点分别进行操作后,得到所述部分数据的执行结果,并输出所述部分数据的执行结果。
可能的实施方式中,所述处理器具体用于:
在所述SQL语句包含的每个操作所在的所述树状结构的执行计划的树节点上增加排序操作子节点,所述排序操作子节点用于根据父节点对应的所述操作的属性,对所述父节点对应的所述操作所需的集合中包含的元素进行排序。
可能的实施方式中,所述处理器具体用于:
将所述SQL语句包含的各操作中需要基于原始数据集进行的单集合操作,作为所述树状结构的执行计划的叶节点;
将所述SQL语句包含的各操作中需要基于子节点输出的结果进行的双集合或单集合操作,作为所述树状结构的执行计划中所述子节点的父节点。
可能的实施方式中,所述处理器具体用于:
若所述SQL语句中包含聚合操作,将所述聚合操作置于所述树状结构的执行计划的根节点。
可能的实施方式中,所述处理器具体用于:
若所述SQL语句中包含聚合操作,基于所述部分数据进行聚合操作得到执行结果并输出所述执行结果,直至确定所述聚合操作得到的执行结果不发生变化时,输出所述聚合操作的最终结果。
第四方面,本发明实施例提供了一种数据查询结果的渐进式输出系统,包括:
处理节点,用于获取结构化查询语言SQL语句,对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作,按照所述树状结构的执行计划依次指示每个操作节点渐进式执行所述SQL语句包含的操作并返回操作结果至上一级节点,并渐进式输出按照所述树状结构的执行计划得到的执行结果;
至少一个操作节点,用于根据所述处理节点的指示渐进式执行所述SQL语句包含的操作并返回操作结果给上一级节点。
附图说明
图1为SQLServer的系统架构示意图;
图2为同一条SQL语句的两种查询树的表达形式示意图;
图3为Hive工作原理示意图;
图4为现有的SQL语句的执行流程示意图;
图5为本发明实施例中对数据查询结果进行渐进式输出的方法流程示意图;
图6为本发明实施例中分布式大数据查询系统的结构和任务执行过程示意图;
图7为本发明实施例中第二树状执行计划的结构示意图;
图8为本发明实施例中数据查询结果的渐进式输出装置的结构示意图;
图9为本发明实施例中另一数据查询结果的渐进式输出装置的结构示意图;
图10为本发明实施例中数据查询结果的渐进式输出系统的架构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
本发明实施例中,为了解决现有的数据库查询中,需要完成所有查询操作后才能得到整个结果集,导致数据查询任务响应时间长,无法满足用户及时观察执行结果和尽早处理结果集的需求的问题,提出了一种数据查询结果的渐进式输出方法。
本发明实施例应用于分布式的大数据查询系统,分布式的大数据查询系统对外提供用于获取SQL命令的SQL接口,在系统内部对SQL命令进行解析,生成分布式任务执行计划,将该分布式任务执行计划提交给分布式执行引擎,分布式执行引擎返回最终的执行结果。
现有的SQL语句的执行流程如图4所示,本发明实施例对分布式执行计划和分布式执行引擎进行改造,以达到渐进式输出SQL语句的执行结果的目的。
本发明实施例中,如图5所示,基于分布式的大数据查询进行数据查询后,对数据查询结果进行渐进式输出的详细方法流程如下:
步骤501:获取SQL语句。
步骤502:对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作。
一个具体实施方式中,对SQL语句进行分析确定该SQL语句包含的各操作后,按传统方法生成相应的树状结构的执行计划,对该传统方法生成的树状结构的执行计划进行渐进式调整,根据渐进式调整的结果生成用于表征SQL语句的渐进式执行过程的树状结构的执行计划。
另一个具体实施方式中,按照预设规则对SQL语句包含的各操作进行渐进式调整,根据渐进式调整结果生成用于表征该SQL语句的渐进式执行过程的树状结构的执行计划。
其中,SQL语句包含的各操作包括但不限于:连接、并集、交集、差集、聚合、选择、排序等。
本发明实施例中,对所述SQL语句包含的各操作进行渐进式调整的原则具体如下:将所述SQL语句包含的各操作中需要基于原始数据集进行的单集合操作,如选择等,作为用于表征SQL语句的渐进式执行过程的树状结构的执行计划的叶节点;将所述SQL语句包含的各操作中需要基于子节点输出的结果进行的双集合或单集合操作,如交集、并集、差集、连接等,作为用于表征SQL语句的渐进式执行过程的树状结构的执行计划中所述子节点的父节点。
其中,单集合操作是指一元操作,双集合操作是指二元操作。
本发明实施例中,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划的过程中,在所述SQL语句包含的每个操作所在的该树状结构的执行计划的树节点上增加排序操作子节点,所述排序操作子节点用于根据父节点对应的所述操作的属性,对所述父节点对应的所述操作所需的集合中包含的元素进行渐进式排序。
例如,若父节点为并集、交集、差集等,则该父节点的排序操作子节点按照集合包含的数据元素的主键进行排序。
具体地,若所述排序操作子节点的父节点对应的操作所需的集合可以是原始数据集合,也可以是该父节点的下一级节点的执行结果的集合。
具体地,若所述SQL语句中包含聚合操作,将所述聚合操作置于用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划的根节点。
步骤503:按照用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划得到的执行结果。
本发明实施例中,按照用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划渐进式执行SQL语句包含的操作,并渐进式输出按照用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划得到的执行结果,具体如下:
按照用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划启动从每个叶节点到根节点的并行化处理;
其中,所述并行化处理过程中,对于任意一个叶节点,将所述叶节点对部分数据执行操作产生的数据,经从所述叶节点至所述根节点的每级节点分别进行操作后,得到所述部分数据的执行结果,并输出所述部分数据的执行结果。
具体地,若所述SQL语句中包含聚合操作,基于所述部分数据进行聚合操作得到执行结果并输出所述执行结果,直至确定所述聚合操作得到的执行结果不发生变化时,输出所述聚合操作的最终结果。
具体地,渐进式输出按照用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划得到的执行结果给用户。
本发明实施例中,渐进式排序的过程可参见申请号为“201310330196.6”的专利申请中的描述,具体地,渐进式排序的核心思想在于:在数据集合中的元素排序的过程中,每确定一个元素的排序结果后,即将该元素加入该数据集合对应的先入先出数据结构中,该过程为持续进行的;根据排序结果将元素陆续加入对应的先入先出数据结构之后,实时在由先入先出数据结构中当前所有元素构成的元素集合中选取极值元素,称为当前局部极值元素,并将每次选取的极值元素陆续输出为排序结果。通过该排序过程可以实现数据集合的排序过程与排序结果的输出过程同步进行,即排序结果不需要等待数据集合的所有元素都进行排序后才能输出,使得用户可以快速地获得排序结果,减少用户的等待时间。
具体地,每个数据集合均设置了对应的先入先出数据结构,具体可以是先入先出缓存队列。由于先入先出数据结构的特性,即需要根据存入先入先出数据结构的顺序来取出元素,先进的先出,从而使得每次从先入先出数据结构中去除的当前元素为未取出的元素中的极值元素。
以查找数据集合中的最大的元素为例,首先从剩余的元素中找到次大的元素,依此循环直至查找完数据集合中的所有元素,该排序方法中比较典型的为冒泡排序法。
具体地,通过对数据集合中的元素进行排序和更新,实现陆续生成流式排序结果的目的。例如,通过冒泡排序法在数据集合当前包含的各元素中第一次找到最大的元素,此时,即可视为得到了该元素的排序结果,在该元素没有被从该数据集合中移除前,该元素称为当前局部极值元素,及该当前数据集合中元素中的最大值。在获得当前局部极值元素后,即将该元素加入先入先出数据结构中。
具体地,将数据集合中已经加入先入先出数据结构的元素移除,然后再对数据集合中剩余的元素进行排序,例如通过冒泡排序法对数据集合中剩余的元素进行排序得到剩余元素中的最大值,将该最大值作为当前局部极值元素加入先入先出数据结构中,并将该当前局部极值元素从该数据集合中移除,依此类推,直至数据集合中的所有元素均进行排序并加入该数据集合对应的先入先出数据结构中。之所以需要将当前局部极值元素从数据集合中移除以更新该数据集合,是为了排序的范围以数据集合中的元素为准,每次所查找到的当前局部极值元素不会重复。
以下通过两个具体实施例对数据查询结果的渐进式输出的过程进行具体说明。
第一具体实施例,分布式大数据查询系统的结构和任务执行过程示意图如图6所示,进行数据查询的具体过程如下:
步骤S1,请求处理节点对用户提交的SQL语句进行分析,生成第一树状结构的执行计划并对第一树状结构的执行计划进行化简。
步骤S2,请求处理节点对第一树状结构的执行计划进行渐进式处理改造和优化,得到第二树状结构的执行计划。
具体地,请求处理节点将SQL语句包含的连接、并集、交集、差集等操作渐进式化,如果有聚合操作,将聚合操作移至第二树状结构的执行计划的根节点,使得聚合操作可根据子节点的渐进式输出结果进行实时聚合操作运算。
其中,请求处理节点将SQL语句包含的连接、并集、交集、差集等操作渐进式化,具体为:请求处理节点基于渐进式排序方法,对SQL语句包含的各操作相关的数据集合进行排序,使得针对数据集合的整体操作能够实现渐进化处理。
步骤S3,请求处理节点根据第二树状结构的执行计划,控制各操作处理节点执行数据处理,启动并行化的数据处理过程。
具体地,启动第二树状结构的执行计划中各叶节点的并行化数据操作,一旦某个树节点的子节点均产生处理结果,操作处理节点启动该树节点的操作,若该树节点对应的操作为聚合操作,则该操作处理节点基于当前获得的数据集合进行聚合操作,并将操作结果返回给请求处理节点。
步骤S4,请求处理节点渐进式汇总第二树状结构的执行计划的根节点上报的执行结果。
具体地,请求处理节点将渐进式汇总的执行结果显示给用户,或者,提供给其他系统基于该执行结果进行进一步处理。
第二具体实施例,假设分布式大数据查询系统获得的一种SQL语句表述为:
“SELECT t1.c2,t2.c2LIMIT 100
FROM t1JOIN t2ON(t1.cs1=t2.cs1)
WHERE t1.c2>m AND t2.c2>m
ORDER BY t1.c2”
对该SQL语句的详细执行过程如下:
步骤S1,对该SQL语句进行解析,生成第一树状结构的执行计划;
步骤S2,对第一树状结构的执行计划进行渐进式输出的改造和优化,得到第二树状结构的执行计划,第二树状结构的执行计划的结构如图7所示;
步骤S3,分别对表t1和表t2进行渐进式排序操作;
步骤S4,基于步骤S3中对表t1和表t2渐进式排序后的结果进行并行操作,即选择表t1中的c2列,判断表t1中的c2列是否满足约束条件,并判定满足约束条件后输出表t1中c2列和cs1列;同时,选择表t2中的c2列,判断表t2中的c2列是否满足约束条件,并判定满足约束条件后输出表t2中c2列和cs1列;
步骤S5,根据步骤S4中渐进式输出的结果,对基于表t1输出的cs1和基于表t2输出的cs1进行连接操作;
步骤S6,渐进式输出连接操作后得到的前100个数据(对应limit 100),表示为TOP100。
基于同一发明构思,本发明实施例中提供了一种数据查询结果的渐进式输出装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图8所示,该装置主要包括:
获取模块801,用于获取结构化查询语言SQL语句;
生成模块802,用于对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作;
处理模块803,用于按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果。
可能的实施方式中,所述处理模块具体用于:
按照所述树状结构的执行计划启动从每个叶节点到根节点的并行化处理;
其中,所述并行化处理过程中,对于任意一个叶节点,将所述叶节点对部分数据执行操作产生的数据,经从所述叶节点至所述根节点的每级节点分别进行操作后,得到所述部分数据的执行结果,并输出所述部分数据的执行结果。
可能的实施方式中,所述生成模块具体用于:
在所述SQL语句包含的每个操作所在的所述树状结构的执行计划的树节点上增加排序操作子节点,所述排序操作子节点用于根据父节点对应的所述操作的属性,对所述父节点对应的所述操作所需的集合中包含的元素进行排序。
可能的实施方式中,所述生成模块具体用于:
将所述SQL语句包含的各操作中需要基于原始数据集进行的单集合操作,作为所述树状结构的执行计划的叶节点;
将所述SQL语句包含的各操作中需要基于子节点输出的结果进行的双集合或单集合操作,作为所述树状结构的执行计划中所述子节点的父节点。
可能的实施方式中,所述生成模块具体用于:
若所述SQL语句中包含聚合操作,将所述聚合操作置于所述树状结构的执行计划的根节点。
可能的实施方式中,所述处理模块具体用于:
若所述SQL语句中包含聚合操作,基于所述部分数据进行聚合操作得到执行结果并输出所述执行结果,直至确定所述聚合操作得到的执行结果不发生变化时,输出所述聚合操作的最终结果。
基于同一发明构思,本发明实施例中提供了一种数据查询结果的渐进式输出装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图9所示,该装置主要包括处理器901和存储器902,其中,存储器902中保存有预设的程序,处理器901读取存储器902中的程序,按照该程序执行以下过程:
获取结构化查询语言SQL语句;
对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作;
按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果。
可能的实施方式中,所述处理器具体用于:
按照所述树状结构的执行计划启动从每个叶节点到根节点的并行化处理;
其中,所述并行化处理过程中,对于任意一个叶节点,将所述叶节点对部分数据执行操作产生的数据,经从所述叶节点至所述根节点的每级节点分别进行操作后,得到所述部分数据的执行结果,并输出所述部分数据的执行结果。
可能的实施方式中,所述处理器具体用于:
在所述SQL语句包含的每个操作所在的所述树状结构的执行计划的树节点上增加排序操作子节点,所述排序操作子节点用于根据父节点对应的所述操作的属性,对所述父节点对应的所述操作所需的集合中包含的元素进行排序。
可能的实施方式中,所述处理器具体用于:
将所述SQL语句包含的各操作中需要基于原始数据集进行的单集合操作,作为所述树状结构的执行计划的叶节点;
将所述SQL语句包含的各操作中需要基于子节点输出的结果进行的双集合或单集合操作,作为所述树状结构的执行计划中所述子节点的父节点。
可能的实施方式中,所述处理器具体用于:
若所述SQL语句中包含聚合操作,将所述聚合操作置于所述树状结构的执行计划的根节点。
可能的实施方式中,所述处理器具体用于:
若所述SQL语句中包含聚合操作,基于所述部分数据进行聚合操作得到执行结果并输出所述执行结果,直至确定所述聚合操作得到的执行结果不发生变化时,输出所述聚合操作的最终结果。
实施中,处理器和存储器之间通过总线连接,总线架构可以包括任意数量的互联的总线和桥,具体由处理器代表的一个或多个处理器和存储器代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器负责管理总线架构和通常的处理,存储器可以存储处理器在执行操作时所使用的数据。
基于同一发明构思,本发明实施例中提供了一种数据查询结果的渐进式输出系统,如图10所示,该系统主要包括请求处理节点1001和至少一个操作处理节点1002,请求处理节点1001的具体实施可参见上述方法实施例以及装置实施例部分的描述,具体地:
请求处理节点1001,用于获取结构化查询语言SQL语句,对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作,按照所述树状结构的执行计划依次指示每个操作处理节点渐进式执行所述SQL语句包含的操作并返回操作结果至上一级节点,并渐进式输出按照所述树状结构的执行计划得到的执行结果;
至少一个操作处理节点1002,用于根据所述请求处理节点的指示渐进式执行所述SQL语句包含的操作并返回操作结果给上一级节点。
具体实施中,将系统中各节点按照角色分为请求处理节点和操作处理节点。其中,操作处理节点负责保存、处理部分数据集。请求处理节点按照查询的一般处理规则,将集合处理任务构造成树状执行计划,请求处理节点从树叶向树根并行执行集合操作,使得树节点上的操作在该树节点的相关子节点的输出产生后即被执行,不需要等待该树节点的相关子节点的所有结果生成。
具体地,操作处理节点将集合整体操作转换为渐进式操作,使得处理结果能够渐进式输出。操作处理节点将渐进式输出的结果持续向请求处理节点提交,请求处理节点持续将收集到的结果返回给用户。
一个具体实施中,请求处理节点将排序操作加入树状结构的执行计划,使得排序操作作为连接、并集、交集、差集等操作的新子节点,而连接、并集、交集、差集等操作的原子节点作为该排序操作的子节点。例如,若排序操作的父节点为连接操作,则排序操作按照连接操作的数据元素属性进行排序;若排序操作的父节点为并集、交集、差集,则排序操作按照数据元素主键进行排序。
其中,排序操作按照渐进式排序方法对集合中的数据元素进行排序。
具体地,聚合操作所在的操作处理节点紧邻请求处理节点,聚合操作所在的操作处理节点定时将聚合操作结果提交给请求处理节点。请求处理节点汇总当前获得的处理结果并返回给用户,持续该过程,直至聚合操作的结果不再发生变化。
具体地,请求处理节点和各操作处理节点共同执行数据查询任务,并且可以被重复使用执行多个数据查询任务。
其中,请求处理节点以及每个操作处理节点分别存储一个分布式查询任务的部分数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (13)

1.一种数据查询结果的渐进式输出方法,其特征在于,包括:
获取结构化查询语言SQL语句;
对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作;
按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果。
2.如权利要求1所述的方法,其特征在于,按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果,包括:
按照所述树状结构的执行计划启动从每个叶节点到根节点的并行化处理;
其中,所述并行化处理过程中,对于任意一个叶节点,将所述叶节点对部分数据执行操作产生的数据,经从所述叶节点至所述根节点的每级节点分别进行操作后,得到所述部分数据的执行结果,并输出所述部分数据的执行结果。
3.如权利要求1或2所述的方法,其特征在于,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,包括:
在所述SQL语句包含的每个操作所在的所述树状结构的执行计划的树节点上增加排序操作子节点,所述排序操作子节点用于根据父节点对应的所述操作的属性,对所述父节点对应的所述操作所需的集合中包含的元素进行排序。
4.如权利要求2所述的方法,其特征在于,对所述SQL语句包含的各操作进行渐进式调整,包括:
将所述SQL语句包含的各操作中需要基于原始数据集进行的单集合操作,作为所述树状结构的执行计划的叶节点;
将所述SQL语句包含的各操作中需要基于子节点输出的结果进行的双集合或单集合操作,作为所述树状结构的执行计划中所述子节点的父节点。
5.如权利要求3所述的方法,其特征在于,对所述SQL语句包含的各操作进行渐进式调整,包括:
若所述SQL语句中包含聚合操作,将所述聚合操作置于所述树状结构的执行计划的根节点。
6.如权利要求5所述的方法,其特征在于,渐进式输出按照所述树状结构的执行计划得到的执行结果,包括:
若所述SQL语句中包含聚合操作,基于所述部分数据进行聚合操作得到执行结果并输出所述执行结果,直至确定所述聚合操作得到的执行结果不发生变化时,输出所述聚合操作的最终结果。
7.一种数据查询结果的渐进式输出装置,其特征在于,包括:
获取模块,用于获取结构化查询语言SQL语句;
生成模块,用于对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作;
处理模块,用于按照所述树状结构的执行计划渐进式执行所述SQL语句包含的操作,并渐进式输出按照所述树状结构的执行计划得到的执行结果。
8.如权利要求7所述的装置,其特征在于,所述处理模块具体用于:
按照所述树状结构的执行计划启动从每个叶节点到根节点的并行化处理;
其中,所述并行化处理过程中,对于任意一个叶节点,将所述叶节点对部分数据执行操作产生的数据,经从所述叶节点至所述根节点的每级节点分别进行操作后,得到所述部分数据的执行结果,并输出所述部分数据的执行结果。
9.如权利要求7或8所述的装置,其特征在于,所述生成模块具体用于:
在所述SQL语句包含的每个操作所在的所述树状结构的执行计划的树节点上增加排序操作子节点,所述排序操作子节点用于根据父节点对应的所述操作的属性,对所述父节点对应的所述操作所需的集合中包含的元素进行排序。
10.如权利要求8所述的装置,其特征在于,所述生成模块具体用于:
将所述SQL语句包含的各操作中需要基于原始数据集进行的单集合操作,作为所述树状结构的执行计划的叶节点;
将所述SQL语句包含的各操作中需要基于子节点输出的结果进行的双集合或单集合操作,作为所述树状结构的执行计划中所述子节点的父节点。
11.如权利要求9所述的装置,其特征在于,所述生成模块具体用于:
若所述SQL语句中包含聚合操作,将所述聚合操作置于所述树状结构的执行计划的根节点。
12.如权利要求11所述的装置,其特征在于,所述处理模块具体用于:
若所述SQL语句中包含聚合操作,基于所述部分数据进行聚合操作得到执行结果并输出所述执行结果,直至确定所述聚合操作得到的执行结果不发生变化时,输出所述聚合操作的最终结果。
13.一种数据查询结果的渐进式输出系统,其特征在于,包括:
处理节点,用于获取结构化查询语言SQL语句,对所述SQL语句进行分析确定所述SQL语句包含的各操作,并对所述SQL语句包含的各操作进行渐进式调整,根据渐进式调整的结果生成用于表征所述SQL语句的渐进式执行过程的树状结构的执行计划,其中,所述树状结构的执行计划的每个节点对应所述SQL语句的至少一个操作,按照所述树状结构的执行计划依次指示每个操作节点渐进式执行所述SQL语句包含的操作并返回操作结果至上一级节点,并渐进式输出按照所述树状结构的执行计划得到的执行结果;
至少一个操作节点,用于根据所述处理节点的指示渐进式执行所述SQL语句包含的操作并返回操作结果给上一级节点。
CN201610798093.6A 2016-08-31 2016-08-31 一种数据查询结果的渐进式输出方法、装置及系统 Active CN107784032B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610798093.6A CN107784032B (zh) 2016-08-31 2016-08-31 一种数据查询结果的渐进式输出方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610798093.6A CN107784032B (zh) 2016-08-31 2016-08-31 一种数据查询结果的渐进式输出方法、装置及系统

Publications (2)

Publication Number Publication Date
CN107784032A true CN107784032A (zh) 2018-03-09
CN107784032B CN107784032B (zh) 2020-06-16

Family

ID=61451691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610798093.6A Active CN107784032B (zh) 2016-08-31 2016-08-31 一种数据查询结果的渐进式输出方法、装置及系统

Country Status (1)

Country Link
CN (1) CN107784032B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019184577A1 (zh) * 2018-03-29 2019-10-03 中国银联股份有限公司 一种事务处理方法、服务器及事务处理系统
CN110874364A (zh) * 2019-11-19 2020-03-10 北京启迪区块链科技发展有限公司 一种查询语句处理方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6622138B1 (en) * 2000-09-06 2003-09-16 Oracle International Corporation Method and apparatus for optimizing computation of OLAP ranking functions
CN1492361A (zh) * 2002-10-25 2004-04-28 联想(北京)有限公司 嵌入式数据库查询的处理方法
CN102521406A (zh) * 2011-12-26 2012-06-27 中国科学院计算技术研究所 海量结构化数据复杂查询任务的分布式查询方法和系统
CN102609493A (zh) * 2012-01-20 2012-07-25 东华大学 一种基于列存储模型的连接顺序查询优化方法
CN102737134A (zh) * 2012-06-29 2012-10-17 电子科技大学 适用于大规模实时数据流的查询处理方法
CN103310011A (zh) * 2013-07-02 2013-09-18 曙光信息产业(北京)有限公司 集群数据库系统环境下的数据查询解析方法
CN104346380A (zh) * 2013-07-31 2015-02-11 华为技术有限公司 基于MapReduce模型的数据排序方法和系统
CN104572979A (zh) * 2014-12-31 2015-04-29 北京锐安科技有限公司 一种处理结构化查询语言sql的方法及装置
EP2927861A1 (en) * 2014-03-31 2015-10-07 Sap Se In-memory database system for the management of variant configuration of a product

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6622138B1 (en) * 2000-09-06 2003-09-16 Oracle International Corporation Method and apparatus for optimizing computation of OLAP ranking functions
CN1492361A (zh) * 2002-10-25 2004-04-28 联想(北京)有限公司 嵌入式数据库查询的处理方法
CN102521406A (zh) * 2011-12-26 2012-06-27 中国科学院计算技术研究所 海量结构化数据复杂查询任务的分布式查询方法和系统
CN102609493A (zh) * 2012-01-20 2012-07-25 东华大学 一种基于列存储模型的连接顺序查询优化方法
CN102737134A (zh) * 2012-06-29 2012-10-17 电子科技大学 适用于大规模实时数据流的查询处理方法
CN103310011A (zh) * 2013-07-02 2013-09-18 曙光信息产业(北京)有限公司 集群数据库系统环境下的数据查询解析方法
CN104346380A (zh) * 2013-07-31 2015-02-11 华为技术有限公司 基于MapReduce模型的数据排序方法和系统
EP2927861A1 (en) * 2014-03-31 2015-10-07 Sap Se In-memory database system for the management of variant configuration of a product
CN104572979A (zh) * 2014-12-31 2015-04-29 北京锐安科技有限公司 一种处理结构化查询语言sql的方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019184577A1 (zh) * 2018-03-29 2019-10-03 中国银联股份有限公司 一种事务处理方法、服务器及事务处理系统
JP2021517322A (ja) * 2018-03-29 2021-07-15 中国▲銀▼▲聯▼股▲ふん▼有限公司 トランザクション処理の方法およびサーバー、ならびにトランザクション処理のシステム
JP7109572B2 (ja) 2018-03-29 2022-07-29 中国▲銀▼▲聯▼股▲ふん▼有限公司 トランザクション処理の方法およびサーバー、ならびにトランザクション処理のシステム
US11544260B2 (en) 2018-03-29 2023-01-03 China Unionpay Co., Ltd. Transaction processing method and system, and server
CN110874364A (zh) * 2019-11-19 2020-03-10 北京启迪区块链科技发展有限公司 一种查询语句处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN107784032B (zh) 2020-06-16

Similar Documents

Publication Publication Date Title
CN107239335B (zh) 分布式系统的作业调度系统及方法
CN105824957B (zh) 分布式内存列式数据库的查询引擎系统及查询方法
US8224845B2 (en) Transaction prediction modeling method
CN105550318B (zh) 一种基于Spark大数据处理平台的查询方法
US20030061244A1 (en) System and method for database query optimization
WO2017019879A1 (en) Multi-query optimization
CN105956666B (zh) 一种机器学习方法及系统
CN110110108B (zh) 一种图数据库的数据导入方法及装置
CN114756629B (zh) 基于sql的多源异构数据交互分析引擎及方法
CN110740079A (zh) 一种面向分布式调度系统的全链路基准测试系统
CN107209768A (zh) 用于数据集的可扩展排序的方法和设备
CN107818181A (zh) 基于Plcient交互式引擎的索引方法及其系统
CN107784032A (zh) 一种数据查询结果的渐进式输出方法、装置及系统
JP5678691B2 (ja) 検索制御装置、検索制御プログラムおよび検索制御方法
CN116756150B (zh) 一种Mpp数据库大表关联加速方法
KR20180077830A (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
JP2015106219A (ja) 分散型データ仮想化システム、クエリ処理方法及びクエリ処理プログラム
EP4057142A1 (en) Job scheduling method and job scheduling apparatus
CN110297858A (zh) 执行计划的优化方法、装置、计算机设备和存储介质
KR101515304B1 (ko) 하둡 기반의 리듀스-사이드 조인 처리 시스템의 리듀스-사이드 조인 질의 처리 방법
CN106528849B (zh) 面向完整历史记录的图查询开销方法
CN109857832A (zh) 一种支付数据的预处理方法和装置
CN109885732A (zh) 一种基于数据分布模型的分布式排序系统
Chen et al. Paralite: Supporting collective queries in database system to parallelize user-defined executable
CN109388596A (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
GR01 Patent grant