[发明专利]基于Flex和Bison的SQL语法树解析方法在审
申请号: | 202110312632.1 | 申请日: | 2021-03-24 |
公开(公告)号: | CN113032366A | 公开(公告)日: | 2021-06-25 |
发明(设计)人: | 王斌;赵智博;曲彦秋;杨晓春 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F16/22;G06F16/242;G06F40/211;G06F40/253 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李在川 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 flex bison sql 语法 解析 方法 | ||
本发明提供一种基于Flex和Bison的SQL语法树解析方法,首先获取数据库历史查询文件,收集指定数据库实例对应的SQL语句,然后对每条SQL语句进行词法分析,根据构词规则将SQL语句分割为相应的记号序列,其次将词法分析处理得到的记号序列进行语法分析,根据SQL语法规则将记号序列转化为语法树形式,最后将语法树结构转化为JSON格式进行持久化的保存,本发明可以更加准确的构建出候选索引集,而且通过语法树结构还可以了解SQL语句的执行计划,对于任意的SQL语句,即使是复杂的多表查询或者嵌套查询等语句,也可以通过BNF文法转化成SQL语法树,并且由JSON格式进行保存。
技术领域
本发明涉及数据库索引调优以及语法树解析技术领域,具体涉及一种基于Flex和Bison的SQL语法树解析方法。
背景技术
数据库索引调优技术是通过分析数据库中一段时间内的查询工作负载(queryworkload),构建出一组合理的候选索引集,使得查询优化效果以及索引维护代价达到平衡的技术。在数据库索引调优技术中,离不开结构化查询语言SQL的解析。
语法树(syntax tree)或者称为抽象语法树(abstract syntax tree,AST)是编译原理中的概念,其作用是将抽象的语法结构用树状形式来表现出来,树上的每个非叶子节点都是抽象语法中的一个运算符,叶子节点代表抽象语法树的具体对象。使用语法树可以让机器读懂抽象语法的内在含义,以及抽象语法的执行顺序。语法树的应用非常广泛,例如编程语言的源代码解析、表达式的分析,甚至是自然语言处理、机器翻译技术,都需要用到语法树技术。结构化查询语言(Structured Query Language)简称SQL,SQL语法树解析对于SQL语句的分析以及明确SQL语句的查询执行路径具有重要的意义。
生成语法树通常都是需要两个过程:词法分析和语法分析。词法分析的任务是从左到右逐个字符地读入文件,即对文件中的字符流进行扫描然后根据构词规则识别单词。语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语。通常做法是由专业的编译器编程人员编写词法分析器和语法分析器来解析SQL语句生成语法树。但是词法分析器以及语法分析器源代码过于复杂,不利于快速开发,而且后期的维护工作也十分繁琐。
Flex和Bison是用来生成词法分析器和语法分析器源程序的工具,它们所生成的程序能够处理结构化的输入。最初Flex和Bison用来生成编译器的,后来也应用到了其他很多领域。其中词法分析就是将输入分割成一个个有意义的词块,称为记号(token)。任何flex词法分析器的模式都使用了正则表达式语言,正则表达式使用元语言来描述想要匹配的模式。元语言使用标准的文本字符,一部分代表它们自身而另外一部分则代表模式。语法分析器则是确定这些记号是如何彼此关联的。Bison基于给定的巴科斯范式BNF文法来生成一个可以识别这个语法中有效语句的语法分析器。
当前数据库索引调优算法中,针对于SQL语句的解析通常是统计出SQL语句中出现的属性,然后进行组合得到候选索引集。该方法的不足之处在于没有考虑SQL语句自身的结构,得到的候选索引不是最优解。
发明内容
针对现有技术的不足,本发明提出一种基于Flex和Bison的SQL语法树解析方法,包括:
步骤1:获取数据库历史查询文件,收集指定数据库实例对应的SQL语句,所述SQL语句包括insert语句、delete语句、update语句以及select语句;
步骤2:对每条SQL语句进行词法分析,根据构词规则将SQL语句分割为相应的记号;
步骤3:将词法分析处理得到的记号序列进行语法分析,根据SQL语法规则将记号序列转化为语法树形式;
步骤4:将语法树结构转化为JSON格式;
步骤5:重复执行步骤2至步骤4,直到处理完所有的SQL语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110312632.1/2.html,转载请声明来源钻瓜专利网。