CN106708838A - 用于流数据查询的方法和装置 - Google Patents

用于流数据查询的方法和装置 Download PDF

Info

Publication number
CN106708838A
CN106708838A CN201510770326.7A CN201510770326A CN106708838A CN 106708838 A CN106708838 A CN 106708838A CN 201510770326 A CN201510770326 A CN 201510770326A CN 106708838 A CN106708838 A CN 106708838A
Authority
CN
China
Prior art keywords
inquiry
plan
inquiry plan
intersection
query
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
CN201510770326.7A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510770326.7A priority Critical patent/CN106708838A/zh
Publication of CN106708838A publication Critical patent/CN106708838A/zh
Pending legal-status Critical Current

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/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/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries

Landscapes

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

Abstract

本发明实施例提供了一种用于流数据查询的方法和装置,该方法包括:根据至少两个查询计划获取该至少两个查询计划之间的重合部分;该至少两个查询计划中包括第一查询计划和第二查询计划,该重合部分包括:该第一查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分,或该第一查询计划的等价查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分;根据该重合部分对该至少两个查询计划进行优化,获取优化后的查询计划;根据该优化后的查询计划进行流数据查询。本发明实施例中,查询器根据该多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。

Description

用于流数据查询的方法和装置
技术领域
本发明涉及数据库领域,更具体地,涉及一种用于流数据查询的方法和装置。
背景技术
随着大数据时代的到来,数据管理的重要性日益凸显,各种基于数据库的事务处理已经受到广泛关注。在数据库中,一个典型的流处理系统包括一到多个的流数据源,一到多个的流处理组件,流处理组件可以接受数据源或者其它流处理组件的输出数据。
对于数据库的各种操作,查询操作所占的比重最大。在现有技术中,数据库的查询大多是静态查询,即对多个查询进行一阶段或二阶段的分析,通过生成一个多查询计划,完成对数据库的多查询。
但是,现有技术在流数据的查询过程中会存在重复计算或者重复传输数据等问题,从而增加了系统资源的开销,造成浪费资源。
发明内容
本发明实施例提供了一种用于流数据查询的方法和装置,能够避免重复的数据处理。
第一方面,提供了一种用于流数据查询的方法,包括:根据至少两个查询计划获取该至少两个查询计划之间的重合部分;该至少两个查询计划中包括第一查询计划和第二查询计划,该重合部分包括:该第一查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分,或该第一查询计划的等价查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分;根据该重合部分对该至少两个查询计划进行优化,获取优化后的查询计划;根据该优化后的查询计划进行流数据查询。
基于本发明实施例的用于流数据查询的方法,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。
结合第一方面,在第一种可能的实现方式中,该第一查询计划和该第二查询计划均为正在执行的查询计划;或,该第一查询计划和该第二查询计划均为待执行的查询计划;或,该第一查询计划为正在执行的查询计划,该第二查询计划为待执行的查询计划。
多个查询计划包括正在执行的查询计划和待执行的查询计划,对于第一查询计划和第二查询计划的组合形式可以有上述三种情况,其中,待执行的查询计划即为新的查询计划,即查询器接收的新的查询请求。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在该根据该重合部分对该至少两个查询计划进行优化之前,该方法还包括:
根据该至少两个查询计划的数据动态特征,确定该至少两个查询计划的执行代价和第一执行代价,该第一执行代价表示对该至少两个查询计划进行预优化得到的查询计划的执行代价;
其中,该根据该重合部分对该至少两个查询计划进行优化,包括:
在该第一执行代价小于该至少两个查询计划的执行代价的情况下,根据该重合部分对该至少两个查询计划进行优化。
当预优化方案为多个时,第一执行代价即为多个预优化方案中执行代价最小的预优化方案对应的执行代价。
结合第一方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,当该第一查询计划和该第二查询计划均为待执行的查询计划;或,该第一查询计划为正在执行的查询计划,该第二查询计划为待执行的查询计划,则在该根据至少两个查询计划获取该至少两个查询计划之间的重合部分之前,该方法还包括:接收新的查询任务,根据该新的查询任务生成该待执行的查询计划。
结合第一方面的第一种可能的实现方式或第二种可能的实现方式,在第四种可能的实现方式中,当该第一查询计划和该第二查询计划均为正在执行的查询计划,则该根据至少两个查询计划获取该至少两个查询计划之间的重合部分包括:在预设时刻根据至少两个查询计划获取该至少两个查询计划之间的重合部分。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第五种可能的实现方式中,该基于该重合部分对该至少两个查询计划进行优化,包括:根据该重合部分,对该至少两个查询计划进行动态关联。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第六种可能的实现方式中,该对该至少两个查询计划进行动态关联,包括:根据该重合部分,对该至少两个查询计划进行算子变换和/或算子重组后再进行动态关联。
第二方面,提供了一种用于流数据查询的装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的单元。
第三方面,提供了一种用于流数据查询的装置,该装置包括:接收器、发送器、存储器、处理器和总线系统。其中,该接收器、该发送器、该存储器和该处理器通过该总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制接收器接收信号,并控制发送器发送信号,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的用于流数据查询的方法的示意性流程图。
图2是根据本发明实施例的用于流数据查询的方法的另一示意性流程图。
图3是两个查询计划的举例的示意图。
图4A是两个查询计划的场景1的示意图。
图4B是两个查询计划的场景2的示意图。
图4C是两个查询计划的场景3的示意图。
图5是根据本发明实施例的具体流程的流程图。
图6是根据本发明实施例的装置的示意性框图。
图7是根据本发明实施例的装置的另一示意性框图。
图8是根据本发明实施例的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的技术方案,可以应用于流处理场景中。下面先对流处理场景中的相关术语进行描述。
流处理系统:对流式数据进行处理和数据挖掘的系统。
流式数据:将数据看作是数据流的形式来处理,也可以称为流数据。
数据流:在时间分布和数量上无限的一系列数据记录的集合体。
数据记录:数据流的最小组成单元。
在流处理场景中,对流数据的查询可以不断地进行,即针对流数据查询的查询计划可以不断地执行。
图1示出了根据本发明实施例的用于流数据查询的方法100的流程图。如图1所示,该方法100包括:
S110,根据至少两个查询计划获取该至少两个查询计划之间的重合部分;该至少两个查询计划中包括第一查询计划和第二查询计划,该重合部分包括:该第一查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分,或该第一查询计划的等价查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分;
S120,根据该重合部分对该至少两个查询计划进行优化,获取优化后的查询计划;
S130,根据该优化后的查询计划进行流数据查询。
该方法100可以由用于流数据查询的装置执行。该装置可以为流处理系统中的装置,例如,查询器,查询服务器或查询优化器等;该方法100也可以由流处理系统执行。为了便于描述,以下以查询器为例进行说明。
具体而言,查询器可以获取到多个查询计划,根据该多个查询计划获取该多个查询计划之间的重合部分,该多个查询计划包括第一查询计划和第二查询计划,该多个查询计划可以包括正在执行的查询计划和待执行的查询计划,例如,该第一查询计划和第二查询计划为正在执行的查询计划和待执行的查询计划;或者,第一查询计划和第二查询计划均为正在执行的查询计划;或者,第一查询计划和第二查询计划均为待执行的查询计划。其中,该多个查询计划之间的重合部分可以是该第一查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分,或该第一查询计划的等价查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分。然后,查询器根据重合部分对该多个查询计划进行优化,获取优化后的查询计划,继而根据优化后的查询计划进行流数据查询。
本发明实施例的用于流数据查询的方法,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。
在本发明实施例中,该第一查询计划和该第一查询计划的等价查询计划之间存在等价关系,即对于同一输入会产生相同的输出,只是所采用的算子或者算子的次序有所不同,换言之,即两个查询计划的实现功能相同而实现形式不尽相同,同样地,该第二查询计划和该第二查询计划的等价查询计划的等价关系亦然。
在本发明实施例中,一个查询计划对应一个查询任务。查询计划的表现形式包括逻辑查询计划和物理查询计划。逻辑查询计划可以由支持流处理语言的完备性算子组成,物理查询计划可以由计算机程序或者代码语句组成,每一个物理查询计划都有对应的一个逻辑查询计划。逻辑查询计划和物理查询计划为查询计划在不同阶段的表现形式。因此,对查询计划的处理在不同阶段为对相应阶段的表现形式的处理。例如,对查询计划的优化可以为对相应的物理查询计划的优化。
在S110中,该重合部分可以是第一查询计划与第二查询计划的,也可以是第一查询计划的等价查询计划与第二查询计划的,也可以是第一查询计划与第二查询计划的等价查询计划的,也可以是第一查询计划的等价查询计划与第二查询计划的等价查询计划的,本发明对此不作限制。
对重合部分的确定可以基于预定规则,本发明对此不作限制。
可选地,在本发明实施例中,第一查询计划和第二查询计划可以包括三种情况:该第一查询计划和该第二查询计划都是正在执行的查询计划,或者该第一查询计划和该第二查询计划都是待执行的查询计划,或者该第一查询计划是正在执行的查询计划,该第二查询计划是待执行的查询计划,这里的待执行的查询计划可以理解为新的查询计划,该新的查询计划可以是查询器根据接收到的查询请求解析得到的查询计划。
应理解,在本发明实施例中,编号“第一”、“第二”仅仅为了区分不同的对象,比如为了区分不同的查询计划,并不对本发明实施例的范围构成限制。
在本发明实施例中,如果查询计划中有重合部分,可以直接根据重合部分进行优化,如果初始查询计划中没有重合部分,可以再根据查询计划的等价查询计划进行判断。
可选地,在本发明一个实施例中,如图2所示,在S120之前,该方法100还可以包括:
S140,根据该至少两个查询计划的数据动态特征,确定该至少两个查询计划的执行代价和第一执行代价,该第一执行代价表示如果对所述至少两个查询计划优化得到的查询计划的执行代价;
其中,S120可以包括:
在该第一执行代价小于该至少两个查询计划的执行代价的情况下,根据该重合部分对该至少两个查询计划进行优化。
具体而言,在对该至少两个查询计划进行优化之前,查询器可以根据该多个查询计划的数据动态特征确定该多个查询计划的执行代价和第一执行代价。这里的数据动态特征即:当查询计划为待执行的查询计划,则对应的数据动态特征为初始化的数据动态特征;当查询计划为正在执行的查询计划,则对应的数据动态特征为该正在执行的查询计划已经产生的数据动态特征。查询器根据数据动态特征确定的第一执行代价表示对该多个查询计划进行预优化得到的查询计划的执行代价。这里的第一执行代价即最优的执行代价,即当预优化的方案有多个时,该第一执行代价即为该多个预优化方案中执行代价最小的预优化方案对应的执行代价。在该第一执行代价小于该至少两个查询计划的执行代价的情况下,即对该多个查询计划进行预优化能够减少执行代价的情况下,再根据重合部分对该至少两个查询计划进行优化。换言之,查询器可以根据查询计划的数据动态特征,结合代价模型计算查询计划的执行代价,从而判断优化能否减少执行代价。这样,可以只在能够减少执行代价的情况下,再进行优化。也就是说,在这个优化过程中,最终执行的查询计划的执行代价小于优化前的查询计划的执行代价。
在本发明实施例中,查询器可以根据该多个查询计划的数据动态特征计算查询计划的执行代价,然后确定对该多个查询计划进行预优化能够减少执行代价。在多个查询计划中,例如,对于查询计划A和查询计划B,查询器可以根据查询计划A的数据特征和查询计划B的数据特征代入代价模型分别计算出查询计划A的执行代价和查询计划B的执行代价,根据查询计划A和查询计划B的重合部分进行动态关联后可以得到的预优化的查询计划AB,查询器可以计算出预优化的查询计划AB的执行代价,然后判断出预优化的查询计划AB的执行代价小于查询计划A和查询计划B的执行代价,从而确定对该多个查询计划进行预优化减少了执行代价,因此对该多个查询计划进行优化。
应理解,在本发明实施中,仅以代价模型为例进行说明,也可以采用别的合理的方式判断查询计划的执行代价,比如查询时间,或查询速度,或查询所占用的资源,或者基于图的流量来分析或判断,本发明对此不作限制。
因此,本发明实施例的用于流数据查询的方法,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,进一步地,根据该多个查询计划的数据动态特征确定该多个查询计划进行优化能够减少执行代价,进一步提高了优化效果,能够避免重复的数据处理,从而节省了系统资源的开销。
在本发明实施例中,查询计划可以包括正在执行的查询计划和新的查询计划即待执行的查询计划;或者,可以包括多个正在执行的查询计划。下面分别对这两种情况进行描述。
可选地,在本发明一个实施例中,对于查询计划中包括待执行的查询计划的情况包括:当第一查询计划和第二查询计划均为待执行的查询计划;或该第一查询计划为正在执行的查询计划,该第二查询计划为待执行的查询计划,该方法还可以包括:接收新的查询任务,根据该新的查询任务生成该待执行的查询计划。
具体而言,该多个查询计划中可以包括待执行的查询计划,即新的查询计划。查询器可以接收新的查询请求,即新的查询任务,根据接收到的新的查询任务可以生成对应的新的查询计划,也就是待执行的查询计划,然后获取该待执行的查询计划与正在执行的查询计划的重合部分,或者获取该待执行的查询计划与待执行的查询计划的重合部分,从而根据该重合部分进行优化。可选地,也可以根据多个查询计划的数据动态特征,即新的查询计划对应的初始化数据特征和正在执行的查询计划对应的已经产生的数据动态特征,确定该多个查询计划的执行代价和第一执行代价,该第一执行代价在前面已作描述,在此不作赘述,同样地,在该第一执行代价消息该多个查询计划的执行代价的情况下,根据重合部分进行优化,确定出对该待执行的查询计划和正在执行的查询计划进行优化能够减少执行代价的查询计划,从而根据能够减少执行代价的查询计划进行优化,达到节省资源开销的目的。
在本发明实施例中,根据新的查询任务生成新的查询计划,具体可以采用如下方式:对查询任务的流语言进行解析,生成抽象树,将该抽象树的分支进行解析,得到流处理系统任务的数据结构,将该任务的数据结构转换为逻辑执行计划,该逻辑执行计划可以由支持流处理语言的完备性算子组成。
这里,查询任务的流语言可以采用结构化查询语言SQL(StructuredQuery Language,简称为“SQL”)语句,流处理语言的完备性算子可以包括:SourceOperator、FilterOperator、JoinOperator、AggregateOperator、SortOperator、SelectOperator、SinkOperator、算数运算算子、逻辑运算算子等。这些完备性算子在流处理系统中对应的功能或者操作形式如下所示:
SourceOperator:从文件系统、数据库或网络等数据源中读取数据,生成数组Tuple,写入数据流stream中。
FilterOperator:从一个数据流stream中依次读取数组tuple,过滤后写入另一个数据流stream中。
JoinOperator:从两个不同的数据流stream(该流为WindowOperator或其他需要针对窗口进行处理的算子Operator的输出流)中读取一个window的数据,然后对两个窗口window中的数组tuple数据执行连接操作,最后将生成的数据以窗口window的格式写入数据流stream中。针对窗口进行数据处理。
AggregateOperator:从数据流stream中读取窗口window,然后对窗口window中的数组tuple数据进行分组,并对分组后数据执行相应的聚合操作,调整数组tuple格式,最后将调整后的数组tuple以窗口window形式写入流数据stream中。针对窗口进行处理。
SortOperator:从数据流stream中读取窗口window,然后对窗口window中的数组tuple数据按一定的排序标准进行排序,最后依次将排好序的数组tuple以window形式写入数据流stream中。针对窗口进行处理。
SelectOperator:从数据流stream中读取数组tuple,对数组tuple的格式进行调整(增加和/或删除一些无需输出的列),最后将调整后的数组tuple写入数据流stream中。
SinkOperator:从数据流stream中读取数组tuple,进行格式转换,写入文件系统、数据库或网络中。
算数运算算子包括:加(+)、减(-)、乘(*)、除(/)、取余(%)。
逻辑运算算子包括:按位与(&)、按位或(|)、按位取反(~)、按位异或(^)。
因此,本发明实施例的用于流数据查询的方法,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。
可选地,在本发明一个实施例中,对于查询计划中包括正在执行的查询计划的情况:即当第一查询计划和第二查询计划均为正在执行的查询计划,则在预设时刻根据至少两个查询计划获取该至少两个查询计划之间的重合部分。
具体而言,对于该多个查询计划包括至少两个正在执行的查询计划时,查询器可以根据两个正在执行的查询计划的重合部分,对该至少两个正在执行的查询计划进行优化。可选地,可以在预设时刻或者定时地对正在执行的查询计划进行优化。可选地,还可以先根据正在执行的查询计划已经产生的数据动态特征,确定该多个查询计划的执行代价和第一执行代价,该第一执行代价已在前面描述,在此不作赘述,在该第一执行代价小于该多个查询计划的执行代价的情况下,即确定对该多个正在执行的查询计划进行优化能够减少执行代价的情况下,再进行优化。
应理解,本发明实施例中的定时时间可以按照定时器设置,也可以是按照一定的周期进行,本发明对此不作限制。
因此,本发明实施例的用于流数据查询的方法,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。
可选地,在本发明一个实施例中,根据该重合部分,对该至少两个查询计划进行动态关联。
也就是说,对于多个查询计划,可以根据查询计划的重合部分进行动态关联,如果需要优化,则定位需要优化的执行算子。
可选地,查询器也可以对该至少两个查询计划可以先进行算子变换和/或算子重组后再进行动态关联。
下面对两个查询计划进行优化的例子的三个不同场景进行说明。图3示出了两个查询计划的例子的示意图。如图3所示,该例包括查询计划1和查询计划2,查询计划1的查询路径由输入、过滤器1、算子1、过滤器3和输出组成,查询计划2的查询路径由输入、过滤器2、算子2和输出,其中,该查询计划1的输入和该查询计划2的输入源是相同的。
图4A示出了第一个场景,该第一个场景是结合图3示出的两个查询计划的例子中算子存在相同的场景。如图4A所示,如果该两个查询计划具有相同的输入,并且过滤器1和过滤器2相同,那么只需要增加过滤器到算子2的路由,然后得到算子2及之后的查询计划。
图4B示出了第二个场景,该第二个场景是结合图3示出的两个查询计划的例子中算子存在变换的场景。如图4B所示,如果该两个查询计划的具有相同的输入,并且过滤器1和过滤器2相同,但是算子1和算子2不同,其中,算子1可以变换成算子2和算子3的组合,那么将算子1变换成算子2和算子3的组合,并且重用算子2,最后将算子2关联到两个查询计划的后续部分,得到该查询计划1和查询计划2整体优化后的查询计划。
图4C示出了第三个场景,该第三个场景是结合图3示出的两个查询计划的例子中算子存在重组的场景。如图4C所示,如果过滤器2和过滤器3相同,且算子1和算子2的功能相同,但是算子1和算子2的输入不相同,那么首先将过滤器3和过滤器1进行对换,通过调整次序,经过对换后,该场景就与场景1相同了,然后对新的执行计划进行重组,利用类似场景1的方法进行动态关联,得到优化后的查询计划。
在本发明实施例中,对于该多个查询计划中没有必要的查询计划部分,查询器可以对其进行删除或者卸载,避免了资源的浪费。
应理解,在本发明实施例中,列举出了这三种比较常见的场景进行说明,但是本发明并不限于这三种场景,还可以有更多的场景,本发明对此不作限制。
因此,本发明实施例的用于流数据查询的方法,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。
下面将结合具体的例子描述本发明实施例的方法,图5示出了应用本发明实施例方法的一个具体流程300的流程图。如图5所示,该流程300包括:
S310,判断新的查询计划与正在执行的查询计划是否有重合部分。当该新的查询计划与正在执行的查询计划有重合部分时,流程进行到S360。当该新的查询计划与正在执行的查询计划没有重合部分时,流程进行到S320。
具体而言,查询器的查询计划可以是新的查询任务,例如可以输入对网络数据流或者数据表的查询,如果新的查询计划与正在执行的查询计划有重合部分时,则查询器可以直接生成对应的查询计划;如果查询计划与正在执行的查询计划没有重合部分时,则流程进行到S320。
这里,查询器可以根据预定规则判断该新的查询计划与正在执行的查询是否有重合部分,本发明对此不作限制。
可选地,当判断新的查询计划与正在执行的查询计划有重合部分时,也可以进行到流程S320,作进一步处理,以获得更优的查询计划。
S320,获取该新的查询计划的等价查询计划。当查询器判断新的查询计划与正在执行的查询计划没有重合时,可以进一步获取该新的查询计划的等价查询计划。
这里,等价查询计划与原始的查询计划的实现功能相同,具体实现形式不同,即该原始的查询计划与其等价查询计划对于同一输入可以产生相同的输出,但是所采用的逻辑算子或者算子的次序有所不同,该等价查询计划可以通过代数规则转换获得。
S330,判断是否有重合部分。
具体而言,当查询计划包括正在执行的查询计划和新的查询计划,查询器判断该新的查询计划与正在执行的查询计划有重合部分时,流程进行到S340;或者,当查询计划包括多个正在执行的查询计划时,查询器判断该正在执行的查询计划有重合部分时,流程进行到S340。
S340,获取执行代价。
该执行代价可以基于代价模型来获取,以便于根据执行代价确定能够减少执行代价的查询计划。
S350,根据查询计划的数据特征判断对该查询计划进行优化能否减少执行代价。
查询器可以根据查询计划的数据动态特征,计算查询计划的执行代价,如果确定该查询计划的数据动态特征对该查询计划进行优化能减少执行代价,则进行到流程S360。
S351,定时优化。
具体而言,对于正在执行的查询计划,查询器可以定时地对查询计划进行优化,重复执行流程S330到S350。例如,当确定多个正在执行的查询计划有重合部分时,查询器通过获取查询计划的执行代价,然后判断该多个正在执行的查询计划的数据动态特征对该多个正在执行的查询计划进行优化能否减少执行代价,可以重复执行流程S330到S350,直到能够减少执行代价,使得优化后的查询计划能够带来有益效果或者减少执行代价。
S360,生成优化后的查询计划。
具体而言,查询器对查询计划相应的物理查询计划进行优化,生成优化后的物理查询计划。例如对相应的物理查询计划,定位需要优化的执行算子,进行算子变换和/或算子重组,再进行动态关联,最后得到优化后的物理查询计划,并执行优化后的物理查询计划。
在该流程300的整个实施过程中,当查询计划是新的查询任务时,查询器可以基于规则判断该新的查询任务对应的新的查询计划与正在执行的查询计划是否有重合部分,如果有重合部分,则直接生成优化后的查询计划;如果没有重合部分,则判断该新的查询计划的等价执行计划与正在执行的查询计划是否有重合部分,如果有重合部分,则基于执行代价判断该查询计划的数据动态特征对该查询计划进行优化能减小执行代价,可选地,可以对查询计划定时进行优化,重复执行流程S330到S350,以得到优化后的查询计划;当查询计划是多个正在执行的查询计划时,查询器判断该多个正在执行的查询计划有重合部分,然后基于执行代价判断该正在执行的查询计划的数据动态特征对该正在执行的查询计划进行优化能够减少执行代价,可以定时地定时执行流程S330到S350,使得优化后的查询计划能够带来有益效果或者减少执行代价,从而得到优化后的查询计划。
因此,本发明实施例的用于流数据查询的方法,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,进一步地,根据该多个查询计划的数据动态特征确定该多个查询计划进行优化能够减少执行代价,进一步提高了优化效果,能够避免重复的数据处理,从而节省了系统资源的开销。
上文结合图1至图5详细描述了根据本发明实施例的用于流数据查询的方法,下面将结合图6和图7描述根据本发明实施例的用于流数据查询的装置。
图6示出了根据本发明实施例的用于流数据查询的装置600的示意性框图。如图6所示,该装置600包括:
获取模块610,用于根据至少两个查询计划获取该至少两个查询计划之间的重合部分;该至少两个查询计划中包括第一查询计划和第二查询计划,该重合部分包括:该第一查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分,或该第一查询计划的等价查询计划与该第二查询计划,或该第二查询计划的等价查询计划之间的重合部分;
优化模块620,用于根据该获取模块610获取的该重合部分对该至少两个查询计划进行优化,获取优化后的查询计划;
查询模块630,用于根据该优化模块620获取的该优化后的查询计划进行流数据查询。
可选地,在本发明一个实施例中,该第一查询计划和该第二查询计划均为正在执行的查询计划;或,该第一查询计划和该第二查询计划均为待执行的查询计划;或,该第一查询计划为正在执行的查询计划,该第二查询计划为待执行的查询计划。
可选地,在本发明一个实施例中,当第一查询计划和第二查询计划均为待执行的查询计划;或当第一查询计划为正在执行的查询计划,该第二查询计划为待执行的查询计划,则查询器还可以接收新的查询任务,根据该新的查询任务生成该待执行的查询计划。
本发明实施例的用于流数据查询的装置,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。
可选地,在本发明一个实施例中,如图7所示,该装置600还可以包括:
确定模块640,用于根据该至少两个查询计划的数据动态特征,确定该至少两个查询计划的执行代价和第一执行代价,该第一执行代价表示对该至少两个查询计划进行预优化得到的查询计划的执行代价;
其中,该优化模块620具体用于:
在该第一执行代价小于该至少两个查询计划的执行代价的情况下,根据该重合部分对该至少两个查询计划进行优化。
因此,本发明实施例的用于流数据查询的装置,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,进一步地,根据该多个查询计划的数据动态特征确定该多个查询计划进行优化能够减少执行代价,进一步提高了优化效果,能够避免重复的数据处理,从而节省了系统资源的开销。
可选地,在本发明一个实施例中,当该第一查询计划和该第二查询计划均为正在执行的查询计划,则该获取模块610具体用于:
在预设时刻根据至少两个查询计划获取该至少两个查询计划之间的重合部分。
可选地,在本发明一个实施例中,该优化模块630具体用于:
根据该重合部分,对该至少两个查询计划进行动态关联。
可选地,该优化模块630具体用于:
根据该重合部分,对该至少两个查询计划可以先进行算子变换和/或算子重组后再进行动态关联。
因此,本发明实施例的用于流数据查询的装置,根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。
根据本发明实施例的装置600可对应于根据本发明实施例的方法100的执行主体,并且装置600中各个模块的上述和其他操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
图8示出了本发明另一个实施例提供的用于流数据查询的装置的结构,包括至少一个处理器702(例如CPU),至少一个网络接口705或者其他通信接口,存储器706,和至少一个通信总线703,用于实现这些装置之间的连接通信。处理器702用于执行存储器706中存储的可执行模块,例如计算机程序。存储器706可能包含高速随机存取存储器(RAM:Random AccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口705(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。
在一些实施方式中,存储器706存储了程序7061,程序7061可以被处理器702执行,这个程序包括:
根据至少两个查询计划获取该至少两个查询计划之间的重合部分;该至少两个查询计划中包括第一查询计划和第二查询计划,该重合部分包括:该第一查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分,或该第一查询计划的等价查询计划与该第二查询计划或该第二查询计划的等价查询计划之间的重合部分;
根据该重合部分对该至少两个查询计划进行优化,获取优化后的查询计划;
根据该优化后的查询计划进行流数据查询。
可选地,第一查询计划和第二查询计划可以包括三种情况:该第一查询计划和该第二查询计划都是正在执行的查询计划,或者该第一查询计划和该第二查询计划都是待执行的查询计划,或者该第一查询计划是正在执行的查询计划,该第二查询计划是待执行的查询计划。
可选地,在本发明一个实施例中,该方法还可以包括:
根据该至少两个查询计划的数据动态特征,确定该至少两个查询计划的执行代价和第一执行代价,该第一执行代价表示对该至少两个查询计划进行预优化得到的查询计划的执行代价;
其中,处理器702具体用于:
在该第一执行代价小于该至少两个查询计划的执行代价的情况下,根据该重合部分对该至少两个查询计划进行优化。
可选地,在本发明一个实施例中,当第一查询计划和第二查询计划均为待执行的查询计划;或当第一查询计划为正在执行的查询计划,该第二查询计划为待执行的查询计划,则处理器702可以还可以接收新的查询任务,根据该新的查询任务生成该待执行的查询计划。
可选地,在本发明一个实施例中,当该第一查询计划和该第二查询计划均为正在执行的查询计划,其中,处理器702具体用于:
在预设时刻根据至少两个查询计划获取该至少两个查询计划之间的重合部分。
可选地,在本发明一个实施例中,处理器702具体用于:
根据该重合部分,对该至少两个查询计划进行动态关联。
可选地,处理器702具体用于:
根据该重合部分,对该至少两个查询计划可以先进行算子变换和/或算子重组后再进行动态关联。
从本发明实施例提供的以上技术方案可以看出,本发明实施例根据包括正在执行的查询计划的多个查询计划的重合部分对该多个查询计划进行优化,能够避免重复的数据处理,从而节省了系统资源的开销。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种用于流数据查询的方法,其特征在于,包括:
根据至少两个查询计划获取所述至少两个查询计划之间的重合部分;所述至少两个查询计划中包括第一查询计划和第二查询计划,所述重合部分包括:所述第一查询计划与所述第二查询计划或所述第二查询计划的等价查询计划之间的重合部分,或所述第一查询计划的等价查询计划与所述第二查询计划,或所述第二查询计划的等价查询计划之间的重合部分;
根据所述重合部分对所述至少两个查询计划进行优化,获取优化后的查询计划;
根据所述优化后的查询计划进行流数据查询。
2.根据权利要求1所述的方法,其特征在于,所述第一查询计划和所述第二查询计划均为正在执行的查询计划;或,所述第一查询计划和所述第二查询计划均为待执行的查询计划;或,所述第一查询计划为正在执行的查询计划,所述第二查询计划为待执行的查询计划。
3.根据权利要求1或2所述的方法,其特征在于,在所述根据所述重合部分对所述至少两个查询计划进行优化之前,所述方法还包括:
根据所述至少两个查询计划的数据动态特征,确定所述至少两个查询计划的执行代价和第一执行代价,所述第一执行代价表示对所述至少两个查询计划进行预优化得到的查询计划的执行代价;
其中,所述根据所述重合部分对所述至少两个查询计划进行优化,包括:
在所述第一执行代价小于所述至少两个查询计划的执行代价的情况下,根据所述重合部分对所述至少两个查询计划进行优化。
4.根据权利要求2或3所述的方法,其特征在于,当所述第一查询计划和所述第二查询计划均为正在执行的查询计划,则所述根据至少两个查询计划获取所述至少两个查询计划之间的重合部分包括:在预设时刻根据至少两个查询计划获取所述至少两个查询计划之间的重合部分。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述根据所述重合部分对所述至少两个查询计划进行优化,包括:
根据所述重合部分,对所述至少两个查询计划进行动态关联。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述根据所述重合部分对所述至少两个查询计划进行优化,包括:
根据所述重合部分,对所述至少两个查询计划进行算子变换和/或算子重组后再进行动态关联。
7.一种用于流数据查询的装置,其特征在于,包括:
获取模块,用于根据至少两个查询计划获取所述至少两个查询计划之间的重合部分;所述至少两个查询计划中包括第一查询计划和第二查询计划,所述重合部分包括:所述第一查询计划与所述第二查询计划或所述第二查询计划的等价查询计划之间的重合部分,或所述第一查询计划的等价查询计划与所述第二查询计划,或所述第二查询计划的等价查询计划之间的重合部分;
优化模块,用于根据所述获取模块获取的所述重合部分对所述至少两个查询计划进行优化,获取优化后的查询计划;
查询模块,用于根据所述优化模块获取的所述优化后的查询计划进行流数据查询。
8.根据权利要求7所述的装置,其特征在于,所述第一查询计划和所述第二查询计划均为正在执行的查询计划;或,所述第一查询计划和所述第二查询计划均为待执行的查询计划;或,所述第一查询计划为正在执行的查询计划,所述第二查询计划为待执行的查询计划。
9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括:
确定模块,用于根据所述至少两个查询计划的数据动态特征,确定所述至少两个查询计划的执行代价和第一执行代价,所述第一执行代价表示对所述至少两个查询计划进行预优化得到的查询计划的执行代价;
其中,所述优化模块具体用于:
在所述第一执行代价小于所述至少两个查询计划的执行代价的情况下,根据所述重合部分对所述至少两个查询计划进行优化。
10.根据权利要求8或9所述的装置,其特征在于,当所述第一查询计划和所述第二查询计划均为正在执行的查询计划,则所述获取模块具体用于:
在预设时刻根据至少两个查询计划获取所述至少两个查询计划之间的重合部分。
11.根据权利要求7至10中任一项所述的装置,其特征在于,所述优化模块具体用于:
根据所述重合部分,对所述至少两个查询计划进行动态关联。
12.根据权利要求7至10中任一项所述的装置,其特征在于,所述优化模块具体用于:
根据所述重合部分,对所述至少两个查询计划进行算子变换和/或算子重组后再进行动态关联。
CN201510770326.7A 2015-11-12 2015-11-12 用于流数据查询的方法和装置 Pending CN106708838A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510770326.7A CN106708838A (zh) 2015-11-12 2015-11-12 用于流数据查询的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510770326.7A CN106708838A (zh) 2015-11-12 2015-11-12 用于流数据查询的方法和装置

Publications (1)

Publication Number Publication Date
CN106708838A true CN106708838A (zh) 2017-05-24

Family

ID=58930029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510770326.7A Pending CN106708838A (zh) 2015-11-12 2015-11-12 用于流数据查询的方法和装置

Country Status (1)

Country Link
CN (1) CN106708838A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109308300A (zh) * 2018-09-27 2019-02-05 上海达梦数据库有限公司 一种逻辑运算的处理方法、装置、转换插件及存储介质
WO2020207393A1 (zh) * 2019-04-09 2020-10-15 华为技术有限公司 算子运算调度方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101866358A (zh) * 2010-06-12 2010-10-20 中国科学院计算技术研究所 一种多维区间查询方法及系统
CN102930003A (zh) * 2012-10-24 2013-02-13 浙江图讯科技有限公司 一种用于优化数据库查询计划的系统及其方法
CN103324724A (zh) * 2013-06-26 2013-09-25 华为技术有限公司 数据处理方法及装置
CN103324765A (zh) * 2013-07-19 2013-09-25 西安电子科技大学 一种基于列存储的多核并行数据查询优化方法
CN103729471A (zh) * 2014-01-21 2014-04-16 华为软件技术有限公司 数据库查询方法和装置
CN104111958A (zh) * 2013-04-22 2014-10-22 中国移动通信集团山东有限公司 一种数据查询方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101866358A (zh) * 2010-06-12 2010-10-20 中国科学院计算技术研究所 一种多维区间查询方法及系统
CN102930003A (zh) * 2012-10-24 2013-02-13 浙江图讯科技有限公司 一种用于优化数据库查询计划的系统及其方法
CN104111958A (zh) * 2013-04-22 2014-10-22 中国移动通信集团山东有限公司 一种数据查询方法及装置
CN103324724A (zh) * 2013-06-26 2013-09-25 华为技术有限公司 数据处理方法及装置
CN103324765A (zh) * 2013-07-19 2013-09-25 西安电子科技大学 一种基于列存储的多核并行数据查询优化方法
CN103729471A (zh) * 2014-01-21 2014-04-16 华为软件技术有限公司 数据库查询方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109308300A (zh) * 2018-09-27 2019-02-05 上海达梦数据库有限公司 一种逻辑运算的处理方法、装置、转换插件及存储介质
CN109308300B (zh) * 2018-09-27 2021-11-12 上海达梦数据库有限公司 一种逻辑运算的处理方法、装置、转换插件及存储介质
WO2020207393A1 (zh) * 2019-04-09 2020-10-15 华为技术有限公司 算子运算调度方法和装置
CN111796917A (zh) * 2019-04-09 2020-10-20 华为技术有限公司 算子运算调度方法和装置
US11934866B2 (en) 2019-04-09 2024-03-19 Huawei Technologies Co., Ltd. Operator operation scheduling method and apparatus to determine an optimal scheduling policy for an operator operation
CN111796917B (zh) * 2019-04-09 2024-06-25 华为技术有限公司 算子运算调度方法和装置

Similar Documents

Publication Publication Date Title
JP7273045B2 (ja) Sqlクエリプランを最適化するための次元コンテキスト伝搬技術
Hu et al. Time-and cost-efficient task scheduling across geo-distributed data centers
CN110199273B (zh) 用于在多维数据库环境中的一次扫描中进行加载、聚合和批量计算的系统和方法
US10204140B2 (en) Massively parallel and in-memory execution of grouping and aggregation in a heterogeneous system
EP3251034B1 (en) Query optimization adaptive to system memory load for parallel database systems
CN105550241B (zh) 多维数据库查询方法及装置
CN103605662B (zh) 一种分布式计算框架参数优化方法、装置及系统
US9043348B2 (en) System and method for performing set operations with defined sketch accuracy distribution
CN105786808B (zh) 一种用于分布式执行关系型计算指令的方法与设备
CN112445854B (zh) 多源业务数据实时处理方法、装置、终端及存储介质
CN104767813A (zh) 基于openstack的公众行大数据服务平台
CN109241159B (zh) 一种数据立方体的分区查询方法、系统及终端设备
CN107330641A (zh) 一种基于Storm流处理框架和规则引擎的金融衍生品实时风险控制系统及方法
CN112269792A (zh) 数据查询方法、装置、设备及计算机可读存储介质
CN104572895A (zh) MPP数据库与Hadoop集群数据互通方法、工具及实现方法
CN104685499A (zh) 过滤/投影操作的硬件实现
US11132363B2 (en) Distributed computing framework and distributed computing method
CN106202092A (zh) 数据处理的方法及系统
CN105574032A (zh) 规则匹配运算方法及装置
CN107766503A (zh) 基于redis的数据快速查询方法及装置
CN109947736B (zh) 实时计算的方法和系统
CN110442647A (zh) 数据一致性同步方法、装置及计算机可读存储介质
CN106708838A (zh) 用于流数据查询的方法和装置
CN110069565A (zh) 一种分布式数据库数据批量处理的方法及装置
WO2022077916A1 (zh) 一种数据处理系统、基于区块链的数据处理方法及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170524