1、引言
背景
由于各企业业务的发展信息化系统不断地建设,环境日益复杂,各系统间的数据交换复制需求日益增长,但是市场上数据复制软件的功能,大多无法满足实际客户的需要,实际上实施数据复制常常面临以下几个问题:1. 复杂的异构环境,实施困难; 2.对性能造成影响;3.库表结构变更时,复制中断,而导致远营中断。针对 以上问题星瑞格自主研发一款星瑞格异构数据实时复制软件-SinoRepl,采用表级复制的方式,将表数据从某个数据库实时复制到其他数据库,并可以在异构平台与异构数据库上实现数据复制。通过从源数据库基于数据库曰志实时捕获,交付到目标数据库端,将数据变化提交到目标数据库完成数据复制, 对原有数据库影响极小。SinoRepl可以应用在数据集中、数据分发的问题,也可以解决在高可用需求下数据容灾备份, 零停机数据库升级等数据复制应用方案。
2、特殊需求测试场景
场景类型 | 字段结构 | 源端 | 目标端 | 描述及预期 |
char空串问题(长度为0,非null) | 存在非空约束: 源:char(3) not null 目标:varchar2(3) not null | 测试值:‘ ’ 存入空串,存储为三个空格 | 实际值:’三个空格’ 预期值:一个空格(或null) | char字段存入空串,会补空格,由于目标端用的类型是varchar2,预期根据是否有not null约束来处理,存在非空约束则保留一个空格,无非空约束则保存为null,打印操作日志和源数据 |
无非空约束: 源:char(1) 目标:varchar2(1) | 测试值:‘’ | 实际值:’空格’ 预期值:null |
varchar空串 | 无非空约束: 源:varchar(16) 目标:varchar2(16) | 测试值:‘’ | 实际值:‘空格’ 预期值:null | 与char类型类似,预期根据是否有not null约束来处理,存在非空约束则保留一个空格,无非空约束则保存为null,打印操作日志和源数据 |
存在非空约束: 源:varchar (3) not null 目标:varchar2(3) not null | 测试值:‘’ | 实际值:‘空格’ 预期值:一个空格(或null) |
char没有达到字段的长度 | 源:char(3) not null 目标:varchar2(3) not null | 测试值:‘ab空格’ | 实际值:‘ab空格’ 预期值:’ab’ | char字段达不到大长度时,会在末尾补空格,由于目标端用的类型是varchar2,预期去除末尾空格 |
乱码 | 乱码在末尾: 源:varchar (3) 目标:varchar2(3) | 测试值:‘天�’ | 实际值:‘天’ 预期值:‘天�’ | 保留非乱码部分,乱码直接被删除,预期保持原样,如无法修复,应打印操作日志和源数据 |
乱码非末尾: 源:varchar (18) 目标:varchar2(18) | 测试值:‘� 看过’ | 实际值:‘��看过’ 预期值:‘� 看过’ | 乱码多了一位,预期保持原样,如无法修复,应打印操作日志和源数据 |
3、功能模块
3.1可实现功能目标
1、实现Informix数据库的表复制到Oracle,mysql等数据库上(DDL,DML)。
2、实现Informix数据库与目标数据库表记录数的比对和表数据的比对。
3.2运行环境
项目 | 名称 |
操作系统 | AIX 、Linux |
数据库 | Informix、Oracle、mysql |
3.3架构图适用场景