适用于大规模实时数据流的查询处理方法技术

技术编号:7898255 阅读:178 留言:0更新日期:2012-10-23 04:24
本发明专利技术提供一种适用于大规模实时数据流的查询处理方法,根据输入的查询任务的FROM子句,将查询分解为对FROM子句中各数据流的单独查询,合并所有数据流的单独查询结果并形成最终查询结果;每个数据流的单独查询通过对SELECT子句以及WHERE子句的混合优化合并查询链实现。

【技术实现步骤摘要】

本专利技术涉及大规模数据流处理技术以及查询优化处理技术。
技术介绍
随着信息技术的飞速发展和互联网技术的普遍应用,许多行业都面临对海量流式数据的处理。随着数据量的不断增长,将更进一步地要求数据流处理系统平台必须提供实时高效服务的能力。可以预见,未来接入网络的数据源(例如,传感器等设备)会越来越多,需要在线处理和实时分析的数据量会越来越大,系统单元需要提供的服务也越来越多。因此,系统必须快速处理海量数据,及时响应请求,为本系统用户及外系统提供高性能、高可用的服务。 数据查询是指对数据源的数据进行查找、筛选,从而获得需要的数据。而多个查询的内容往往会有交叉、重叠,而系统对这些部分的操作都是重复的。因此,对多个查询的优化基本思想就是充分利用这些公共部分,避免重复冗余的系统操作开销。现有对数据查询的优化处理分为两类局部优化和全局优化。局部优化方案,典型的如AS算法,对每个查询自身进行分解,形成内部最优的可并行计算的查询图。最后将多个查询图拼起来即可。全局优化方案,典型的如IE,HA算法,对所有的查询进行统筹考虑,将各个查询分解为原子查询,查询结果按一定顺序连接起来,形成一个网状全局查询序列图。以上数据查询方法主要针对数据库进行操作。而数据流查询结构不同于数据库,相对简单,例如,数据流查询中将同一数据流中多个原子查询之间的关系基本为与(and)(为避免形成网状结构,充分利用二叉树结构的最优化理论基础,本优化算法不考虑或or的情况,对于该情况,将or的内容当成一个整体原子项,不拆分)。与数据库查询语句类似,使用SQL语法定义的数据流查询语句形式为SELECT Field_l FROM Stream_l WHERE Expression」其中,SELECT子句表示希望查询的字段;FR0M子句表示从哪些流中进行查询;WHERE子句表示希望查询的字段需要满足哪些条件,这些查询条件在操作盒的参数属性元素中以表达式的方式出现。计算操作盒是系统任务处理的最小单位。系统的一次查询任务由多个操作盒组成。系统中可以存在多个查询任务,每个查询任务由多个操作盒组成。系统中的操作盒能够执行各种操作依赖于其中的各种参数。操作盒的参数可以是值类型也可以是各种表达式以适应各种计算要求。表达式由一个或多个操作数以及各种对操作数的运算组成。数据流查询结构中表达式之间的关系相对简单(如不包含聚合,连接等操作)。当存在较多数量的操作盒时,就可能出现重复的表达式。原子查询定义为一个简单的查询操作,即SELECT,FROM和WHERE子句中最多只能出现单一类型的项。如SELECT*FR0M*WHEREA,SELECT A FR0M*WHERE*、SELECT*FR0M A WHERE*这样的形式,其中为保证语句完整,对于空缺项,一律填为*。对于SELECT*FR0M*WHERE A, WHERE A为原子查询的核心。使用现有针对数据库的数据的优化处理方法对数据流进行处理并不能达到最优,针对数据流的特殊性,需要一种特殊的优化的计算处理的数据查询处理方法。
技术实现思路
本专利技术所要解决的技术问题是,提供一种提高系统处理速度的数据查询方法。本专利技术为解决上述技术问题所采用的技术方案是,一种,根据输入的查询任务的FROM子句,将查询分解为对FROM子句中各数据流的单独查询,合并所有数据流的单独查询结果并形成最终查询结果;每个数据流的单独查询通过对SELECT子句以及WHERE子句的混合优化合并查询链实现;合并查询链包括以下步骤I、将当前数据流的查询语句进行分解生成各原子查询,对应每个查询语句生成一个原子操作集,计算原子操作集中所有原子查询对应的利用指标,所述利用指标为该原子查询在当前数据流对应的所有原子操作集中的重复次数,进入步骤2 ;2、在当前数据流对应的所有原子操作集中选择具有最大利用指标的原子查询进行查询链合并,形成两条分支一条真实数据流和一条虚拟数据流。真实数据流进行当前选择的原子查询操作,虚拟数据流不进行当前的原子查询操作;将具有该原子查询操作的所有查询链归入真实数据流,其它的归入虚拟数据流;之后,在当前数据流下每个查询语句根据合并后的查询链重新生成原子操作集,并重新计算各原子操作的利用指标,由此递归步骤2,直到所有原子操作集为空,针对当前流的单独查询完毕。所述当前数据流为真实数据流或虚拟数据流。具体的,当在当前数据流对应的所有原子操作集中有多个最大利用指标的原子查询时,随机选择一个最大利用指标的原子查询进行查询链的合并。本专利技术的有益效果是,利用数据流查询的特殊性,使得查询数据链形成最优的二叉树结构,查询效率高。附图说明图I为实施例步骤I的数据流图;图3为实施例步骤2的数据流图;图2为实施例步骤3的数据流图;图4为实施例最终的数据流图。具体实施例方式根据输入的查询任务的FROM子句,将查询分解为对FROM子句中各数据流的单独查询,合并所有数据流的单独查询结果并形成最终查询结果;以FROM子句中一个数据流Stream 为例对数据流Stream的单独查询通过对SELECT子句以及WHERE子句的混合优化合并查询链实现假设有如下多条查询、查询I =SELECT A, D FROM Stream WHERE BI, Cl,查询2 : SELECT A FROM Stream WHERE B3, C2查询3 SELECTA, D FROM Stream WHERE B2, C3, E查询4 : SELECT D FROM Stream WHERE F查询5 : SELECT D FROM Stream WHERE B4, F上述查询语句均有相同的原子查询SELECT*FROM Stream WHERE*,基于相同的数据流Stream,如图I所示,因此可以对上述5个查询语句进行查询优化。其中A、D表示选择的列或字段,例如Name、Age ; E、F 均表不定值,如 Department=,,Computer” ;B表示范围MORE链,B为MORE链的关键字,且BI包含B2包含B3包含B4,以此类推,例如BI是X>10,B2是X>15 ;C表示范围LESS链,与B链类似。为了简化描述,将一个原子查询简写为原子查询的核心字段的对象(列、字段、定值或范围),比如,将原子操作SELECTAFR0M*WHERE*简写为A。本实施例中对于SELECT以及WHERE对象为定值的原子操作,其格式为(原子操作,利用指标);对于WHERE对象为范围的原子操作,其格式为(原子操作关键字,原子操作,操作符,操作符方向,利用指标)。步骤I)在当前数据流Stream下对个查询语句进行分解,得到各语句对应的原子操作集并各原子查询对应的利用指标。利用指标为原子查询在当前数据流Stream对应的所有原子操作集中的重复次数;对于SELECT子句以及WHERE子句的对象为定值的原子操作,有完全相同的原子操作被判定为重复;对于WHERE子句的对象为范围的原子操作,当该范围与其他WHERE子句的原子操作对象范围相同或被完全包含在所述其他WHERE子句的原子操作对象范围中即被认判定是重复。如此,得到分解后的各原子操作集为查询I 的原子操作集(A, 3)、(D, 4)、(B,BI, >本文档来自技高网
...

【技术保护点】
适用于大规模实时数据流的查询处理方法,其特征在于,根据输入的查询任务的FROM子句,将查询分解为对FROM子句中各数据流的单独查询,合并所有数据流的单独查询结果并形成最终查询结果;每个数据流的单独查询通过对SELECT子句以及WHERE子句的混合优化合并查询链实现;合并查询链包括以下步骤:1)将当前数据流的查询语句进行分解生成各原子查询,对应每个查询语句生成一个原子操作集,计算原子操作集中所有原子查询对应的利用指标,所述利用指标为该原子查询在当前数据流对应的所有原子操作集中的重复次数,进入步骤2;2)在当前数据流对应的所有原子操作集中选择具有最大利用指标的原子查询进行查询链合并,形成两条分支:一条真实数据流和一条虚拟数据流。真实数据流进行当前选择的原子查询操作,虚拟数据流不进行当前的原子查询操作;将具有该原子查询操作的所有查询链归入真实数据流,其它的归入虚拟数据流;之后,在当前数据流下每个查询语句根据合并后的查询链重新生成原子操作集,并重新计算各原子操作的利用指标,由此递归步骤2,直到所有原子操作集为空,针对当前流的单独查询完毕;所述当前数据流为真实数据流或虚拟数据流。

【技术特征摘要】

【专利技术属性】
技术研发人员:罗光春田玲陈爱国秦科
申请(专利权)人:电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1