[发明专利]面向海量分布式关系数据库的游标构造方法在审

专利信息
申请号: 201410748863.7 申请日: 2014-12-04
公开(公告)号: CN104504001A 公开(公告)日: 2015-04-08
发明(设计)人: 刘文洁;周兴琼;李战怀;高锦涛;邬娜;杜彦荣;李建强 申请(专利权)人: 西北工业大学
主分类号: G06F17/30 分类号: G06F17/30
代理公司: 西北工业大学专利中心61204 代理人: 王鲜凯
地址: 710072陕*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种面向海量分布式关系数据库的游标构造方法,用于解决现有OceanBase中SQL处理流程对于游标功能构造缺失的技术问题。技术方案是以SQL92标准语法为依据,基于海量分布式数据库的架构,设计了完整的游标构造方法,根据游标常用关键字,构造了统一的语法树、逻辑计划和物理计划,并设计了游标SQL的执行流程。该方法能够完成分布式数据库的游标功能并在大数据量查询时,具有较优的查询性能。通过与商用数据库DB2在100万数据集上的游标执行性能对比,本发明方法构造的游标性能比DB2的查询速度快70倍左右。
搜索关键词: 面向 海量 分布式 关系 数据库 游标 构造 方法
【主权项】:
一种面向海量分布式关系数据库的游标构造方法,其特征在于包括以下步骤:步骤一、构建语法树;语法树是SQL语句经过词法和语法解析后生成的数据结构,根据SQL不同语法树有所不同;游标涉及的关键字包括:Declare、Open、Fetch、Close和Deallocate,游标的名称是所有节点共通的部分,用来区分不同的游标;此外,Declare语句中要包含Select查询部分,需要有第二个子节点,Fetch语句中要输入获取数据的方向,从第一条记录开始取数据或者从最后一条记录开始取数据;具体生成流程如下:1.Input:游标关键字类型2.生成根节点(Cursor keyword)node;3.生成子节点children_[0],存放游标定义名称cursor_name;4.If(游标关键字类型=Declare或Fetch)5.语法树生成完成作为游标语法树,其数据结构分为根节点和子节点,根节点存放游标关键字类型,子节点为childen_[0]和childen_[1];childen_[0]是游标的每个关键字必须构造的节点,主要是存储游标名称;childen_[1]只有Declare和Fetch关键字需要构造,Declare用来构造语句中所包含的Select查询的相关信息(select)node;Fetch用来存储取得数据方向的信息fetch_direction;步骤二、构建逻辑计划;逻辑计划是根据语法树生成的数据结构,需要根据语法树内容,将SQL语句中所涉及到的表、字段和表达式解析出来并判断有效性,但逻辑计划不可执行;在一个逻辑计划中,每一个查询有一个唯一标识query_id,每一张表有一个唯一的标识tid,每一个列有一个唯一的标识cid,每一个表达式有一个唯一的标识eid;逻辑计划生成过程如下:1.Input:游标语法树2.生成逻辑计划根节点Logic_plan,创建存储容器ObVector<ObBasicStmt>stms_;3.生成子节点stms_[0];4.生成游标容器cursor_stmt,存放游标查询信息query_id,游标名称curor_name,查询语句类型stmt_type;5.If(游标关键字类型=Declare),生成declare_query_id,存入cursor_stmt;6.If(游标关键字类型=Fetch),生成fetch_direction,存入cursor_stmt;7.stms_[0]=cursor_stmt;8.If(游标关键字类型=Declare){生成子节点children_[1];children_[1]=(select)node;}9.逻辑计划生成完成;游标逻辑计划的构造也包含根节点和子节点生成,根节点中包含逻辑计划容器ObVector<ObBasicStmt>stms_,子节点包括stms_[0]和stms_[1],stms_[0]存放查询标识query_id、游标名称cursor_name、逻辑计划类型stmt_type,当游标关键字为Declare和Fetch时,还要生成declare_query_id和fetch_direction;stms_[1]仅在关键字为Declare时生成,保村其中查询语句的相关信息select_stmt;步骤三、构建查询物理计划;物理计划是一系列数据操作的有序集合,由逻辑计划解析而成,是可执行的最终数据结构;物理计划按照物理操作符的顺序执行,由于Oceanbase并未支持游标,因此所有的物理操作符需要重新设计;游标的物理操作符分别定义为:ObDeclare、ObOpen、ObFetch、ObClose和ObDeallocate;物理计划的生成流程如下:1.Input:游标逻辑计划2.生成根节点ObPhysicalPlan,保存主查询信息Main_query;3.生成子节点cursor_phyOp,保存游标物理操作符;4.If(游标关键字类型=Declare){生成子节点child_op;child_op=Select物理操作符;}5.物理计划生成完成;游标的物理计划中,cursor_phyOp代表游标的物理操作符,根据关键字的不同有所变化,可选节点信息是针对declare节点中所包含的Select查询语句的物理操作符信息,由于Select物理操作符的设计在Oceanbase中已经完成,因此不加以展开;步骤四、游标执行流程设计;游标的执行流程类似于其他SQL的执行流程,构造完游标各个阶段的数据结构之后,完成游标功能的执行;游标执行流程如下:1.Input:游标SQL2.词法语法解析,生成游标语法树;3.逻辑计划生成,输出游标逻辑计划;4.物理计划生成,输出游标物理计划;5.物理计划执行,输出查询结果,返回客户端;游标中Declare、Open、Fetch、Close和Deallocate语句都是新加的SQL语句;除Declare语句不执行物理计划,Open、Fetch、Close和Deallocate语句都需要执行物理计划来生成对于数据结构;Declare语句是存储Select语句的物理计划和游标的名字;Open语句通过游标名找到与之对应的Select语句物理计划并执行,缓存Select语句的结果集;对于结果集的缓存方式,考虑了内排和外排两种情况:当内存可以放下全部数据时,排序只有一路;当内存不能放下全部数据时,排序会是多路,中间结果刷到外存上;Fetch语句通过游标名找到与之相关的结果集,单向单行地取结果集中的一行数据;Close语句通过游标名找到与之相关的结果集,关闭游标并释放结果集;Deallocate语句通过游标名找到与之相关的物理计划,删除物理计划,释放游标。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学;,未经西北工业大学;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201410748863.7/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top