改造神器图纸 (改造工程神器)

本文结合笔者自身应用系统国产化适配改造的经验,总结了应用系统国产化适配改造过程中面临的挑战,并根据杭研适配系统的建立思路,总结并完善应用系统国产化适配的完整流程,并提炼其中的关键环节,为国产化适配改造提供新的思路。

作者:刘琦

单位:中国移动智慧家庭运营中心

自安全可控体系提出以来,国家大力推进从基础硬件到基础软件、再到应用软件三个层级的国外产品替代,人大金仓、达梦、南大通用等国产数据库基础软件已经逐步的替代MySQL、Oracle等数据库软件,成为各应用系统首选的数据库管理系统。数据库厂商在研发数据库软件的同时也会同步研发各种工具以满足向其自身数据库产品适配的要求,如达梦和金仓都同步研发了数据库管理工具和数据迁移工具等,金仓还研发了配套的云适配平台,协助完成应用系统向金仓的适配转换;但是各个数据库厂商都是“各自为政”,且都只针对了国产化适配流程的中某一个环节。应用系统适配的全流程规划及各个环节的整合还缺乏统一的认识。

对于在运行的应用系统而言,国产化数据库适配过程中还存在以下挑战:一是服务器架构、操作系统等软硬件品类多,业务系统适配基础环境搭建复杂;二是应用数据的快速迁移,不同的数据库有各自的特异性,如何保证应用数据的一致性;三是业务系统适配过程中,适配工作量如何有效评估;四是如何兼容不同数据库厂商的SQL语法并向国产化数据库转换。本文结合适配系统研发及应用系统国产化适配改造的经验,针对适配过程面临的挑战,阐述杭研适配系统的解决方案,为国产化适配提供新的思路。

Part 01

国产化适配环境搭建

适配改造的第一步需要搭建完整的国产化运行环境,其主要涉及到源数据库、应用系统及目标数据库。由于底层硬件搭配的CPU架构品类繁多,应用系统对操作系统运行环境也提出了要求,为了满足不同的硬件层及操作系统层的要求,杭研国产化适配系统采用基于云底座的统一运行环境,将国产操作系统,国产数据库及中间件进行虚拟化和容器化改造,屏蔽底层环境差异,建立统一的环境部署方式,并向上提供统一的接口层。用户只需要手动选择操作系统、国产数据库型号、依赖中间件等相关配置参数并应用,适配系统即可自动部署并配置好相应的运行环境,并且做到不同用户部署的业务系统是相互隔离的,在硬件资源上面独享。用户只需要简单选择,即可快速搭建环境,减少人为搭建的繁琐及人为差错。

Part 02

数据库迁移

适配运行环境部署好之后,需要导入适配测试数据。为了屏蔽异构数据库之间的差异,兼容更多类型的国产化数据库,杭研国产化适配系统基于JDBC标准协议,将数据库对象的获取、解析及创建等通用功能及流程统一抽象并规范迁移流程;异构数据库结构性的差异而必须手动配置部分,如迁移策略及映射关系等,则通过适配系统提供统一的配置界面入口。为提升迁移效率,适配系统还结合多线程技术快速进行异构数据库的迁移工作。

Part 03

工作量评估

应用系统包含众多的功能,每一项功能都涉及若干SQL语句的操作,有的SQL语句完全遵从SQL标准,在国产化数据库中可以正确执行;另一部分则包含源数据库扩展特性,迁移到国产化数据库中执行则会失败,而导致应用系统的功能失效。全面且准确的统计出不兼容的SQL语句就成为了适配系统新的挑战。杭研国产化适配系统基于代码插装技术,通过分发评估组件至相应业务应用的虚拟机上,根据进程ID,将评估组件嵌入到业务应用中,在业务应用执行的过程中去获取相应的SQL语句,通过在目标国产化数据库的执行情况,给出改动建议并统计出所有的正常和异常SQL信息,为业务系统的改造提供依据。

Part 04

国产数据库SQL适配

获取到评估报告,明确需要适配修改的目标后就“万事俱备,只欠东风”了,适配系统会根据评估报告中统计整理的需要修改的SQL语句并基于适配中间件进行SQL适配,适配中间件主要涉及到驱动协议的转换和SQL语法的修改。

1)驱动协议的转换主要是对源数据库的协议进行解析,同时将解析出的数据按照目标数据库的协议进行传输,在目标数据库返回结果之后,再将对应的结果转换成源数据库的协议格式进行回复。

2)SQL语法的修改主要是将SQL语句转换成语法树,对语法树的每个节点进行遍历,根据与目标库定义好的转换格式进行对应SQL的转换,最终完成SQL语法的整体兼容。

从适配环境部署、适配数据迁移到SQL数据的统计,适配系统构建了完整的规范化流程,并实现全过程的自动化处理;在SQL语句适配修改阶段,通过语法树分析技术,可以覆盖80%的SQL语法并实现自动转换,剩余部分才需要人工介入修改,极大地减少人工工作量和出错的情况,提升适配效率。