法律状态公告日
法律状态信息
法律状态
2017-04-05
授权
授权
2014-08-20
实质审查的生效 IPC(主分类):G06F17/30 申请日:20140411
实质审查的生效
2014-07-23
公开
公开
技术领域
本发明涉及一种查询规划方法,尤其是一种智能交通领域中海量数据检索的查询规划方法。
背景技术
海量数据检索引擎是指大数据时代下专门针对海量数据优化的高可扩展性、低成本、低功耗、高效、基于分布式系统的数据检索引擎。海量数据检索引擎属于新兴技术,主要基于分布式系统,且存在数据一致性和容错性等实际需求,尤其是数据检索方面效率和容错性便成为重点和难点。
智能交通基于现代电子信息技术、数据通讯传输技术、电子控制技术、计算机处理技术等,突出特点是以信息的收集、处理、发布、交换、分析、利用为主线,为交通参与者提供多样性的信息化、智能化、社会化服务。借助智能交通,管理人员对道路、车辆的行踪将掌握得一清二楚,对拥堵路段及时预警、分流,实现交通运输的集约式发展。智能交通领域中的数据主要包括:浮动车的GPS定时上报信息、各路段的视频监控信息和流量采集信息、各路段的定时上报信息、以及重点路段的实时信息等,突出特点为:时空信息连续(同一车辆的GPS信息按时间顺序总是相邻)、相邻路段的流量和基本守恒、重点路段相对固定容易形成数据热点、数据量大且无更新需求等。
对单个表的几个索引进行检索,通常会有一个明显最佳的算法选择。但对于更大更复杂的查询,比如包括多路join、多个索引和嵌套子查询等,则可能有数百或上千种合理算法。查询规划的作用就是从多个角度出发选出其中的最佳查询计划。目前的海量数据检索领域并没有一种统一成熟的方案,只能根据不同的应用领域做专门的定制优化。而智能交通领域中,因为数据的量级和分布规律等与当前主流的互联网数据均有着较大的差异,所以当前已有的流行的互联网数据管理方案尤其是检索过程中的查询优化等在智能交通领域都存在诸多缺陷。
(1)无法根据智能交通领域中数据的时空特点优化。
(2)无法克服智能交通领域中的数据的热点问题。
发明内容
本发明针对智能交通领域中数据存储和检索的主要需求和现有开源海量数据管理系统的上述缺陷,提出了一种智能交通领域中海量数据检索的查询规划方法,该方法良好地结合了智能交通领域中的数据特点,实现了高效容错的数据查询规划方法。本发明采用的技术方案是:
一种智能交通领域中海量数据检索的查询规划方法,包括下述步骤:
步骤一.利用词法分析器对SQL语句进行分词操作,得到SQL词法结构;
步骤二.利用语法分析器,结合数据检索系统的表结构信息,对SQL词法结构进行解析,生成的操作体按如下顺序组织:where操作、select操作、group操作和order操作,其中where操作中的检索条件用二叉树表示;
步骤三.将where操作体中的检索条件二叉树反转;
步骤四.对上一步中得到的where操作中检索条件的二叉树反转进行拓扑排序,以确定不同检索条件的执行顺序;
步骤五.将修改后的where操作、select操作、group操作和order操作按顺序组装成流水线,然后进行多任务优化;
步骤六.比较待执行的多个任务的流水线,判断是否存在公共前缀,若存在则合并相应的流水线以减少重复操作。
步骤七.将查询任务流水线交由执行器执行。
进一步地,步骤四中,排序依据是检索字段的时空属性和热点特性,并采用热点数据优先、相似时空属性的相邻的原则。
本发明的优点在于:本发明提出的方法结合了智能交通领域中数据空间分布相对固定、时间分布连续的特点,可用于智能交通领域中的大数据检索的查询优化;适用于分布式系统中。
附图说明
图1为本发明的检索引擎结构示意图。
图2为本发明的SQL查询语句的主要结构示意图。
图3a和图3b为本发明的检索条件二叉树示例图。
图4为本发明的多任务优化示例图。
图5为本发明的流程图。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
检索引擎的基本架构如图1所示,可以看出查询规划在整个检索过程中处于核心地位。
检索引擎的查询规划主要包括三方面的内容,一是查询请求的解析,二是查询子任务的生成, 三是查询子任务的规划。传统的检索引擎中,表的存放位置、数据特点等元数据信息并不参与到查询规划当中,使得查询规划无法充分利用数据特点做到细粒度的优化。
SQL的查询语句的主要结构如图2所示。
根据图2可以看出一个查询主要包括:select子句、where子句、group by及having子句、order by子句等。查询解析的任务主要就是配合数据检索系统的表结构等元数据解析出相应的子句对应的操作体。
本发明所提出的查询规划方法,主要步骤如下:
1.利用词法分析器对SQL语句进行分词操作,得到SQL词法结构;
2.利用语法分析器,结合数据检索系统的表结构信息,对SQL词法结构进行解析。生成的操作体按如下顺序组织:where操作、select操作、group操作和order操作。其中where操作中的检索条件用二叉树表示,示例如图3a和图3b所示。
3.将where操作体中的检索条件二叉树反转,比如((A and B) or C)反转后表示:对数据分别按照A条件、B条件和C条件分别检索,然后先将A条件和B条件得到的结果集求交集,再与C条件的结果集做并集。
4.对上一步中得到的where操作中检索条件的二叉树反转进行拓扑排序,以确定不同检索条件的执行顺序。排序依据是检索字段的时空属性和热点特性,并采用热点数据优先、相似时空属性的相邻的原则。
5.将修改后的where操作、select操作、group操作和order操作按顺序组装成“流水线”。然后进行多任务优化。
6.比较待执行的多个任务的“流水线”,看是否存在公共前缀,若存在则合并相应的流水线以减少重复操作。示例如图4。
7.将查询任务流水线交由执行器执行。
本发明所涉及的术语如下:
SQL是Structured Query Language(结构化查询语言)的缩写。
机译: 关系数据库管理系统的并行数据库系统检索方法,该方法使用初始数据检索查询和随后的子数据利用查询处理来最小化查询时间
机译: 关系数据库管理系统的并行数据库系统检索方法,该方法使用初始数据检索查询和随后的子数据利用查询处理来最小化查询时间
机译: 查询量显示设备,查询量显示方法和查询量显示程序