一种基于JDBC代理的异构数据库应用迁移方法技术

技术编号:19122238 阅读:67 留言:0更新日期:2018-10-10 05:16
本发明专利技术提供一种基于JDBC代理的异构数据库应用迁移方法,所述方法包括如下步骤:步骤1、在源应用与数据库管理系统之间设置一JDBC代理;步骤2、在源应用中将数据库的地址改到JDBC代理的地址;步骤3、JDBC代理对源应用的SQL语句进行语法解析生成AST语法树;步骤4、根据源数据库的AST语法树生成目标数据库的语法树,并根据配置进行转换;步骤5、JDBC代理根据目标数据库语法树生成SQL并返回结果给源应用。采用本发明专利技术方法可实现在应用系统几乎不需要做修改的情况下,无缝的从旧数据库迁移到新数据库。

【技术实现步骤摘要】
一种基于JDBC代理的异构数据库应用迁移方法
本专利技术涉及数据库应用领域,尤其涉及一种基于JDBC代理的异构数据库应用迁移方法。
技术介绍
在应用系统建设初期,由于管理和技术的限制,很难有一个全局的战略和方向,各个子系统之间存在着各种差异。由于采用不同的部署平台、不同的数据库管理系统和开发技术,造成这些系统的扩展性和交互性较差,系统之间相互独立。随着业务的发展,应用管理系统需要不断更新换代。各个系统之间需要进行重新整合,不同数据库管理系统中的数据需要被重新整合,各个数据库系统天然的差异性对数据迁移有着巨大的阻碍。异构数据迁移的主要困难点在于:新旧数据库支持的字符编码不同;新旧数据库存在特有的函数和技术;新旧数据库字符类型以及特殊字段存在差异;新旧数据库SQL语法存在差异,需要应用系统针对不同的数据库做大量修改等。因此需要有一种有效的方案来解决异构环境中的数据交换,降低迁移的风险增强迁移的平滑性,以使应用系统能够平滑高效的完成各项工作。
技术实现思路
本专利技术要解决的技术问题,在于提供一种基于JDBC代理的异构数据库应用迁移方法,在应用系统几乎不需要做修改的情况下,无缝的从旧数据库迁移到新数据库。本专利技术是这样实现的:一种基于JDBC代理的异构数据库应用迁移方法,所述方法包括如下步骤:步骤1、在源应用与数据库管理系统之间设置一JDBC代理;步骤2、在源应用中将数据库的地址改到JDBC代理的地址;步骤3、JDBC代理对源应用的SQL语句进行语法解析生成AST语法树;步骤4、根据源数据库的AST语法树生成目标数据库的语法树,并根据配置进行转换;步骤5、JDBC代理根据目标数据库语法树生成SQL并返回结果给源应用。进一步的,所述方法还包括:对于部分复杂的业务中,由JDBC代理发起复数次向目标数据库的SQL请求,结束后将结果按照源数据库期望的格式返回源应用。进一步的,所述JDBC代理根据不同数据库提供相应的语法解析和转义程序,所述语法解析将SQL解析成SQL语法AST语法树,转义程序将源语法树转义成目标语法树,最终遍历目标语法树完成SQL的输出。进一步的,所述转义程序包括函数转换、关键字转换和数据类型转换;所述函数转换将源数据库的特定函数转换成目标数据库的函数;所述关键字转换将源数据库的关键字段转换成目标数据库函数或关键字;所述数据类型转换根据映射规则将数据类型转换成相应的类型。进一步的,所述JDBC代理还包括SQL拦截,所述SQL拦截通过解析SQL抽象语法树,分析SQL是否存在注入风险、查询目标表是否在黑名单列表中来阻止SQL执行。进一步的,所述JDBC代理采用直接嵌入应用系统或使用远程调用方式完成。本专利技术具有如下优点:通过将代理机制作为应用系统和数据库库管理系统的中间件,遵循JDBC规范,实现JDBC接口,通过拦截SQL和数据库返回信息,转义数据类型、函数、和SQL语法等,使应用系统几乎不需要做修改,无缝的从旧数据库迁移到新数据库,且方便进行联调和测试。附图说明下面参照附图结合实施例对本专利技术作进一步的说明。图1为本专利技术一种基于JDBC代理的异构数据库应用迁移方法执行流程图。图2为本专利技术JDBC代理部署结构示意图。具体实施方式如图1和图2所示,本专利技术一种基于JDBC代理的异构数据库应用迁移方法,所述方法包括如下步骤:步骤1、在源应用与数据库管理系统之间设置一JDBC代理;步骤2、在源应用中改动JDBC连接串,将数据库的地址改到JDBC代理的地址;步骤3、JDBC代理对源应用的SQL语句进行语法解析生成AST语法树(即抽象语法树);步骤4、根据源数据库的AST语法树(即抽象语法树)生成目标数据库的语法树,并根据配置进行转换;步骤5、JDBC代理根据目标数据库语法树生成SQL并返回结果给源应用。较佳的,所述方法还包括:对于部分复杂的业务中,由JDBC代理发起复数次向目标数据库的SQL请求,结束后将结果按照源数据库期望的格式返回源应用,如:对于行长度超过32766字节的表操作。较佳的,所述JDBC代理根据不同数据库提供相应的语法解析和转义程序,所述语法解析将SQL解析成SQL语法AST语法树,转义程序将源语法树转义成目标语法树,最终遍历目标语法树完成SQL的输出。较佳的,所述转义程序包括函数转换、关键字转换和数据类型转换;所述函数转换将源数据库的特定函数转换成目标数据库的函数,如data()转换成getdate(),lcase()转换成lower(),相应的转换关系也可执行映射规则;所述关键字转换将源数据库的关键字段转换成目标数据库函数或关键字,如Oracle的sysdate转换成current;所述数据类型转换根据映射规则将数据类型转换成相应的类型,包括字段类型转换,根据预先设置的映射规则将数据类型转换成相应的类型,如:将varchar(300)转换成lvarchar(300),这种方式适合CreateSQL语法,根据类型参数(长度、精度等)做相应的调整。较佳的,所述JDBC代理还包括SQL拦截,所述SQL拦截通过解析SQL抽象语法树,分析SQL是否存在注入风险、查询目标表是否在黑名单列表中等规则来阻止SQL执行。较佳的,所述JDBC代理采用直接嵌入应用系统或使用远程(RPC,RemoteProcedureCallProcol)调用方式完成。针对目前异构数据库的迁移工作在应用系统迭代升级困难且重要,本专利技术通过将代理机制作为应用系统和数据库库管理系统的中间件,采用JDBC代理(即Proxy系统)代理应用层的JDBCConnection,在Connection中织入一条过滤链,在过滤链中完成SQL的解析、基本语法转换、特定语法转换(如分页语法等)、函数转换、关键字转换、数据类型转换等。处理各类数据库语法差异,如图2所示,数据库可以为Oracle,SinoDB,Database等,让应用处理业务逻辑能够使用旧数据库系统的语法,应用系统几乎不需要做修改,达到迁移无感知的目的。虽然以上描述了本专利技术的具体实施方式,但是熟悉本
的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本专利技术的范围的限定,熟悉本领域的技术人员在依照本专利技术的精神所作的等效的修饰以及变化,都应当涵盖在本专利技术的权利要求所保护的范围内。本文档来自技高网
...
一种基于JDBC代理的异构数据库应用迁移方法

