数据库数据迁移方案-1目标

最近在做对老数据系统的迁移,我们遭遇了比较高难度的挑战,需要无错的完成转换工作,最好能提前在测试环境验证数据,确保完美上线。

先说说项目现况

首先,两边数据结构差异很大,只有一些相似的领域模型概念。

其次,老系统中有较多的非法NULL值和很多不正确的数据。

最后,数据库经历过三波人设计和开发,里面有技术包袱。



虽然问题比较多,但是我们有以下这些资源

1  新系统有基于实体的元数据字典

2  老系统有一份相对比较完整的数据库文档

3  有对老系统非常熟悉的人员,可以提供专家级业务意见

4  相关人员对数据库的SQL语句特别的擅长

5   有基于实体模型的数据库访问组件



先看看一般的升级手段!

1  手工

2  SQL脚本

3  程序

我们使用什么方案来升级呢?

手工是不可能完成的,SQL脚本应付不了复杂的环境,程序虽然梦幻但是工作量很大,实际上还有一些一次性工作,例如权限,角色等设置,这个时候程序的价值其实不大。

这里我们准备分3个阶段

1  编写清理错误的SQL脚本, 清理无用的孤岛数据和修复错误数据

2  编写基础数据和业务表的升级程序,渐进式的数据迁移

3  手工加权限,处理部门等信息。

写到这里方案差不多出来了,来完善目标

1  正确性:每一个字段必须单独检查,后续有多少字段未处理,进度可以反向推进业务

2  性能:转换程序最好可以在8个小时甚至在2个小时内完成

3  高效:数据转换是一件悲伤到逆流成河的事情,错了最好马上秒级还原并马上修正再次验证

4  反复:每一个小的流程可以识别自身状态,整体反复执行

5  唯一:最后生成的数据有唯一的数据主键编号,方便还原问题。

6  快速:充分利用SQL脚本,快速转换数据

你可能感兴趣的:(数据库数据迁移方案-1目标)