炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得

[本文正在参与炫“库”行动—人大金仓有奖征文]

  • 业务背景

       由于客户的信创业务需要将目前的应用和数据库都迁移至国产系统平台,目前国产数据库主流的就包括金仓和达梦了,之前也是在维护一个客户项目的时候做了一些简单的增查改删,算是浅浅的用过吧。整体感觉和其他的主流关系型数据库用起来没什么不同,从浅用的程度来说也看不出任何性能差异,支持几乎所有常用SQL语句,上手非常轻松。

       达梦数据库对Oracle的支持很好,基本可以做到无缝衔接,但是这次还使用到了SQL server而且客户这个项目重度依赖数据库,不仅仅是作为数据的存储单元,很多复杂的业务逻辑为了提高运行效率都写到了存储过程里面了,研究了一下两家相关功能,发现在Oracle兼容上面做的不相上下,大部分的Oracle语法都支持,对其他数据库的兼容也做得不错,当然百分之百的兼容是不可能的了,考虑在对SQL server的兼容方面,选择了表现更好一点的金仓Kingbase数据库。现在首要面临的问题就是如何将原有的Oracle和SQL server的存储过程顺利的迁移到Kingbase。

  • 应用迁移
  1. 迁移评估

       在提报方案时,客户需要我们对这次整个的迁移任务先做一个初步的评估,最好是能够给出一个任务量的评估,任务的难点能够预先定位出来,尽量降低整个任务的风险,作为没怎么深入接触Kingbase数据库的我们来说,一开始是很没有底的,难道要我们做一个评估工具吗?

       翻阅Kingbase的使用手册和解决方案,发现Kingbase工具包中就有一个叫KDMS(数据迁移评估工具)的东东,它提供数据库评估、结果验证及报告功能,这个结果可以直接给客户啦!实际应用后我们发现,在KDMS提供的迁移评估报告指导下,提前优化和处理一些问题,通过最小的改造工作量即可完成数据库结构迁移,并在其后完成数据库数据迁移。

炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得_第1张图片

       打开Kingbase提供的KDMS操作链接,登录用户名密码,就可以使用在线评估功能。

       Kingbase的数据库迁移评估主要包括数据库采集及迁移评估两个过程。其中,数据库采集是通过采集客户端收集源数据库的基本信息,包含表、视图、触发器、约束、序列、及函数、存储过程等;

       迁移评估过程通过他们系统内置算法,自动将源数据库对象转换成KingbaseES对象,根据转换结果进行迁移难度及工作量评估,在评估完成后,系统会统计出自动转换率、不兼容和自动转换失败数据,最终会获得一个迁移评估结果报告,

       报告可以导出成一个本地文件,其中包含修改以后的兼容kingbase的SQL语句,以及需要人工介入修改的部分,作为后期迁移工作的一个重要参考和指引文档。

炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得_第2张图片

       这里有个我们比较感兴趣的地方就是它的语法转换,这个迁移工具可以转换出一个SQL脚本,根据这个脚本进行目标库的快速构建,也就是说迁移过程中的最大的难点之一它会替我们做好,而且还是官方的,这可比我们自己寻摸瞎折腾靠谱多了!我们不用再去深入学习掌握专业的数据库语法知识,就可以完成源库到目标库对象迁移与验证,简直是无门槛异构数据库迁移。

炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得_第3张图片

        通过进一步了解,Kingbase的PL/SQL的智能转义其原理是:通过读取并解析Oracle PL/SQL语义形成结构化的逻辑对象,根据目标数据库的语法格式和对等函数生成能够运行的PL/SQL。简单来说就是进行编程语言的翻译。在这种情况下,目标数据库的运转规则和逻辑可以与Oracle保持差异,而不需追求完全一致。

       这样既能低成本平滑迁移,又不会对数据库产品的内核稳定性带来影响。

       除了Oracle、SQL Server重度用户以外,它还支持DB2、MySQL等数据库迁移,它基于SaaS模式高度智能化的数据库迁移服务(DMS),保障数据库的完整性、稳定性及兼容性,这些应该是金仓特有的,想的真是周到吖。

炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得_第4张图片

        支持查看每个具体对象的转换情况,无法自动转换的可通过手工进行修改,并记下所有修改记录。

炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得_第5张图片

        导出转换和修改完毕的目标数据库的DDL语句包。

炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得_第6张图片

        数据库对象包括存储过程和函数的迁移到此就可以告一段落了,根据迁移报告和转换的DDL可以准确的评估出来当前数据迁移至Kingbase的工作量。

  1. 应用迁移评估

       本以为可以轻松交差了,把应用在Kingbase数据库上跑一下试试,这时候又发现一个大问题,因为当前这个系统是很早就开始了,以前的代码中嵌入了很多手写的SQL语句,当初也没想到会迁移到其他的数据库,所以又很多Oracle和SQL server的特殊语法,如果要人工介入一个一个的修改那基本上是不可能完成的任务,客户对这方面的任务评估也是有要求的,而且目前这个应用已经给交付很久了,找厂家来修改也是不现实的。所以没办法,还是需要找到一个工具可以辅助的做源码扫描和修改。

       扫了一眼KDMS的使用手册,还真提供了这个功能,金仓的工具还真是为用户着想啊,必须点个赞。根据手册赶快配置起来。上传源码选择源和目标数据库,开始评估。

炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得_第7张图片

       打开评估“详情”,用户可通过“概要”查看对象类型,数量,转换成功数等信息。

       评估“详情”页,“对象详情”下,可查看采集得到的应用堆栈树,及堆栈下对应的SQL类型,原始SQL,转换后SQL。转换后的SQL有助于快速调整应用SQL,以适配金仓数据库。

炫“库”行动—人大金仓有奖征文—应用和数据库移植到金仓数据库心得_第8张图片

        最终的评估报告也是很详细的,能够具体的定位到源代码的具体哪一行,原先的SQL是什么样的,兼容Kingbase的SQL应该改成什么样的,没有转化成功的也会有提示,这样可以很快的根据评估报告将问题分成几大类,几组人员负责每一类SQL问题的修改,很快就完成了应用的迁移,把不可能完成的任务瞬间简化了。综合这两份迁移评估报告我们可以很有把握的给客户提供一个合理的工作量,而且在极短的时间内完成了整个应用的迁移工作,客户对我们的工作效率也非常的满意。

  1.  数据迁移

        应用迁移修改完成了,下一步就是进入到用户现场开始迁移数据了,第一部分客户需要迁移的数据量有3TB,而且有多个数据库,每个数据库中的表有上万张,根据以往经验,这种级别的数据迁移都要以天为单位的,而且客户那边还有安全的考虑,我们不能直接连到数据库上,需要通过中转机,这就意味着图形化的迁移工具需要定时的人工触发一下,否则session一过期,界面就是卡死整个迁移任务就失败了。

        没办法只能通过金仓的客服平台寻求一下支持,没想到他们还真给我推荐一个KDTS-Plus的产品,纯命令行运行整个迁移过程无需人工干预,下载下来配置好了以后运行起来,本来以为我可以去睡一觉了,突然发现进度动了一下!什么?刚开始没几秒就1%了?我严重怀疑是不是Kingbase迁移给的心里安慰交互,于是盯了几分钟,又动了一下!我觉得很神奇,正常这个数据量的迁移工作哪怕是同一类型数据库的迁移速度也不过是10MB/秒左右,这异构数据迁移貌似能达到50MB/秒。

        于是我第一次全程陪伴着数据迁移工作到完成,竟然只用了几小时,算了算差不多是300GB/分钟!这真是让我感到很惊讶。

        而后run起来一些服务并验证了相关数据的准确性,也是没有问题的,这就说明迁移工作是完全成功的。Kingbase DTS-Plus 自动完成了所有的数据库对象的迁移,包括存储过程,函数,程序包等等。

  •  数据库开发

        目前为止整个业务系统已经完全的运行于kingbase数据库系统上了,现在需要基于kingbase开发新的业务了,金仓的工具包里面还提供了一个叫kstudio开发工具,简单的输入数据库的IP,用户名和密码就可以连上了,都是图形化的操作,点击几下鼠标就可以对数据库对象进行编辑修改,新建一张表也是分分钟的事情,不需要记住复杂的SQL语法,完全摆脱了冰冷的命令行界面。

        如果需要编写存储过程,函数等SQL脚本,可以通过SQL编辑器,体验和我们使用IDE工具编写程序是一样的,可以格式化整个的脚本,根据语法缩进,使用不同的颜色显示不同的代码部分,提高脚本的可读性,能够智能提示关键字,自动补全语法,还有错误提示和帮助文档等等。尤其是调试功能,使用过eclipse调试Java程序的小伙伴应该使用起来感到很亲切,完全类似的操作步骤,可以单步跟进,直接跳到某一个断点,或者跟踪进入调用的函数,程序包等等,所有的中间过程,程序的堆栈调用信息,变量的中间值的变化过程都一目了然,使用起来不比Navicat,PL/SQL developer感觉差。

        Kstudio还提供web版的,这样可以随时在任何一台机器上通过浏览器管理Kingbase用户的使用体验更上一层楼。

  • 数据库云服务平台

        客户还咨询了一下内部私有云搭建的问题,金仓也有一款名叫KRDS的产品可以基于OpenStack和K8S搭建虚拟化平台的用户,直接无缝的管理这些应用平台,同时还能够在阿里云,华为云,浪潮云上可视化的部署管理Kingbase数据库,还能部署高可用集群,在线扩容也是点一下鼠标就完成了,同时这个平台还集成了在线管理和监控工具,完全是一个综合化的管理平台,实现了企业内部云托管的功能。

  •  总结

       整个迁移工作进行的是比较顺利的,总结一下流程大致如下:

  1. 使用KDMS做数据库和应用的迁移评估。
  2. 根据评估结果的指引做迁移修改。
  3. 使用KDTS做数据迁移。
  4. 进一步数据库开发工作使用kstudio管理数据库对象。
  5. 需要数据库云平台的话可以通过KRDS进行在线部署、管理和监控。

       通过这次的系统迁移,进一步对国产数据库增强了信心,不仅使用起来高效、稳定,在数据的迁移过渡以及数据库的开发管理方面,真是替我们想的很周到,相信我们国人自己的产品会越来越好,很快就可以实现各个基础软件的完全国产化! 

[本文正在参与炫“库”行动—人大金仓有奖征文]

你可能感兴趣的:(数据库)