异构数据库SQL语句适配方法、装置和设备与流程

文档序号:36253610发布日期:2023-12-03 09:15阅读:36来源:国知局
异构数据库的制作方法

本技术涉及数据库,具体涉及一种异构数据库sql语句适配方法、装置和设备。


背景技术:

1、目前,不同数据库之间的应用迁移是企业经常面临的一个难题。比如要从oracle数据库迁移到polardb等国产化数据库时,需要解决部分语法、语义不兼容的情况。这种情况下,原来在oracle源库上运行的sql(结构化查询语言(structured query language),简称sql)语句,需要通过改写,实现在目标库上相同的语义。如:select max(count(*))fromt group by t.c1这种语句在oracle数据库是支持的,在其他数据库(如polardb)可能还不支持,需要改写成:select max(c)from(select count(*)from t group by t.c1)as q(c)才能在polardb数据库中运行。

2、现行的解决方案需要改动大量的应用代码和sql语句,耗费大量的人力和物力。并且业务方一般有用一套代码同时支持运行不同数据库的要求,修改代码导致了维护多套代码的负担。即现行的解决方案中应用在不同数据库之间的迁移时,应用迁移效率低,且代码的开发和维护成本高。


技术实现思路

1、本技术实施例提供一种异构数据库sql语句适配方法、装置和设备,用以解决现行的解决方案中应用在不同数据库之间的迁移时,应用迁移效率低,且代码的开发和维护成本高的技术问题。

2、第一方面,本技术实施例提供一种异构数据库sql语句适配方法,包括:

3、获取源端数据库发送的待匹配sql语句;

4、基于预设规则检测所述待匹配sql语句中是否存在可匹配字符串;

5、在所述待匹配sql语句中不存在可匹配字符串的情况下,基于所述源端数据库中所述待匹配sql语句对应的执行计划,或所述源端数据库中与所述待匹配sql语句关联的近似sql语句的执行计划,构造与所述待匹配sql语句语义相同的目标端数据库可执行的目标sql语句。

6、在一个实施例中,所述基于预设规则检测所述待匹配sql语句中是否存在可匹配字符串,包括:

7、重复执行以下操作直至达到预设时间阈值和/或预设次数阈值:

8、计算所述待匹配sql语句中源字符串的哈希值,检测所述哈希值与哈希表的哈希值是否匹配;所述哈希表包括目标端数据库存储的多个目标字符串以及各所述目标字符串对应的哈希值;

9、在所述哈希值与哈希表的哈希值匹配的情况下,确定所述源字符串为可匹配字符串;

10、检测所述待匹配sql语句的源字符串与正则表达式集合的正则表达式是否匹配;所述正则表达式集合包括所述目标端数据库内存储的多种正则表达式;

11、在所述源字符串符合所述正则表达式的情况下,确定所述源字符串为可匹配字符串。

12、在一个实施例中,所述计算所述待匹配sql语句中源字符串的哈希值,将所述哈希值与哈希表进行匹配的步骤之前,还包括:

13、将所述待匹配sql语句进行规范化处理;

14、所述将所述待匹配sql语句进行规范化处理包括以下方式中的至少一种:

15、删除所述待匹配sql语句中的注释;

16、删除所述待匹配sql语句中的空格;

17、删除所述待匹配sql语句中的换行符。

18、在一个实施例中,所述基于所述源端数据库中所述待匹配sql语句对应的执行计划,构造与所述待匹配sql语句语义相同的目标端数据库可执行的目标sql语句,包括:

19、基于所述源端数据库中所述待匹配sql语句对应的执行计划,构造在目标端数据库的第一执行计划树;

20、基于所述第一执行计划树构造与所述待匹配sql语句语义相同的目标端数据库可执行的目标sql语句。

21、在一个实施例中,所述基于所述源端数据库中与所述待匹配sql语句关联的近似sql语句的执行计划,构造与所述待匹配sql语句语义相同的目标端数据库可执行的目标sql语句,包括:

22、基于语义分析方法确定与所述源端数据库中的所述待匹配sql语句关联的近似sql语句;

23、基于所述近似sql语句对应的执行计划,构造在目标端数据库的第二执行计划树;

24、基于所述第二执行计划树构造与所述待匹配sql语句语义相同的目标端数据库可执行的目标sql语句。

25、在一个实施例中,所述在所述哈希值与哈希表的哈希值匹配的情况下,确定所述源字符串为可匹配字符串之后,还包括:

26、将所述可匹配字符串转换成与所述哈希表中的哈希值对应匹配的目标字符串;

27、所述在所述源字符串符合所述正则表达式的情况下,确定所述源字符串为可匹配字符串之后,还包括:

28、将所述可匹配字符串转换成与所述正则表达式的预设规则匹配的目标字符串。

29、第二方面,本技术实施例提供一种异构数据库sql语句适配装置,包括:

30、获取模块,用于获取源端数据库发送的待匹配sql语句;

31、检测模块,用于基于预设规则检测所述待匹配sql语句中是否存在可匹配字符串;

32、适配模块,用于在所述待匹配sql语句中不存在可匹配字符串的情况下,基于所述源端数据库中所述待匹配sql语句对应的执行计划,或所述源端数据库中与所述待匹配sql语句关联的近似sql语句的执行计划,构造与所述待匹配sql语句语义相同的目标端数据库可执行的目标sql语句。

33、第三方面,本技术实施例提供一种电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面所述的异构数据库sql语句适配方法的步骤。

34、第四方面,本技术实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的异构数据库sql语句适配方法的步骤。

35、第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面所述的异构数据库sql语句适配方的步骤。

36、本技术实施例提供的异构数据库sql语句适配方法、装置和设备,通过基于预设规则检测所述待匹配sql语句中是否存在可匹配字符串;在所述待匹配sql语句中不存在可匹配字符串的情况下,基于所述源端数据库中所述待匹配sql语句对应的执行计划,或所述源端数据库中与所述待匹配sql语句关联的近似sql语句的执行计划,构造与所述待匹配sql语句语义相同的目标端数据库可执行的目标sql语句。本技术实施例基于待匹配sql语句在源端数据库的执行计划或近似sql语句的执行计划,构造出在目标端数据库可执行的与待匹配sql语句相同语义的目标sql语句,本技术实施例实现迁移异构数据库sql语句,从而无需修改应用,即可实现不同语法数据库间的应用迁移,从而大大提升应用迁移效率,并且本技术实施例实现应用无需因为要支持多种数据库维护多个代码版本,降低代码的开发和维护成本。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1