传统关系型数据库->金仓数据库迁移适配
简介
金仓数据库的最新版本为KingbaseES V8, KingbaseES V8在系统的可靠性、可用性、性能和兼容性等方面进行了重大改进,支持多种操作系统和硬件平台支持Unix、Linux和Windows等数十个操作系统产品版本;支持X86、X86_64及国产龙芯、飞腾、申威等CPU硬件体系结构。并具备与这些版本服务器和管理工具之间的无缝互操作能力。
针对不同类型的客户需求,KingbaseES V8设计并实现了企业版、标准版、专业版版等多类版本。这些版本全部构建于同一数据库引擎内。在不同平台上,这些版本完全兼容。KingbaseES V8数据库应用程序可从笔记本电脑扩展到台式机、大型数据库服务器,以至整个企业网络,而无需重新设计。此外,当用户业务发展需更大的数据处理能力时,KingbaseES V8还支持各个版本之间的平滑升级。
KingbaseES V8目前已发布:标准版、企业版、专业版等版本;满足各种业务场景对通用数据库管理系统的技术需求。
本文,以KingbaseES V8进行展开:
下载&安装
金仓客户端工具
快速接入指南
Step1
打开客户端安装所在目录
Step2
打开ClientTools\guitools\KDts\KDTS-WEB\bin目录如下,
Step3
点击执行startup.bat文件出现CMD窗口如下,
Step4
打开浏览器,输入地址-> http://localhost:8000/,按Enter回车如下,
建立数据源、目标数据源相关数据库版本、服务端口、jdbc连接…
Step5
按照上述配置,数据库迁移就告一段落,总体上来说需要改的,就是验证下迁移过来的数据类型和长度,以及SQL函数兼容与否,可以通过DBeaver连接国产数据库如下,
当然,也可以通过金仓客户端连接并编辑或浏览表结构及数据,
这里,我们的数据库表结构以及数据迁移完成后,接下来就是我们项目工程jdbc驱动适配连接如下,
Step6
通过Druid或Hikaricp数据库连接池,正常连接到数据库之后,后续就是到了作SQL方言函数的兼容适配环节了->可参考之前多数据库适配SQL兼容处理方式。
像数据库连接池中,其实也都在不断兼容国产数据库,若是没有作对应处理的话,我们可以采用Java的类加载机制重写里面的类及方法去覆盖实现即可。
总结
最后,我们在项目工程引入jdbc连接:
url: jdbc:kingbase8://{ip}:{port}?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
username: {user}
password: {pwd}
结尾
附:当遇到部分表结构以及数据迁移出错,则可对当前出错部分重新迁移,调整表结构字段位宽即可。
这里,记录一下迁移过程中遇到的问题,在迁移的时候,报某些字段超长。则查看数据源中那些字段的类型及长度,在达梦数据库中增加位宽。
像在MySql中varchar是表示字符,varchar(50)表示可以存放50个字符,例如,DM的默认跟Oracle是一样的,varchar(50)表示50个字节。这就意味着,50个字节,如果存中文,在utf-8的字符集下,只能存最多16个。所以,如果MySql库到DM,varchar类型,需特别留意一下。
可参考之前的文章->记一次国产数据库适配的思考过程