一种数据查询方法及装置制造方法及图纸

技术编号:10574127 阅读:129 留言:0更新日期:2014-10-29 09:25
本申请公开了一种数据查询方法及装置,包括将查询语句分解为一个或一个以上查询子句;遍历查询子句,查询子句与元数据匹配,将其替换为元数据中保存的执行结果;否则执行查询子句并更新元数据;将最终的执行结果用于主查询得到查询结果。本申请将已经执行过的查询子句以及其执行结果作为元数据进行管理,对于当前会话或者不同会话中相同的查询子句,直接将查询子句替换为元数据中保存的执行结果,避免了查询子句的重复执行,从而更大限度提高了整体系统的查询性能。同时,与现有查询语句层面的优化相比,本申请的查询优化粒度更加细,更加适合于数据仓库应用中的大数据查询,从而进一步提高了整体系统的查询性能。

【技术实现步骤摘要】
【专利摘要】本申请公开了一种数据查询方法及装置,包括将查询语句分解为一个或一个以上查询子句;遍历查询子句,查询子句与元数据匹配,将其替换为元数据中保存的执行结果;否则执行查询子句并更新元数据;将最终的执行结果用于主查询得到查询结果。本申请将已经执行过的查询子句以及其执行结果作为元数据进行管理,对于当前会话或者不同会话中相同的查询子句,直接将查询子句替换为元数据中保存的执行结果,避免了查询子句的重复执行,从而更大限度提高了整体系统的查询性能。同时,与现有查询语句层面的优化相比,本申请的查询优化粒度更加细,更加适合于数据仓库应用中的大数据查询,从而进一步提高了整体系统的查询性能。【专利说明】一种数据查询方法及装置
本申请涉及数据存储和分析技术,尤指一种在数据仓库应用中,针对海量、读多写 少的数据进行数据查询方法及装置。
技术介绍
在科学研究、计算机仿真、互联网应用、电子商务等诸多应用领域,数据量正在以 极快的速度增长。大数据时代的信息爆炸,尤其是非结构化数据的爆炸性增长,正在深刻影 响着整个数据存储和分析领域。 为了满足新兴的业务需求,开始逐渐摒弃传统的数据处理方式,转而尝试新的模 式,对包括非结构化数据在内的各种类型数据进行访问、处理和分析。在数据存储和分析领 域,MapReduce无疑是最受关注的新一代技术,利用MapReduce编程框架,开发人员可以开 发出跨处理器分布式集群或独立计算机的、能够并行处理海量非结构化数据的程序。其中, MapReduce是一种编程模型,用于大规模数据的并行运算,Map表示映射,Reduce表示化简。 在大数据时代,传统的结构化查询语言(SQL, Structure Query Language)已经 不能满足所有的业务需求,而尽管MapReduc的应用非常广泛,但是,MapReduc框架暴露出 来的编程接口仍然比较低级,开发比较耗时,并且代码很难复用。继而,转向能够将用户编 写的SQL转化为相应的MapReduce程序,利用MapReduce框架执行这些任务以对Hadoop分 布式文件系统(HDFS)上的海量数据进行处理的程序。目前应用最广泛的是Facebook贡献 的Hive。基于MapReduce的Hive在扩展性与容错性方面有强大的优势。其中,Hive是基 于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完 整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 在企业数据挖掘过程中,通常每天执行的挖掘任务都会成百上千,甚至达到上万, 所以也就难免存在不同的挖掘任务中重复计算的问题,比如:工程师A需要从表S1和表S2 中筛选出一批条件W的数据,然后与表S3进行组合再生成工程师A想要的数据。同时,工 程师B也需要从表S1和表S2中用相同条件W筛选出相同的数据,然后与表X组合,再生成 工程师B想要的数据。在这两个工程师间通常并不知道彼此有部分相同的需求,所以在生 产任务中,相同的计算会进行两次,相同的公共查询信息被重复地访问。无疑,这样降低了 整体系统的查询性能。
技术实现思路
为了解决上述技术问题,本申请提供了一种数据查询方法及装置,能够避免公共 查询信息的重复运行,从而提高整体系统的查询性能。 为了达到本申请目的,本申请提供了一种数据查询方法,其特征在于,包括:将查 询语句分解为一个或一个以上查询子句; 遍历查询子句,查询子句与元数据匹配,将其替换为元数据中保存的执行结果,否 贝1J,执行查询子句并更新元数据; 将最终得到的执行结果用于主查询得到查询结果。 该方法之前还包括:获取查询语句,验证查询语句的有效性与正确性。 该方法还包括:对所述查询语句进行规范化与查询优化。 所述遍历查询子句具体包括: 对所述查询子句构成的查询子句算子树进行后序遍历,利用查询子句的三元组信 息与元数据进行匹配, 如果所述查询子句的三元组信息在元数据库中存在,则该查询子句的三元组信息 与元数据匹配,将所述查询子句替换为对应的执行结果;重置该元数据的失效时间; 如果所述查询子句的三元组信息在元数据库中不存在,则该查询子句的三元组信 息与元数据不匹配,执行所述查询子句,持久化执行结果,并在元数据中添加对应的三元组 信息;设置该元数据的失效时间,以及该查询子句在查询子句算子树的层级。 所述查询子句的三元组信息与元数据匹配时,还包括:将所述执行结果对应的记 录被使用次数加一。 在所述将查询语句分解为多个查询子句时,该方法还包括:优化所述查询子句。 该方法还包括:预先设置查询子句优化策略; 所述优化查询子句包括:按照所述查询子句优化策略对分解得到的查询子句进行 优化,剔除不必要的查询子句。 所述查询子句优化策略包括: 当查询子句的输入集与输出集一致时,删除所述查询子句;和/或, 当查询子句间的区别在于输出列,且第一查询子句的输出列是第二查询子句的输 出列的子集时,执行第二查询子句,将第二查询子句的输出结果集并入第一查询子句;和/ 或, 当查询子句间的区别在于输出列,且第一查询子句的输出列与第二查询子句的输 出列互为补集时,合并第一查询子句和第二查询子句;和/或, 当查询子句的输入集相同,过滤条件不同时,提取所述输入集相同,过滤条件不同 的各查询子句的公共部分组成新的查询子句,执行该新的查询子句,并将其输出结果集分 别并入所述输入集相同,过滤条件不同的各查询子句;和/或, 将所述存在或关系的查询子句拆分为两个或两个以上查询子句。 所述元数据存储在元数据库中;该方法还包括对所述元数据库进行管理: 当所述元数据对应的失效时间到期,或生成所述查询子句结果数据的用户自定义 函数UDF过期,或生成所述查询子句结果数据的输入数据集中其中一个发生数据变更,或 所述查询子句的输出集被用户强行回收时,删除失效的查询子句; 和 / 或, 按照原先设置的间隔时间扫描元数据,删除失效的查询子句信息。 所述删除失效的查询子句包括:删除所有依赖于所述查询子句的执行结果的查询 子句; 如果所述查询子句对应的执行结果为中间结果,则同时从分布式文件存储系统中 删除该中间结果。 所述元数据包括:与各查询子句对应的三元组信息、三元组信息对应的查询子句 的失效时间、查询子句被使用次数、查询子句在查询节点树的层级、查询结果标识。 所述三元组包括输入集、输出集,以及完成输入到输出转换的操作指令集。 本申请提供一种数据查询装置,至少包括元数据库、分解模块、处理模块和输出模 块,其中, 元数据库,用于存储元数据,包括与各查询子句对应的三元组信息,三元组信息对 应的查询子句的失效时间、查询子句被使用次数、查询子句在查询节点树的层级、查询结果 标识信息; 分解模块,用于将查询语句分解为一个或一个以上查询子句; 处理模块,用于遍历查询子句,查询子句与元数据匹配,将其替换为元数据中保存 的执行结果;否则,执行查询子句并更新元数据; 输出模块,用于将最终得到的执行结果用于主查询得到查询结果。 该装置还包括:获本文档来自技高网
...
一种数据查询方法及装置

【技术保护点】
一种数据查询方法,其特征在于,包括:将查询语句分解为一个或一个以上查询子句;遍历查询子句,查询子句与元数据匹配,将其替换为元数据中保存的执行结果,否则,执行查询子句并更新元数据;将最终得到的执行结果用于主查询得到查询结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:乔平夏晨傅跃兵
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1