【技术保护点】
1.一种基于JDBC代理的异构数据库应用迁移方法,其特征在于:所述方法包括如下步骤:步骤1、在源应用与数据库管理系统之间设置一JDBC代理;步骤2、在源应用中将数据库的地址改到JDBC代理的地址;步骤3、JDBC代理对源应用的SQL语句进行语法解析生成AST语法树;步骤4、根据源数据库的AST语法树生成目标数据库的语法树,并根据配置进行转换;步骤5、JDBC代理根据目标数据库语法树生成SQL并返回结果给源应用。

【技术特征摘要】
1.一种基于JDBC代理的异构数据库应用迁移方法,其特征在于:所述方法包括如下步骤:步骤1、在源应用与数据库管理系统之间设置一JDBC代理;步骤2、在源应用中将数据库的地址改到JDBC代理的地址;步骤3、JDBC代理对源应用的SQL语句进行语法解析生成AST语法树;步骤4、根据源数据库的AST语法树生成目标数据库的语法树,并根据配置进行转换;步骤5、JDBC代理根据目标数据库语法树生成SQL并返回结果给源应用。2.根据权利要求1所述的一种基于JDBC代理的异构数据库应用迁移方法,其特征在于:所述方法还包括:对于部分复杂的业务中,由JDBC代理发起复数次向目标数据库的SQL请求,结束后将结果按照源数据库期望的格式返回源应用。3.根据权利要求1所述的一种基于JDBC代理的异构数据库应用迁移方法,其特征在于:所述JDBC代理根据不同数据库提供相应的语法解析和转义程序,所述语法解析将S...

【专利技术属性】
技术研发人员:郑林城林禹
申请(专利权)人:福建星瑞格软件有限公司
类型:发明
国别省市:福建,35

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

1