[发明专利]一种拟态数据库的SQL转译方法和系统有效
申请号: | 202110815162.0 | 申请日: | 2021-07-19 |
公开(公告)号: | CN113467785B | 公开(公告)日: | 2023-02-28 |
发明(设计)人: | 张帆;谢光伟;丁帆;方子茁 | 申请(专利权)人: | 上海红阵信息科技有限公司 |
主分类号: | G06F8/51 | 分类号: | G06F8/51;G06F8/41 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 张立强 |
地址: | 201100 上海市闵行区联航路1588*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 拟态 数据库 sql 转译 方法 系统 | ||
本发明提供一种拟态数据库的SQL转译方法和系统,该方法包括:对外部输入的原始SQL指令进行词法分析、语法分析以及错误检测,若有词法或语法错误,则提示异常,若无词法或语法错误,则生成所述原始SQL指令的抽象语法树AST;遍历抽象语法树AST,将抽象语法树AST的节点信息转化为自定义的数据对象;遍历自定义的数据对象,通过访问拟态数据库中元数据库的元数据信息,进行语义分析,根据语义分析结果对自定义的数据对象节点信息进行改写;遍历改写前的数据对象或改写后的数据对象,将其拼接为目标数据库的等效、合法的命令或SQL语句。
技术领域
本发明涉及拟态数据库技术领域,尤其涉及一种拟态数据库的SQL转译方法和系统。
背景技术
基于拟态数据库技术,需要选择多个异构数据库作为执行体,并选定其中之一作为对外拟态化展现。然而各数据库SQL指令之间存在差异,并没有统一API访问接口。对于异构执行体池中多个与外部表象数据库不一致的数据库,则需要对输入的相应SQL指令进行转译操作,并保证其执行结果在各异构数据库中保持一致。同时,SQL作为一种体量较大的语法种类,还需考虑其转译的效率和耗时问题。
发明内容
针对目前拟态数据库中各异构数据库之间存在的转译问题,本发明提供一种拟态数据库的SQL转译方法和系统。
一方面,本发明提供一种拟态数据库的SQL转译方法,包括:
对外部输入的原始SQL指令进行词法分析、语法分析以及错误检测,若有词法或语法错误,则提示异常,若无词法或语法错误,则生成所述原始SQL指令的抽象语法树AST;
遍历抽象语法树AST,将抽象语法树AST的节点信息转化为自定义的数据对象;
遍历自定义的数据对象,通过访问拟态数据库中元数据库的元数据信息,进行语义分析,根据语义分析结果对自定义的数据对象节点信息进行改写;
遍历改写前的数据对象或改写后的数据对象,将其拼接为目标数据库的等效、合法的命令或SQL语句。
进一步地,所述根据语义分析结果对自定义的数据对象节点信息进行改写,具体包括:
若原始的SQL指令为元信息的相关指令,则直接输出语义分析结果;若原始的SQL指令为非元信息的相关指令,则对相关数据对象节点信息进行改写,以确保异构数据库之间的数据一致性。
进一步地,通过字符串拼接的方式将改写前的数据对象或改写后的数据对象重新组装为目标数据库的等效、合法的命令或SQL语句。
另一方面,本发明提供一种拟态数据库的SQL转译系统,包括:SQL解析模块、SQL改写模块和SQL翻译模块;
SQL解析模块,用于对外部输入的原始SQL指令进行词法分析、语法分析以及错误检测,若有词法或语法错误,则提示异常,若无词法或语法错误,则生成所述原始SQL指令的抽象语法树AST;遍历抽象语法树AST,将抽象语法树AST的节点信息转化为自定义的数据对象;
SQL改写模块,用于遍历SQL解析模块提供的数据对象,通过访问拟态数据库中元数据库的元数据信息,进行语义分析,根据语义分析结果对SQL解析模块生成的数据对象节点信息进行改写;
SQL翻译模块,用于遍历SQL解析模块提供的数据对象或SQL改写模块改写后的数据对象,将其拼接为目标数据库的等效、合法的命令或SQL语句。
进一步地,所述SQL改写模块包括元数据访问单元和改写单元;
所述元数据访问单元,用于访问拟态数据库中元数据库的元数据信息进行语义分析,将语义分析结果发送至改写单元;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海红阵信息科技有限公司,未经上海红阵信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110815162.0/2.html,转载请声明来源钻瓜专利网。