近段时间公司接下了一个数据迁移项目,闲下来总结下期间的感受
1、需求
1)数据迁移的需求莫过于将A系统的数据通过ETL方式搬迁至B系统,没有太多复杂的功能实现方面问题,但需明确
2)需和客户敲定迁移的范围,中间节点的数据处理方式,敲定迁移无法处理不了的数据的处理原则
3)敲定各里程碑节点时间,及各里程碑节点的交付物
4)需明确提出需要什么样的甲方资源协助(如:业务/IT部门的人力投入,迁移硬件机器提供,提供旧系统的相应环境至迁移组了解系统,提供相应DB旧数据样本,双方的沟通机制等等)
5)明确各迁移模块对应的业务部门,以便后续的问题确认
2、旧系统分析
1)了解旧系统各模块的操作流程,需清晰了解旧系统的所包括的业务节点、业务流向,初步勾画与新系统如何匹配
2)清楚旧系统界面每个字段在DB层面具体的数据结构,清晰了解不同业务流程在DB层面的不同数据流向,存储结构
3)分析阶段应多花时间,以便指引后续的ETL程序开发
4)本阶段的交付物应包括新旧系统的界面映射清单及DB映射清单
3、ETL程序开发
1)确定迁移是否有必要分模块,已减低各模块的耦合关系
2)根据不同的业务场景梳理ETL主控逻辑,以便后续分工
3)所有公共代码映射应有专人处理跟进,以防止各模块代码冲突或错误
4)根据新旧系统的界面映射清单及DB映射清单编写具体的TABLE ETL迁移细节,期间涉及映射变更的应双方沟通确认
5)任何业务不清晰的业务场景因与客户确认后,邮件再次发出请客户确认
6)应注意使用的迁移SQL语法,应尽可能不使用效率较低的语法、函数,已避免迁移效率低下
7)注意整体的中间表设计,因避免反复查询,因合理添加INDEX提高性能
4、异常数据清洗
1)各种情景产生的异常数据应根据不同类型整理出异常数据清单与客户分析沟通,邮件确认修正规则
2)对于异常数据的处理方式分两类(手工修正,SQL脚本修正)
3)数据修正应全面考虑修正各子模块相关数据,避免数据的不一致
另外:关于数据迁移的人力资源方面应包括如下人员
1)沟通双方的人员
2)了解新系统的业务流程的开发人员
3)了解旧系统业务、DB层的甲方人员
4)数据迁移此类项目应保证人员的稳定性及提供足够的开发人员