首页> 中国专利> 面向流式数据处理的SQL查询计划生成方法

面向流式数据处理的SQL查询计划生成方法

摘要

本发明公开了一种面向流式数据处理的SQL查询计划生成方法,其特征在于,包括以下步骤:接收用户输入的SQL命令,判断SQL命令的语法是否正确,若SQL命令的语法正确,则对SQL命令执行预处理,判断预处理后的SQL命令是否为连续任务,若SQL命令为连续任务,则将连续任务转换为流式任务,对流式任务执行解析和优化,以生成查询计划,(7)执行查询计划。本发明能够根据数据的特点产生最优的SQL查询分析计划,处理速度快,解析效率高,特别适用于流式数据处理领域,同时还允许用户使用SQL自定义数据的格式。

著录项

  • 公开/公告号CN102609451A

    专利类型发明专利

  • 公开/公告日2012-07-25

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN201210006914.X

  • 申请日2012-01-11

  • 分类号G06F17/30(20060101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人朱仁玲

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2023-12-18 06:17:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-12-17

    授权

    授权

  • 2012-09-26

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20120111

    实质审查的生效

  • 2012-07-25

    公开

    公开

说明书

技术领域

本发明涉及计算机应用领域,具体涉及一种面向流式数据处理的SQL 查询计划生成方法。

背景技术

在基于MapReduce的分布式数据库系统中,针对SQL查询计划生成方 法,现有技术根据用户的SQL查询命令创建一系列的MapReduce作业, MapReduce作业由有向无环图组成,以迭代器的形式操作,每个操作符的 数据经处理后,再把产生的元组传给下一个操作符。

然而,现有的SQL查询计划生成技术存在以下问题:1、采用基于规 则的优化技术,不能总是产生高效的查询计划;2、不支持连续查询,不适 合流式数据处理的需要;3、缺乏完整的查询分析处理引擎,解析效率低。

发明内容

本发明的目的在于提供一种面向流式数据处理的SQL查询计划生成方 法,其能够根据数据的特点产生最优的SQL查询分析计划,处理速度快, 解析效率高,特别适用于流式数据处理领域,同时还允许用户使用SQL自 定义数据的格式。

本发明是通过以下技术方案实现的:

一种面向流式数据处理的SQL查询计划生成方法,其特征在于,包括 以下步骤:

(1)接收用户输入的SQL命令;

(2)判断SQL命令的语法是否正确;

(3)若SQL命令的语法正确,则对SQL命令执行预处理;

(4)判断预处理后的SQL命令是否为连续任务;

(5)若SQL命令为连续任务,则将连续任务转换为流式任务;

(6)对流式任务执行解析和优化,以生成查询计划,具体包括以下子 步骤:

(6-1)接收流式任务,并对流式任务执行语义分析,以判断流式 任务的语义是否正确;

(6-2)若流式任务的语义正确,则利用开源语法分析器解析流式 任务,以生成SQL抽象语法树;

(6-3)根据SQL抽象语法树生成逻辑计划树;

(6-4)根据逻辑计划树生成查询计划;

(6-5)评估查询计划,以生成最终的查询计划;

(7)执行查询计划。

判断流式任务的语义是否正确包括判断流式任务的变量定义是否正 确,以及判断其类型是否匹配。

子步骤(6-2)包括以下步骤:

(6-2-1)开源语法分析器根据SQL语言的语法和语义特点所定义的规 则对流式任务进行识别,并将流式任务分解成标志流作为开源语法分析器 的输入;

(6-2-2)开源语法分析器利用扫描程序递归扫描标志流,以生成SQL 抽象语法树。

SQL抽象语法树是由叶子节点、非叶子节点和边组成的树结构,叶子 节点与标志流的值相对应,非叶子节点与标志流的语法规则相对应。

子步骤(6-3)包括以下步骤:

(6-3-1)解析SQL抽象语法树,并将SQL抽象语法树转换为多个查 询块;

(6-3-2)根据查询块中记录的SQL抽象语法树的信息递归分析SQL 抽象语法树的子查询,以得到逻辑计划树,递归分析包括语义检查和类型 检查。

本方法还包括步骤:若SQL命令的语法不正确,则过程结束。

本方法还包括步骤:若预处理后的SQL命令不是连续任务,则进入步 骤(7)。

本发明具有以下的优点和有益效果:

(1)解析效率高:本发明针对流式数据处理,提出了一套完整的分布 式查询分析处理引擎。具体来讲,这套完整的查询分析引擎包括预处理部 件、解析部件、优化部件和执行部件等。整个查询分析引擎四个部件协同 工作,紧密联系,显著提高了SQL查询计划生成的效率,大大缩短了执行 时间。

(2)采用基于成本的优化策略:本发明根据数据的特点和流式数据处 理的要求,计算进行索引和当前存储数据处理和操作的代价建立最选路径 选择的规则。根据规则选取最优的待选树,在选择了最优的待选树后,产 生执行计划并返回。

附图说明

图1是本发明面向流式数据处理的SQL查询计划生成方法的流程图。

图2是本发明方法中步骤(5)的工作示意图。

图3是本发明方法中步骤(6)的细化流程图。

图4是SQL抽象语法树的示意图。

图5是本发明方法中步骤(7)的工作示意图。

具体实施方式

以下首先对本发明的技术词汇进行解释和说明。

连续任务:只提交一次,连续在数据库上运行的任务。连续任务的查 询随着新数据的到来而不断地返回查询结果。

流式任务:利用数据流特征和滑动窗口机制以时间戳方式排列的查询 任务,查询结果将转换成数据流。

开源语法分析器:一种开放源代码的语法分析工具,为包括Java,C++, C#,SQL等语言提供了一个通过语法描述来自动构造自定义语言的识别器、 编译器和解释器的框架。

SQL抽象语法树:是SQL语句的抽象语法结构的树状表现形式和内存 中的数据结构。

逻辑计划树:由关系代数表达式所组成的树结构,其非叶子节点为关 系运算符、叶子节点为关系。

关系操作符:数据库领域定义的专门用于关系运算的操作符,如过滤、 选择、投影、连接、聚集等。

MapReduce:是一种编程模型,用于大规模数据集的并行运算。

Hadoop:是一个分布式系统基础框架。用户可以在不了解分布式底层 细节的情况下,开发分布式程序,充分利用集群的威力高速运算和存储。

XML:一种可扩展的标记语言,可以用来标记数据、定义数据类型。

如图1所示,本发明面向流式数据处理的SQL查询计划生成方法包括 以下步骤:

(1)接收用户输入的SQL命令:同时将所有出现在语句中的标识符的 信息填入到标识符转换表中。

(2)判断SQL命令的语法是否正确:根据语法规则对SQL命令进行 合法性检查,形成一个语法正确的查询任务,若SQL命令的语法不正确, 则过程结束,若SQL命令的语法正确,则转入步骤(3);

(3)对SQL命令执行预处理:将查询任务通过网络传输到预处理器中 进行语句依赖关系的分析,对查询任务进行合并、查询语句进行裁剪和对 执行顺序进行调整。

(4)判断预处理后的SQL命令是否为连续任务,若SQL命令为连续 任务,则转入步骤(5),若预处理后的SQL命令不是连续任务,则进入步 骤(7);

(5)将连续任务转换为流式任务,具体包括以下子步骤:

(5-1)利用开源语法分析器将连续任务转换为一颗SQL抽象语 法树;

(5-2)将连续任务对应的一颗SQL抽象语法树分解为若干个子 语法树;

(5-3)通过加入时间戳属性组合子语法树,通过滑动窗口机制创 建流式任务。

如图2所示,任务接收器接收查连续任务,对连续任务进行 语句依赖关系的分析,对连续任务进行合并、查询语句进行裁剪和对 执行顺序进行调整,中间结果将暂时保存在共享存储空间中,并存入 到元数据库中。开源语法分析器根据SQL语法和语义特点利用元数据 库中存储的信息对所述连续任务进行解析,转换成SQL抽象语法树。 将连续任务对应的SQL抽象语法树分解为若干个子语法树,通过加入 时间戳属性组合子语法树,通过滑动窗口机制创建流式任务。

(6)对流式任务执行解析和优化,以生成查询计划,具体包括以下子 步骤(如图3所示):

(6-1)接收流式任务,并对流式任务执行语义分析,以判断流式 任务的语义是否正确:判断流式任务的语义是否正确包括判断流式任 务的变量定义是否正确,以及判断其类型是否匹配,若流式任务的语 义正确,则进入步骤(6-2),否则过程结束;

(6-2)利用开源语法分析器解析流式任务,以生成SQL抽象语 判断流式任务法树,具体包括:

(6-2-1)开源语法分析器根据SQL语言的语法和语义特点 所定义的规则对流式任务进行识别,并将流式任务分解成标志 流作为开源语法分析器的输入;

(6-2-2)开源语法分析器利用扫描程序递归扫描标示流, 以生成SQL抽象语法树。SQL抽象语法树是由叶子节点、非叶 子节点和边组成的树结构。叶子节点与标志流的值相对应,非 叶子节点对应于标志流的语法规则,图4示出一个简单的SQL 查询生成的SQL抽象语法树实例,所述实例执行下述操作:从 表Table1中选择满足属性F1值为a的元组中属性F1的值及统 计个数。

(6-3)根据SQL抽象语法树生成逻辑计划树,具体包括:

(6-3-1)解析SQL抽象语法树,并将SQL抽象语法树转 换为多个查询块;

(6-3-2)根据查询块中记录的SQL抽象语法树的信息递归 分析SQL抽象语法树的子查询,以得到逻辑计划树,递归分析 包括语义检查和类型检查;

(6-4)根据逻辑计划树生成查询计划;查询计划是由关系操作符 组成的有向无环图;

(6-5)评估查询计划,以生成最终的查询计划:在查询计划中建 立一系列通往同一结果的路径,为每条路径评估其执行代价,取出其 中代价最小的一条,该条路径产生最终的查询计划。

(7)执行查询计划:递归访问查询计划,将所述查询计划分解为一 系列MapReduce任务,然后将任务提交给Hadoop集群。Hadoop集群将需 要执行的所述MapReduce任务序列化到一个XML格式的文件,由Map或 Reduce反序列化出SQL让各数据库实例执行,如图5所示。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号