System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种面向国产数据库迁移的SQL自动翻译方法及系统技术方案_技高网

一种面向国产数据库迁移的SQL自动翻译方法及系统技术方案

技术编号:40266772 阅读:9 留言:0更新日期:2024-02-02 22:54
本发明专利技术公开了一种面向国产数据库迁移的SQL自动翻译方法及系统,所述方法利用深度学习的transformer模型,通过训练一个神经网络来学习Oracle和国产数据库之间的SQL语句转换规则,实现自动翻译和转换。所述系统包括服务端连接器、监听器、SQL转发器、全局缓存、解析器、校验器、翻译器、返回器。使用该SQL自动翻译系统能够自动化地进行SQL语句的自动翻译和转换,提高转换效率和准确性,降低了因手动转换可能带来的错误。本发明专利技术所述方法具有可迁移性,通过调整训练数据和模型参数,可以适应不同版本和类型的Oracle数据库和国产数据库,实现对新特性和语法的支持和扩展。

【技术实现步骤摘要】

本专利技术属于数据库领域,尤其涉及一种面向国产数据库迁移的sql自动翻译方法及系统。


技术介绍

1、目前已基本建成基于国网云平台采用微服务架构的能源互联网电力营销系统(营销2.0),正逐步开展全网省的推广运营工作。营销2.0作为营销传统业务模式向“互联网+”新业务模式转型的平台,广泛应用“大云物移智”新技术成果,并积极引进互联网企业架构理念,统筹考虑技术先进性、实用性和开放性,打造“活前端、大中台、强后台”的架构模式。以企业核心业务能力为基础,构建企业级大中台,支撑前端应用的灵活创新,并实现核心业务云化,创新应用属地化的柔性应用模式,形成开放生态,为客户创新赋能。

2、长期以来,oracle数据库因其功能全面、性能稳定、资料丰富和相关工具全面等优点,在国网信息系统中被广泛应用,并形成以oracle为重要组成部分的信息化、数字化系统架构。但经江浙皖鲁闽等多地实际应用后评估发现,oracle数据库在业务支撑、系统发展、运行维护三个方面存在着较大局限性,严重制约了营销2.0的发展。而另一方面国产数据库,特别是以ob、tid为代表的分布式国产数据库则日臻成熟,可弥补oracle在营销2.0中的缺憾。此外,在当前国内外形势下,营销2.0数据库国产化替代是必然趋势,意义重大。数据库国产化要求将现有的oracle数据库直接替换为国产数据库,传统的替换方案包括应用端改造和数据库端优化,如果采用应用端改造方式则涉及大量应用程序的修改,需要解决sql语句兼容性问题,同时修改过程会涉及测试和试运行,无论是时间成本还是金钱成本都可能超出客户的承受范围。此外,改写后的应用程序可能存在未发现的潜在bug,对于需要不停机运行的业务,存在业务中断的风险。虽然部分应用程序可以通过类似mybatis-plus这种数据库连接工具屏蔽一部分不同数据库之间语法的差异,但是这种方式有两种缺陷:其一:只适用于简单地sql语句,很难描述复杂的语法;其二:存在很高的局限性,这种方式只能兼容工具预置的数据库类型,无法满足营销2.0的需求

3、因此,当前需要构建一种面向国产数据库迁移的sql自动翻译方法,在不修改当前营销2.0系统业务处理逻辑和正常运行的前提下,实现业务中台服务能够“无感”替换多种国产数据库

4、专利技术目的

5、本专利技术的目的即在于解决现有技术中所存在的问题,提供一种面向国产数据库迁移的sql自动翻译方法,以解决oracle数据库迁移到国产数据库时需要手动修改和调整sql语句耗费大量人力物力,容易出错的问题,实现将oracle数据库的sql语句自动翻译为国产数据库的sql语句,提高数据库系统之间的兼容性和数据共享


技术实现思路

1、本专利技术提供了一种面向国产数据库迁移的sql自动翻译方法,该方法包括以下步骤:

2、步骤1、接收前台微服务sql访问请求;

