数据迁移的主要特征_数据迁移的技术准备_数据抽取和转换的准备
数据迁移的主要特征
1.横向划分
以产生数据的时间为划分依据,需要考虑比较久远的历史数据如何迁移的问题。由于信息技术的发展,以及存储工程师对计算机依赖性的增强,每天新系统往往需要比旧系统存储更多的信息,同时为了解决高增长的数据量带来的性能瓶颈,新系统一般只保留一定时期的数据(如1年),而把超过保存周期的数据,即1年以前的数据转移到数据仓库中,以便用于决策分析。对于这种新系统的数据迁移,主要迁移1年以内的数据,1年以前的历史数据需要另外考虑。
2.纵向划分
以处理数据的功能模块为划分依据,需要考虑在新系统中没有被包含的功能模块,其所涉及数据的处理问题。这类数据由于无法建立映射关系,一般不需要迁移到新系统中。但对于模块间耦合度比较紧密的旧系统,在纵向划分时需要注意数据的完整性。
数据迁移的技术准备
数据转换与迁移通常包括多项工作:旧系统数据字典整理、旧系统数据质量分析、新系统数据字典整理、新旧系统数据差异分析、建立新旧系统数据之问的映射关系、开发部署数据转换与迁移程序、制定数据转换与迁移过程中的应急方案、实施旧系统数据到新系统的转换与迁移工作、检查转换与迁移后数据的完整性与正确性。
数据转换与迁移的过程大致可以分为抽取、转换、装载三个步骤。数据抽取、转换是根据新旧系统数据库的映射关系进行的,而数据差异分析是建立映射关系的前提,这其中还包括对代码数据的差异分析。转换步骤一般还要包含数据清洗的过程,数据清洗主要是针对源数据库中,对出现二义性、重复、不完整、违反业务或逻辑规则等问题的数据进行相应的清洗操作;在清洗之前需要进行数据质量分析,以找出存在问题的数据,否则数据清洗将无从谈起。数据装载是通过装载工具或自行编写的SQL程序将抽取、转换后的结果数据加载到目标数据库中。
对数据的检查包括以下6个方面。
(1)数据格式检查。检查数据的格式是否一致和可用,目标数据要求为number型。
(2)数据长度检查。检查数据的有效长度,对于char类型的字段转换到varchar类型中,需要特别关注。
(3)区间范围检查。检查数据是否包含在定义的最大值和最小值的区间中。例如年龄为300或录入日期为4000—1—1显然有问题。
(4)空值、默认值检查。检查新旧系统定义的空值、默认值是否相同,不同数据库系统对空值的定义可能不同,需要特别关注。
(5)完整性检查。检查数据的关联完整性。如记录引用的代码值是否存在,特别需要注意的是有些系统在使用一段时间后,为了提高效率而去掉了外键约束。
(6)一致性检查。检查逻辑上是否存在违反一致性的数据,特别是存在分别提交操作的系统。
数据抽取和转换的准备
数据抽取前,需要作大量的准备工作,具体归纳为如下4个部分。
(1)针对目标数据库中的每张数据表,根据映射关系中记录的转换加工描述,建立抽取函数。该映射关系为前期数据差异分析的结果。抽取函数的命名规则为:F_目标数据表名_E。
(2)根据抽取函数的SQL语句进行优化。可以采用的优化方式为:调整SORTAREA_SIZE和HASH_AREA_SIZE等参数设置、启动并行查询、采用提示指定优化器、创建临时表、对源数据表作ANALYZES、增加索引。
(3)建立调度控制表,包括ETL函数定义表(记录抽取函数、转换函数、清洗函数和装载函数的名称和参数)、抽取调度表(记录待调度的抽取函数)、装载调度表(记录待调度的装载信息)、抽取日志表(记录各个抽取函数调度的起始时间和结束时间以及抽取的正确或错误信息)、装载日志表(记录各个装载过程调度的起始时间和结束时间以及装载过程执行的正确或错误信息)。
(4)建立调度控制程序,根据抽取调度表动态调度抽取函数,并将抽取的数据保存入平面文件。平面文件的命名规则为:目标数据表名.txt。
数据转换的工作在ETL过程中主要体现为对源数据的清洗和代码数据的转换。数据清洗主要用于清洗源数据中的垃圾数据,可以分为抽取前清洗、抽取中清洗和抽取后清洗。ETL对源数据主要采用抽取前清洗。对代码表的转换可以考虑在抽取前转换和在抽取过程中进行转换,具体如下。
(1)针对ETL涉及的源数据库中数据表,根据数据质量分析的结果,建立数据抽取前的清洗函数。该清洗函数可由调度控制程序在数据抽取前进行统一调度,也可分散到各个抽取函数中调度。清洗函数的命名规则为:F_源数据表名_T_C。
(2)针对ETL涉及的源数据库中数据表,根据代码数据差异分析的结果,如果需要转换的代码数据值长度无变化或变化不大,考虑对源数据表中引用的代码在抽取前进行转换。抽取前转换需要建立代码转换函数,代码转换函数由调度控制程序在数据抽取前进行统一调度。代码转换函数的命名规则为:F_源数据表名_T_DM。
(3)对新旧代码编码规则差异较大的代码,考虑在抽取过程中进行转换。根据代码数据差异分析的结果,调整所有涉及该代码数据的抽取函数。