关于对数据迁移与割接的研究
将原信息化管理系统中的大量有效的历史数据导入到新版应用系统中,这对
新系统正常运行有着重要影响,保证了对大量历史数据的正常使用,从而在不影
响所有用户工作的前提下完成信息化管理系统的升级改造工作。在现有信息化管
理系统所积累的大量数据,需要仔细衡量历史数据的有效性和对新系统的影响以
及数据迁移的方式和方法。而这决不仅仅是异构数据库、不同存储设备之间数据
迁移那么简单,它更像是对原应用系统数据以及原系统业务流程的重新审视和考
核。
建议最好能提供原信息系统的相关文档资料,安排长期应用旧系统的人员参
与到数据迁移工作中,以了解新旧系统的数据库和有关字段,避免数据字段对应
错误,或者其他更有效的方式协作共同做好数据的迁移工作。所以数据迁移系列
工作是需要各个部门共同讨论,协调完成。
1 数据迁移的策略与方法
数据迁移的内容是整个数据迁移的基础,需要从信息系统规划的角度统一考
虑,可从横向的时间和纵向的功能模块两个角度考虑,从而因地制宜地采用不同
数据迁移策略和方法。
1.1 数据迁移策略
1.1.1 横向划分
以产生数据的时间为划分依据,优先考虑迁移与当前日期较近的数据,这样
可以尽可能缩小新系统由于历史数据问题对用户的影响,而那些相对比较久远的
数据可以分批次进行数据迁移。
1.1.2 纵向划分
以处理数据的功能模块为划分依据,需要考虑在新系统中没有被包含的功能
模块所涉及数据的处理问题。这类数据由于无法建立映射关系,一般不需要迁移
到新系统中。但对于模块间偶合度比较紧密的旧系统,在纵向划分时需要注意数
据的完整性。对于新旧系统均包含的功能模块的数据,需要进一步分析主要核心
字段信息以及各功能模块相互关联的数据信息的迁移,但切忌贪图数据的高完整
性。
1.2 数据迁移的方法
根据不同的迁移划分,我们采取不同的数据迁移的策略和方法。迁移方法主
要有一次迁移、分次迁移、先录后迁、先迁后补等几种方式可供选择。我们根据
实际情况,选择最适合数据迁移的方法来进行数据迁移工作。
1.2.1 一次迁移
一次迁移的前提是新旧系统数据库差异不大,允许的宕机时间内可以完成所
有数据量的迁移。
优点:迁移实施的过程短,相对分次迁移,迁移时涉及的问题少,风险相对
比较低。
缺点:工作强度比较大,由于实施迁移的人员需要一直监控迁移的过程,如
果迁移所需的时间比较长,工作人员会很疲劳。一次迁移的前提是新旧系统数据
库差异不大,允许的宕机时间内可以完成所有数据量 b的迁移。
1.2.2 分次迁移
分次迁移是通过数据迁移工具或迁移程序,将需要的历史数据分几次迁移到
新系统中。分次迁移一般在系统切换前先迁移将静态数据和变化不频繁的数据,
例如代码、用户信息等,然后在系统切换时迁移动态数据,例如交易信息,对于
静态数据迁移之后发生的数据变更,可以每天同步到新系统中,也可以在系统切
换时通过增量的方式一次同步到新系统中。
优点:分次迁移可以将任务分开,有效地解决了数据量大和宕机时间短之间
的矛盾。
缺点:分次切换导致数据多次合并,增加了出错的概率,同时为了保持整体
数据的一致性,分次迁移时需要对先切换的数据进行同步,增加了迁移的复杂度。
1.2.3 先录后迁
先录后迁主要针对新旧系统数据结构存在特定差异的情况,即对于新系统启
用时必需的期初数据,无法从现有的历史数据中得到。
优点:最大程序上减少了新旧系统因数据差异性所带来的影响。
缺点:工作强度大。
1.2.4 先迁后补
先迁后补是指在系统切换前通过数据迁移工具或迁移程序,将原始数据迁移
到新系统中,然后通过新系统的相关功能,或为此专门编写的配套程序,根据已
经迁移到新系统中的原始数据,生成所需要的结果数据。
优点:减少迁移的数据量。
缺点:不能及时满足用户对历史数据的使用要求。
2 数据迁移的实施方案
数据迁移的实现可以分为三个阶段:数据迁移前的准备、数据迁移的实施、
数据回退措施和数据迁移后的校验。根据数据迁移的特点,大量的工作都需要在
准备阶段完成,充分而周到的准备工作是完成数据迁移的主要基础;数据迁移的
实施是实现数据迁移的三个阶段中最重要的环节,根据实际情况,灵活选择数据
迁移方法;数据迁移后的校验是对迁移工作的检查,数据校验的结果是判断新系
统能否正式启用的重要依据。
2.1 数据迁移的技术准备
数据迁移通常包括多项工作:旧系统数据字典整理、旧系统数据质量分析、
新系统数据字典整理、新旧系统数据差异分析、建立新旧系统数据之间的影射关
系、开发部署数据转换与迁移程序、制定数据转换与迁移过程中的应急方案、实
施旧系统数据到新系统的转换与迁移工作、检查转换与迁移后数据的完整性与正
确性。
1. 数据格式检查:检查数据的格式是否一致和可用。
2. 数据长度检查:检查数据的有效长度。
3. 区间范围检查:
检查数据是否包含在定义的最大值和最小值的区间中;例如年龄为300,或
录入日期在4000-1-1。
4. 空值、默认值检查:
检查新旧系统定义的空值、默认值是否相同,不同数据库系统对空值的定义
可能不同,需要特别关注。
5. 完整性检查:
检查数据的关联完整性。如记录引用的代码值是否存在,特别需要注意的是
有些系统在使用一段时间后,为了提高效率而去掉了外键约束。
6. 一致性检查:
检查逻辑上是否存在违反一致性的数据,特别是存在分别提交操作的系统。
2.2 迁移实施
数据迁移程序的开发、部署主要有两种选择,即自主开发程序或购买成熟的
产品。这两种选择都有各自不同的特点,选择时还要根据具体情况进行分析。纵
观目前国内一些大型项目,在数据迁移时多是采用相对成熟的ETL产品。可以
看到这些项目有一些共同特点,主要包括:迁移时有大量的历史数据、允许的宕
机时间很短、面对大量的客户或用户、存在第三方系统接入、一旦失败所产生的
影响面将很广。同时也应该看到,自主开发程序也被广泛地采用。相关的ETL产
品,如Informix的InfoMover、Microsoft SQL Server 7的DTS和Oracle的
Oracle Warehouse Builder,Ascential Software公司的DataStage。
数据迁移可以采取不同的方法进行,主要有三种方法,即系统切换前通过工
具迁移、系统切换前采用手工录入、系统切换后通过新系统生成。
1) 系统切换前通过工具迁移
在系统切换前,利用专门开发的数据迁移程序或ETL(Extract Transform
Load)工具把旧系统中的历史数据抽取、转换,并装载到新系统中去。其中ETL
工具可以购买成熟的产品,也可以是自主开发的程序。这种方法是数据迁移最主
要,也是最快捷的方法。其实施的前提是,历史数据可用并且能够映射到新系统
中。
数据抽取、转换是根据新旧系统数据库的映射关系进行的,而数据差异分析
是建立映射关系的前提,这其中还包括对代码数据的差异分析。转换步骤一般还
要包含数据清洗的过程,数据清洗主要是针对源数据库中,对出现二义性、重复、
不完整、违反业务或逻辑规则等问题的数据进行相应的清洗操作,在清洗之前需
要进行数据质量分析,以找出存在问题的数据,否则数据清洗将无从谈起。数据
装载是通过装载工具或自行编写的SQL程序将抽取、转换后的结果数据加载到
目标数据库中。
2) 系统切换前采用手工录入
在系统切换前,组织相关人员把需要的数据手工录入到新系统中。主要是一
些无法转换到新系统中的数据,和新系统启用时必需要而旧系统无法提供的数据
采用这种方法。
3) 系统切换后通过新系统生成
在系统切换后,通过新系统的相关功能,或为此专门开发的配套程序生成所
需要的数据。通常根据已经迁移到新系统中的数据来生成所需的信息。其实施的
前提是,这些数据能够通过其它数据产生。
2.3 数据迁移回退措施
如果割接不成功,应恢复到割接前的状态或其他预备方案。当发现该步骤不
能完成时,或者中途出现异常故障且无法在预定的时间内恢复时,那么就应该进
行回退处理,将数据及其他相关信息恢复到数据迁移前状态。
2.4 数据迁移后的校验
在数据迁移完成后,需要对迁移后的数据进行校验与测试工作,以保证数据
迁移的成功率。数据迁移后的校验是对迁移质量的检查,同时数据校验的结果也
是判断新系统能否正式启用的重要依据。可以通过以下两种方式对迁移后的数据
进行校验。
1) 对迁移后的数据进行质量分析
可以通过数据质量检查工具,或编写有针对性的检查程序进行。迁移后数据
校验的指标主要包括五方面:完整性检查,引用的外键是否存在;一致性检查,
相同含义的数据在不同位置的值是否一致;总分平衡检查,例如合同款指标的总
和与分科室不同粒度的合计对比;记录条数检查,检查新旧数据库对应的记录条
数是否一致;特殊样本数据的检查,检查同一样本在新旧数据库中是否一致。
2) 新旧系统查询数据对比检查
通过新旧系统各自的查询工具,对相同指标的数据进行查询,并比较最终的
查询结果;先将新系统的数据恢复到旧系统迁移前一天的状态,然后将最后一天
发生在旧系统上的业务全部补录到新系统,检查有无异常,并和旧系统比较最终
产生的结果。