3、步骤2、使用深度学习模型将请求sql语句翻译为适用于目标国产数据库的sql语句;

4、步骤3、将翻译后的sql发送给目标国产数据库;

5、步骤4、目标国产数据库执行翻译后的sql语句并返回执行结果

6、优选地,在步骤3前还包括以下步骤:

7、判断当前数据库迁移是否完成,如完成则判断当前全局缓存是否存在已翻译的sql;如不存在则使用预置的sql翻译器进行翻译,具体过程是将适用于oracle数据库的sql翻译为国产数据库可以执行的sql的过程

8、优选地,所述将适用于oracle数据库的sql翻译为国产数据库可以执行的sql的过程包括以下步骤:

9、步骤s1、将适用于oracle数据库的sql语句解析为抽象语法树;

10、步骤s2、对抽象语法树进行语法解析;

11、步骤s3、判断当前sql是否符合sql语法规则,如符合则将所述抽象语法树线性化并传入深度学习模型中进行翻译;

12、步骤s4、将翻译的结果传入目标国产数据库进行执行。

13、优选地,所述步骤s4进一步包括:

14、步骤s41、对所述翻译后的sql解析为抽象语法树;

15、步骤s42、根据抽象语法树生成逻辑执行计划并对其优化;

16、步骤s43、根据优化的结果生成物理执行计划并对其优化生成最终执行计划;

17、步骤s44、将最终执行计划执行,并返回执行结果。

18、根据本专利技术的另一个方面,提供了一种面向国产数据库迁移的sql自动翻译系统,包括:

19、服务端连接器,用于接收前台微服务传递的sql访问请求;

20、监听器,用于监听当前数据库是否处于迁移过程,并给sql转发器发送信号;

21、sql转发器,用于判断当前迁移数据是否完成,并根据所述迁移完成情况判断要访问的目标数据库;

22、全局缓存,用于保存翻译过的目标国产数据库适配的sql语句,由sql转发器进行访问;

23、解析器,用于将适用于oracle数据库的sql语句解析为抽象语法树;

24、校验器,用于判断当前sql是否符合sql语法规则,根据校验结果来决定是否执行翻译;

25、翻译器,用于将所述抽象语法树线性化并根据预训练完成的模型进行翻译,并将翻译结果保存到全局缓存中并交给目标国产数据库进行执行;

26、返回器,用于在目标数据库执行语句后返回执行结果。

27、根据本专利技术的另一个方面,提供了一种使用上述sql自动翻译系统进行sql自动翻译的方法,包括以下步骤:

28、步骤1、通过所述服务端连接器,接收营销2.0前台微服务发送的sql请求,并传给sql转发器。

29、步骤2、判断当前数据迁移是否完成,具体过程是,通过系统内置监听器信号机制来获取当前数据迁移进度,根据数据迁移进度来判断是否需要访问国产数据库;

30、步骤3、判断当前sql及其对应的翻译是否存在缓存中;

31、步骤4、解析前台微服务的sql访问请求并进行语法分析;

32、步骤5、使用翻译器进行翻译;

33、步骤6、将所述sql及其翻译结果存入缓存同时移交给国产数据库执行;

34、步骤7:返回目标数据库执行结果。

35、优选地,所述步骤3的具体过程是,所述sql自动翻译系统通过全局缓存存储oracle的sql语句及其对应的翻译结果,通过接收前台微服务的sql查询请求,优先访问全局缓存,加速数据查询效率。

36、优选地,所述步骤4的具体过程是,在确定所述前台微服务sql需要执行翻译流程后,需要先将其解析为抽象语法树并对其进行语法分析检查,判断其是否符合语法规范,根据校验结果来决定是否执行翻译流程。

37、优选地,所述步骤5的具体过程是,翻译器将所述抽象语法树线性化并根据预训练完成的模型进行翻译,并将翻译结果保存到全局缓存中并交给目标国产数据库进行执行;所述翻译器本文档来自技高网...

【技术保护点】

