CN102737134B - 适用于大规模实时数据流的查询处理方法 - Google Patents
适用于大规模实时数据流的查询处理方法 Download PDFInfo
- Publication number
- CN102737134B CN102737134B CN201210222034.6A CN201210222034A CN102737134B CN 102737134 B CN102737134 B CN 102737134B CN 201210222034 A CN201210222034 A CN 201210222034A CN 102737134 B CN102737134 B CN 102737134B
- Authority
- CN
- China
- Prior art keywords
- data stream
- query
- clause
- atomic operation
- inquiry
- 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.)
- Expired - Fee Related
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 7
- 238000005457 optimization Methods 0.000 claims description 10
- 230000004927 fusion Effects 0.000 claims description 5
- 238000000354 decomposition reaction Methods 0.000 claims description 4
- 238000000034 method Methods 0.000 abstract description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种适用于大规模实时数据流的查询处理方法,根据输入的查询任务的FROM子句,将查询分解为对FROM子句中各数据流的单独查询,合并所有数据流的单独查询结果并形成最终查询结果;每个数据流的单独查询通过对SELECT子句以及WHERE子句的混合优化合并查询链实现。
Description
技术领域
本发明涉及大规模数据流处理技术以及查询优化处理技术。
背景技术
随着信息技术的飞速发展和互联网技术的普遍应用,许多行业都面临对海量流式数据的处理。随着数据量的不断增长,将更进一步地要求数据流处理系统平台必须提供实时高效服务的能力。可以预见,未来接入网络的数据源(例如,传感器等设备)会越来越多,需要在线处理和实时分析的数据量会越来越大,系统单元需要提供的服务也越来越多。因此,系统必须快速处理海量数据,及时响应请求,为本系统用户及外系统提供高性能、高可用的服务。
数据查询是指对数据源的数据进行查找、筛选,从而获得需要的数据。而多个查询的内容往往会有交叉、重叠,而系统对这些部分的操作都是重复的。因此,对多个查询的优化基本思想就是充分利用这些公共部分,避免重复冗余的系统操作开销。现有对数据查询的优化处理分为两类:局部优化和全局优化。局部优化方案,典型的如AS算法,对每个查询自身进行分解,形成内部最优的可并行计算的查询图。最后将多个查询图拼起来即可。全局优化方案,典型的如IE,HA算法,对所有的查询进行统筹考虑,将各个查询分解为原子查询,查询结果按一定顺序连接起来,形成一个网状全局查询序列图。以上数据查询方法主要针对数据库进行操作。而数据流查询结构不同于数据库,相对简单,例如,数据流查询中将同一数据流中多个原子查询之间的关系基本为与(and)(为避免形成网状结构,充分利用二叉树结构的最优化理论基础,本优化算法不考虑或or的情况,对于该情况,将or的内容当成一个整体原子项,不拆分)。与数据库查询语句类似,使用SQL语法定义的数据流查询语句形式为:
SELECT Field_1[,Field_2,Field_3,…]
FROM Stream_1[,Stream_2,Stream_3,…]
WHERE Expression_1[and Expression_2 and Expression_3,…]
其中,SELECT子句表示希望查询的字段;FROM子句表示从哪些流中进行查询;WHERE子句表示希望查询的字段需要满足哪些条件,这些查询条件在操作盒的参数属性元素中以表达式的方式出现。计算操作盒是系统任务处理的最小单位。系统的一次查询任务由多个操作盒组成。系统中可以存在多个查询任务,每个查询任务由多个操作盒组成。系统中的操作盒能够执行各种操作依赖于其中的各种参数。操作盒的参数可以是值类型也可以是各种表达式以适应各种计算要求。表达式由一个或多个操作数以及各种对操作数的运算组成。数据流查询结构中表达式之间的关系相对简单(如不包含聚合,连接等操作)。当存在较多数量的操作盒时,就可能出现重复的表达式。原子查询定义为一个简单的查询操作,即SELECT,FROM和WHERE子句中最多只能出现单一类型的项。如SELECT*FROM*WHERE A、SELECT AFROM*WHERE*、SELECT*FROM A WHERE*这样的形式,其中为保证语句完整,对于空缺项,一律填为﹡。对于SELECT*FROM*WHERE A,WHERE A为原子查询的核心。
使用现有针对数据库的数据的优化处理方法对数据流进行处理并不能达到最优,针对数据流的特殊性,需要一种特殊的优化的计算处理的数据查询处理方法。
发明内容
本发明所要解决的技术问题是,提供一种提高系统处理速度的数据查询方法。
本发明为解决上述技术问题所采用的技术方案是,一种适用于大规模实时数据流的查询处理方法,根据输入的查询任务的FROM子句,将查询分解为对FROM子句中各数据流的单独查询,合并所有数据流的单独查询结果并形成最终查询结果;
每个数据流的单独查询通过对SELECT子句以及WHERE子句的混合优化合并查询链实现;
合并查询链包括以下步骤:
1、将当前数据流的查询语句进行分解生成各原子查询,对应每个查询语句生成一个原子操作集,计算原子操作集中所有原子查询对应的利用指标,所述利用指标为该原子查询在当前数据流对应的所有原子操作集中的重复次数,进入步骤2;
2、在当前数据流对应的所有原子操作集中选择具有最大利用指标的原子查询进行查询链合并,形成两条分支:一条真实数据流和一条虚拟数据流。真实数据流进行当前选择的原子查询操作,虚拟数据流不进行当前的原子查询操作;将具有该原子查询操作的所有查询链归入真实数据流,其它的归入虚拟数据流;之后,在当前数据流下每个查询语句根据合并后的查询链重新生成原子操作集,并重新计算各原子操作的利用指标,由此递归步骤2,直到所有原子操作集为空,针对当前流的单独查询完毕。
所述当前数据流为真实数据流或虚拟数据流。
具体的,当在当前数据流对应的所有原子操作集中有多个最大利用指标的原子查询时,随机选择一个最大利用指标的原子查询进行查询链的合并。
本发明的有益效果是,利用数据流查询的特殊性,使得查询数据链形成最优的二叉树结构,查询效率高。
附图说明
图1为实施例步骤1的数据流图;
图3为实施例步骤2的数据流图;
图2为实施例步骤3的数据流图;
图4为实施例最终的数据流图。
具体实施方式
根据输入的查询任务的FROM子句,将查询分解为对FROM子句中各数据流的单独查询,合并所有数据流的单独查询结果并形成最终查询结果;以FROM子句中一个数据流Stream为例:
对数据流Stream的单独查询通过对SELECT子句以及WHERE子句的混合优化合并查询链实现:
假设有如下多条查询:
查询1:SELECT A,D FROM Stream WHERE B1,C1,
查询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,如图1所示,因此可以对上述5个查询语句进行查询优化。
其中A、D表示选择的列或字段,例如Name、Age;
E、F均表示定值,如Department=”Computer”;
B表示范围MORE链,B为MORE链的关键字,且B1包含B2包含B3包含B4,以此类推,例如B1是X>10,B2是X>15;
C表示范围LESS链,与B链类似。
为了简化描述,将一个原子查询简写为原子查询的核心字段的对象(列、字段、定值或范围),比如,将原子操作SELECTAFROM*WHERE*简写为A。
本实施例中对于SELECT以及WHERE对象为定值的原子操作,其格式为:(原子操作,利用指标);对于WHERE对象为范围的原子操作,其格式为:(原子操作关键字,原子操作,操作符,操作符方向,利用指标)。
步骤1)在当前数据流Stream下对个查询语句进行分解,得到各语句对应的原子操作集并各原子查询对应的利用指标。利用指标为原子查询在当前数据流Stream对应的所有原子操作集中的重复次数;对于SELECT子句以及WHERE子句的对象为定值的原子操作,有完全相同的原子操作被判定为重复;对于WHERE子句的对象为范围的原子操作,当该范围与其他WHERE子句的原子操作对象范围相同或被完全包含在所述其他WHERE子句的原子操作对象范围中即被认判定是重复。如此,得到分解后的各原子操作集为:
查询1的原子操作集:(A,3)、(D,4)、(B,B1,>,MORE,4)、(C,C1,<,LESS,3)
查询2的原子操作集:(A,3)、(B,B3,>,MORE,2)、(C,C2,<,LESS,2)
查询3的原子操作集:(A,3)、(D,4)、(B,B2,>,MORE,3)、(C,C3,<,LESS,1)、(E,1)
查询4的原子操作集:(D,4)、(F,2)
查询5的原子操作集:(D,4)、(B,B4,>,MORE,1)、(F,2)
步骤2)在(D,4)与(B,B1,>,MORE,4)中随机选择利用指标最大者:(D,4);
对含有该原子操作D的查询语句进行合并,将具有该原子查询操作的所有查询链归入真实数据流,其它的归入虚拟数据流。合并后当前数据流形成两条分支:一条真实数据流和一条虚拟数据流。真实数据流进行当前选择的原子查询操作D,虚拟数据流不进行当前的原子查询操作,如图2所示:
生成节点:节点D+虚拟节点1
针对(D,4)节点,查询变为:
查询1:SELECTAFROM节点D WHERE B1,C1
查询3:SELECTAFROM节点D WHERE B2,C3,E
查询4:SELECT*FROM节点D WHERE F
查询5:SELECT*FROM节点D WHERE,B4,F
在当前数据流(从节点D流出的真实数据流)下查询语句1、3、4、5。根据合并后的查询链重新生成原子操作集,并重新计算各原子操作的利用指标:
查询1的原子操作集:(A,2)、(B1,3)、(C1,2)
查询3的原子操作集:(A,2)、(B2,2)、(C3,1)、(E,1)
查询4的原子操作集:(F,2)
查询5的原子操作集:(B4,1)、(F,2)
针对虚拟节点1,查询变为:
查询2:SELECTAFROM虚拟节点1WHERE B3,C2
在当前数据流(从虚拟节点1流出的虚拟数据流)下查询语句2根据合并后的查询链重新生成原子操作集,并重新计算各原子操作的利用指标:
查询2的原子操作集:(A,2)、(B1,1)、(C1,1)
步骤3)在节点D对应的真实数据流上,找到利用指标最大者:(B1,3),对含有该原子操作B1的查询语句进行合并,将具有该原子查询操作的所有查询链归入真实数据流,其它的归入虚拟数据流。合并后当前数据流形成两条分支:一条真实数据流和一条虚拟数据流。真实数据流进行当前选择的原子查询操作B1,虚拟数据流不进行当前的原子查询操作,如图3所示;
生成节点:节点B1+虚拟节点1.1;
再在当前数据流(从节点B1流出的真实数据流)下查询语句1、3、5根据合并后的查询链重新生成原子操作集,并重新计算各原子操作的利用指标;
再在当前数据流(从虚拟节点1.1流出的虚拟数据流)下查询语句4,重新生成原子操作集,并重新计算各原子操作的利用指标;
在虚拟节点1对应的虚拟数据流上,3个原子查询的利用指标相同,随机选择一个原子查询(A,2)进行执行,将具有该原子查询操作的所有查询链归入真实数据流,其它的归入虚拟数据流,如图3所示;
生成节点:节点A+虚拟节点1.2;
再在当前数据流(从节点A流出的真实数据流)下重新生成查询语句2的原子操作集,并重新计算各原子操作的利用指标;
由于从虚拟节点1.2流出的真实数据流没有查询语句分配在该数据流上,因此不再做处理;
依上述步骤,不断对在当前数据流对应的所有原子操作集中选择具有最大利用指标的原子查询进行查询链合并,在执行的原子操作对应的节点上形成一条真实数据流和一条虚拟数据流,直至所有原子操作集中没有原子查询可选择,对数据流Stream进行单独查询结束。最终真实数据流形成最终对数据流Stream进行单独查询的查询链,如图4所述。
本实施中一个子句对应有多个对象时,对象间的关系为and。如WHERE B1,C1,则认为是WHERE B1and C1,分为两个原子查询WHERE B1、WHERE C1进行查询链的合并处理。当两个对象间的关系为or时,如WHERE B1orC1,则将B1orC1作为一个对象,即视WHEREB1orC1为一个原子查询进行查询链的合并处理。
Claims (3)
1.适用于大规模实时数据流的查询处理方法,其特征在于,根据输入的查询任务的FROM子句,将查询分解为对FROM子句中各数据流的单独查询,合并所有数据流的单独查询结果并形成最终查询结果;
每个数据流的单独查询通过对SELECT子句以及WHERE子句的混合优化合并查询链实现;
合并查询链包括以下步骤:
1)将当前数据流的查询语句进行分解生成各原子查询,对应每个查询语句生成一个原子操作集,计算原子操作集中所有原子查询对应的利用指标,所述利用指标为该原子查询在当前数据流对应的所有原子操作集中的重复次数,进入步骤2;
2)在当前数据流对应的所有原子操作集中选择具有最大利用指标的原子查询进行查询链合并,形成两条分支:一条真实数据流和一条虚拟数据流;真实数据流进行当前选择的原子查询操作,虚拟数据流不进行当前的原子查询操作;将具有该原子查询操作的所有查询链归入真实数据流,其它的归入虚拟数据流;之后,在当前数据流下每个查询语句根据合并后的查询链重新生成原子操作集,并重新计算各原子操作的利用指标,由此递归步骤2,直到所有原子操作集为空,针对当前数据流的单独查询完毕;所述当前数据流为真实数据流或虚拟数据流。
2.如权利要求1所述适用于大规模实时数据流的查询处理方法,其特征在于,当在当前数据流对应的所有原子操作集中有多个最大利用指标的原子查询时,随机选择一个最大利用指标的原子查询进行查询链的合并。
3.如权利要求1所述适用于大规模实时数据流的查询处理方法,其特征在于,对于SELECT子句以及WHERE子句的对象为定值的原子操作,有完全相同的原子操作被判定为重复;
对于WHERE子句的对象为范围的原子操作,当该范围与其他WHERE子句的原子操作对象范围相同或被完全包含在所述其他WHERE子句的原子操作对象范围中即被认判定是重复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210222034.6A CN102737134B (zh) | 2012-06-29 | 2012-06-29 | 适用于大规模实时数据流的查询处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210222034.6A CN102737134B (zh) | 2012-06-29 | 2012-06-29 | 适用于大规模实时数据流的查询处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102737134A CN102737134A (zh) | 2012-10-17 |
CN102737134B true CN102737134B (zh) | 2014-06-18 |
Family
ID=46992635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210222034.6A Expired - Fee Related CN102737134B (zh) | 2012-06-29 | 2012-06-29 | 适用于大规模实时数据流的查询处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102737134B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573074A (zh) * | 2015-01-27 | 2015-04-29 | 广东帝弘数据技术有限公司 | 基于医院数据的高速计算分析方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014117297A1 (en) * | 2013-01-31 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Approximate query processing |
CN104636478B (zh) * | 2015-02-13 | 2019-12-20 | 广州神马移动信息科技有限公司 | 信息查询方法和设备 |
CN107784032B (zh) * | 2016-08-31 | 2020-06-16 | 华为技术有限公司 | 一种数据查询结果的渐进式输出方法、装置及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366708B2 (en) * | 1999-02-18 | 2008-04-29 | Oracle Corporation | Mechanism to efficiently index structured data that provides hierarchical access in a relational database system |
CN102158531A (zh) * | 2010-02-01 | 2011-08-17 | 北京大学 | 一种分布式查询数据流传输方法 |
CN102339295B (zh) * | 2010-07-23 | 2014-01-29 | 中国移动通信集团公司 | Sql脚本的结构化元数据生成方法及数据地图生成方法 |
CN102521405B (zh) * | 2011-12-26 | 2014-06-25 | 中国科学院计算技术研究所 | 支持高速加载的海量结构化数据存储、查询方法和系统 |
-
2012
- 2012-06-29 CN CN201210222034.6A patent/CN102737134B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573074A (zh) * | 2015-01-27 | 2015-04-29 | 广东帝弘数据技术有限公司 | 基于医院数据的高速计算分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102737134A (zh) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Emani et al. | Understandable big data: a survey | |
CN104767813B (zh) | 基于openstack的公众行大数据服务平台 | |
CN107291807B (zh) | 一种基于图遍历的sparql查询优化方法 | |
CN102609451A (zh) | 面向流式数据处理的sql查询计划生成方法 | |
CN106874426B (zh) | 基于Storm的RDF流式数据关键词实时搜索方法 | |
US20130290292A1 (en) | Augmented Query Optimization by Data Flow Graph Model Optimizer | |
US20170060977A1 (en) | Data preparation for data mining | |
CN102737134B (zh) | 适用于大规模实时数据流的查询处理方法 | |
CN105204920B (zh) | 一种基于映射聚合的分布式计算作业的实现方法及装置 | |
CN103226608A (zh) | 一种基于目录级可伸缩的Bloom Filter位图表的并行文件搜索方法 | |
da Silva et al. | Graph databases in molecular biology | |
KR101955376B1 (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
US9305065B2 (en) | Calculating count distinct using vertical unions | |
Ahmed et al. | Big data and semantic web, challenges and opportunities a survey | |
CN102902739B (zh) | 云计算环境下面向不确定数据源的工作流视图构造方法 | |
KR100912190B1 (ko) | 최적화 변환 규칙을 적용하여 rdql 질의를 sql질의로 변환하는 rdql-to-sql 시스템 및 방법 | |
US8914387B2 (en) | Calculation models using annotations for filter optimization | |
CN102750386A (zh) | 适用于大规模实时数据流的查询处理方法 | |
Bouhissi et al. | Toward Data Integration in the Era of Big Data: Role of Ontologies | |
Jiang | Research and practice of big data analysis process based on hadoop framework | |
Lee et al. | Similarity-based change detection for RDF in MapReduce | |
Xiao et al. | Nested pattern queries processing optimization over multi-dimensional event streams | |
KR20170112102A (ko) | 대규모 병렬 정성 시간 추론 장치 및 방법 | |
de Souza Campos et al. | Review and comparison of works on heterogeneous data and semantic analysis in big data | |
Milev | Application of real-time dictionary instead of full-text index for searching in web publications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140618 |