[发明专利]集群数据库系统环境下的数据查询解析方法在审
申请号: | 201310274920.8 | 申请日: | 2013-07-02 |
公开(公告)号: | CN103310011A | 公开(公告)日: | 2013-09-18 |
发明(设计)人: | 李晋钢;宋怀明;苗艳超;刘新春;邵宗有 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京德恒律治知识产权代理有限公司 11409 | 代理人: | 章社杲;孙征 |
地址: | 100193 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 集群 数据库 系统 环境 数据 查询 解析 方法 | ||
技术领域
本发明涉及数据处理技术领域,更具体地,涉及一种集群数据库系统环境下的数据查询解析方法。
背景技术
集群数据库系统通常由采用无共享结构(Shared-nothing)互联的多个数据库节点构成,并且,数据以分布式方式存储在各数据库节点中。
通常在集群数据库系统中,查询语句经过解析(可包括词法分析,语法分析和语义分解和优化),分解成查询执行任务,提交给数据库节点执行查询以获得查询结果。现有一种执行查询的方法是嵌套查询,例如,在一个SELECT语句的WHERE子句、FROM子句或HAVING子句中嵌套另一个SELECT语句的查询称为嵌套查询(又称子查询)。现有的嵌套查询会在多个数据表和数据库节点进行查询和交换,通常会导致复杂的查询算法,从而严重影响查询效率。
因此,需要一种改进的嵌套查询执行方式以实现集群数据库系统环境下的数据查询。
发明内容
为解决现有技术存在的问题,本发明提供了一种集群数据库系统环境下的数据查询解析方法,包括:
接收到来自客户端的为第一结构化查询语言SQL语句的查询请求后,对所述第一SQL语句进行语法解析,使得语法解析后的第一SQL语句为以SelectStmt结构体表示的语法树,其中,所述SelectStmt结构体包括Select链表、From链表、Where链表、Groupby链表、Having链表、Orderby链表和Union链表;
对所述语法树进行分析并构建相应的查询任务树;
根据预确定的优化规则对所述查询任务树进行优化并生成查询任务流;其中:
所述查询任务树包括由多层级构成的多个查询任务节点,同一层级包括一个或多个查询任务节点,其中,一个查询任务节点对应一个查询任务,以及,同一层级的多个查询任务节点生成为相互间并行执行的查询任务。
在可选实施例中,对所述语法树进行分析并构建相应的查询任务树包括:在判断出第一查询任务节点小数据表嵌套子查询时,提取所述第一查询任务节点中小数据表嵌套子查询语法树并构建为所述第一查询任务节点下的子节点,将查询结果集分发类型标记为ALL。
在可选实施例中,对所述语法树进行分析并构建相应的查询任务树包括:在判断出第二查询任务节点含大数据表嵌套子查询时,提取所述第二查询任务节点中大数据表嵌套子查询语法树并构建为所述第二查询任务节点下的子节点,将查询结果集分发类型标记为HASH。
在可选实施例中,根据预定的优化规则对所述查询任务树进行优化并生成查询任务流,包括:判断未处理的查询任务节点中是否有嵌套查询;在判断为是时,依次判断所述Select链表、From链表、Where链表、Having链表和Union链表中是否有嵌套查询;以及,对判断出有嵌套查询的链表构建对应的子查询任务树,并将所构建的子查询任务树插入到查询任务队列中,以及设定将与所述子查询任务树对应的子查询结果更新到该有嵌套查询的链表的查询结果组中。
在可选实施例中,所述预定的优化规则包括以下之一或任意组合:
每一个查询任务或子查询任务针对预设的一组数据库节点进行查询,其中,每一数据大表在该组数据库节点中的各数据库节点的分布规则相同,每一数据小表在该组数据库节点中的各数据库节点上设置有数据副本;
将过滤后的查询要求下发给子查询任务节点;
属于一个数据表的子查询结果集采用统一的别名。
在可选实施例中,对判断出有嵌套查询的链表构建对应的子查询任务树,并将所构建的子查询任务树插入到查询任务队列中,以及设定将与所述子查询任务树对应的子查询结果更新到该有嵌套查询的链表的查询结果组中,包括:
判断所述嵌套查询是否与外部数据表关联,
在判断出有关联时,构建子查询任务树节点,作为外部数据表查询任务树节点下的子节点,以及根据所述外部数据表的属性标注该查询结果集分发类型;
在判断出无关联时,构建子查询任务树节点,作为外部数据表查询任务树节点下的子节点,以及将该查询结果集分发类型标注为赋值方式ASSIGN。
在可选实施例中,设定将与所述子查询任务树对应的子查询结果更新到该有嵌套查询的链表的查询结果组中,包括:
在对子查询结果集采用统一的别名时,将所述子查询结果集的第一属性信息更新到相对应的后续查询子任务中,其中,所述子查询结果集的第一属性信息包括子查询结果集列以及子查询结果集别名。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310274920.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:服务搜索方法、系统和搜索服务器
- 下一篇:文档加载方法及系统