1.一种面向国产数据库迁移的SQL自动翻译方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种面向国产数据库迁移的SQL自动翻译方法,其特征在于,所述步骤2进一步包括:

3.根据权利要求1所述的一种面向国产数据库迁移的SQL自动翻译方法,其特征在于,所述的深度学习模型的构建进一步包括以下子步骤:

4.根据权利要求1所述的一种面向国产数据库迁移的SQL自动翻译方法,其特征在于,在步骤3前还包括以下步骤:

5.根据权利要求4所述的一种面向国产数据库迁移的SQL自动翻译方法,其特征在于,所述将适用于Oracle数据库的SQL翻译为国产数据库可以执行的SQL的过程包括以下步骤:

6.根据权利要求5所述的一种面向国产数据库迁移的SQL自动翻译方法,其特征在于,所述步骤S4进一步包括:

7.一种面向国产数据库迁移的SQL自动翻译系统,其特征在于,包括:

8.一种使用权利要求7所述SQL自动翻译系统进行SQL自动翻译的方法,其特征在于,包括以下步骤:

9.根据权利要求8所述的进行SQL自动翻译的方法,其特征在于,所述步骤3的具体过程是,所述SQL自动翻译系统通过全局缓存存储Oracle的SQL语句及其对应的翻译结果,通过接收前台微服务的SQL查询请求,优先访问全局缓存,加速数据查询效率。

10.根据权利要求8所述的进行SQL自动翻译的方法,其特征在于,所述步骤4的具体过程是,在确定所述前台微服务SQL需要执行翻译流程后,需要先将其解析为抽象语法树并对其进行语法分析检查,判断其是否符合语法规范,根据校验结果来决定是否执行翻译流程。

11.根据权利要求8所述的进行SQL自动翻译的方法,其特征在于,所述步骤5的具体过程是,翻译器将所述抽象语法树线性化并根据预训练完成的模型进行翻译,并将翻译结果保存到全局缓存中并交给目标国产数据库进行执行;所述翻译器使用深度学习transformer模型,通过训练transformer模型学习Oracle和国产数据库之间的SQL语句转换规则,实现自动翻译和转换;所述transformer模型是一种序列到序列的神经网络结构,其输入输出序列都是可变长度。

12.根据权利要求8所述的进行SQL自动翻译的方法,其特征在于,所述步骤6进一步包括:所述系统翻译器完成翻译后需要将翻译结果输入全局缓存中,以加快后期访问效率,同时将翻译后的SQL送入国产数据库,使用其内置的执行引擎生成最终执行计划进行执行。

...

【技术特征摘要】

1.一种面向国产数据库迁移的sql自动翻译方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种面向国产数据库迁移的sql自动翻译方法,其特征在于,所述步骤2进一步包括:

3.根据权利要求1所述的一种面向国产数据库迁移的sql自动翻译方法,其特征在于,所述的深度学习模型的构建进一步包括以下子步骤:

4.根据权利要求1所述的一种面向国产数据库迁移的sql自动翻译方法,其特征在于,在步骤3前还包括以下步骤:

5.根据权利要求4所述的一种面向国产数据库迁移的sql自动翻译方法,其特征在于,所述将适用于oracle数据库的sql翻译为国产数据库可以执行的sql的过程包括以下步骤:

6.根据权利要求5所述的一种面向国产数据库迁移的sql自动翻译方法,其特征在于,所述步骤s4进一步包括:

7.一种面向国产数据库迁移的sql自动翻译系统,其特征在于,包括:

8.一种使用权利要求7所述sql自动翻译系统进行sql自动翻译的方法,其特征在于,包括以下步骤:

9.根据权利要求8所述的进行sql自动翻译的方法,其特征在于,所述步骤3的具体过程是,所述sql自动翻译系统通过全局缓存存储oracl...

【专利技术属性】
技术研发人员:林鸿田田于雪霞李廷顺周景张小武苏占文刘俊艳蒋鸿城刘歆一张晶高莹
申请(专利权)人:北京中电普华信息技术有限公司
类型:发明
国别省市:

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

1