社保信息系统中数据迁移的实现
2011-01-11陈园园
陈园园,陶 飞
(1.苏州工业职业技术学院 信息工程系,江苏 苏州 215104;
2.苏州兴财通用网络科技有限公司,江苏 苏州 215004)
在社保信息系统开发过程中,随着技术的发展和对信息系统要求的不断提高,原有的信息系统不断被功能更强大的新系统所取代.从两层结构到三层结构,从客户机/服务器架构(C/S)到浏览器/服务器架构(B/S),从多个信息子系统到整合的综合性系统.在新旧系统的切换过程中,都必然要面临一个数据迁移的问题.数据迁移对系统切换乃至新系统的运行有着十分重要的意义.数据迁移的质量不仅是新系统成功上线的重要前提,同时也是新系统今后稳定运行的有力保障.
目前在数据迁移的领域中,国内外比较成熟的产品和解决方案,如:美国易安信(EMC)公司与SOFTEK 存储解决方案公司联合发布的EMC/SFTEK 逻辑数据迁移设备( LDMF) 软件和国内比较著名的浪潮公司提出的数据迁移解决方案,实质是数据备份.而本文提出的数据迁移是在信息系统发生变更或进行整合中实现数据迁移,对于这样的现实应用,国内外还没有典型的开发案例,此项研究具有一定的社会意义和经济效益.
1 ETL基本思想和数据迁移的方法
1.1 ETL技术的基本思想
ETL(extract、transform、load)即抽取、转换、加载,ETL原本是作为构建数据仓库的一个环节,是联机分析处理、数据挖掘的基础,现在越来越多地将ETL应用于信息系统中数据的迁移、交换和同步.一个简单的ETL体系结构如图1所示.
ETL基本原理就是从各种原始的业务系统中提取数据,按照预先设计好的规则将抽取到的数据进行转换,最后将转换后的数据按计划增量或全部导入到目标数据库中.其主要功能有:①从不同的网络、不同的操作平台、不同的数据库及数据格式、不同的应用中抽取数据;②数据的转化、数据的重新格式化和计算、关键数据的重新构建和数据总结、数据定位;③跨网络、跨操作平台,将数据按照物理数据模型定义的表结构装入目标数据库中.
图1 ETL体系结构图
1.2 数据迁移的方法
数据迁移可以采用不同的方法进行,归纳起来主要有3种方法:①系统切换前通过工具迁移确定;②系统切换前采用手工录入;③系统切换后通过新系统生成[2].由于社保信息系统数据的复杂性和对数据准确性的严格要求,主要在第一种方法的基础上,使用数据库工具和自主开发程序的方法,把旧系统中的历史数据抽取、转换,并装载到新系统中.这种数据迁移的方法是基于ETL技术的基本思想[3],是社保系统数据迁移中最主要也是最有效的方法.其实施的前提是社保信息系统历史数据可用,并且能够映射到新系统中以完成新旧系统数据的迁移工作.
2 数据迁移的实现
社保信息系统数据迁移的实现具体可分为三个阶段:①数据迁移前的准备;②数据迁移的实施;③数据迁移后的校验.下面具体阐述社保信息系统数据迁移的实现过程[4].
2.1 社保信息系统数据迁移前的准备
社保信息系统数据迁移的大量工作都需要在准备阶段完成,充分而周到的准备工作是完成数据迁移的基础.具体而言,要进行待迁移数据源的详细说明,包括数据的存放方式、数据量、数据的时间跨度,建立新旧系统数据库的数据字典,对旧系统的历史数据进行质量分析,新旧系统数据结构的差异分析,新旧系统代码数据的差异分析,建立新旧系统数据库表的映射关系,对无法映射字段的处理方法,开发、部署数据迁移工具,编写数据转换的测试计划和校验程序,制定数据转换的应急措施.
1) 旧系统数据的分析.要对旧数据进行迁移,首先要了解旧系统的数据结构,包括表和字段,以及多个表之间的关系,并撰写相应的数据库结构文档,供数据迁移程序开发人员阅读、理解.然后要整理旧系统数据字典,明确所有数据代码字段含义,将旧系统的数据字典按照统一格式整理成文档.
2) 旧系统数据质量的分析及清洗.进行数据质量分析主要是指找出二义性、重复、不完整、违反业务或逻辑规则等问题的脏数据,并进行相应的清洗操作.例如在某些旧系统中社保人员基本参保信息中出现一个身份证号对应不同人员的二义性数据;由于某些表的主键没有设置或设置不正确,导致一表中出现多条相同或相近数据.以上情况,可以分别针对各类旧系统的脏数据开发不同数据整理程序,通过不同的查询语句查询出脏数据,用户能在提供的数据整理功能界面上,对脏数据进行整理达到清洗的效果.对于某些可批量修改或整理的数据,可以通过编写后台函数统一处理减少数据清理的工作量,例如根据身份证号重新整理旧系统中参保人员的出生日期等.
3) 新旧系统数据的差异分析.分析新旧系统数据差异是数据迁移中非常重要的一个环节,首先必须拥有新旧系统详细的数据字典文档,在此基础上建立新旧系统数据字典字段映射规则.此外,一些新系统需要但是旧系统无法提供的数据,需要采取合适的手段来处理;一些旧系统存在但是新系统不存在的数据,如果确实需要,可以根据需要修改新系统的表结构.比如cod_sex这个代码表,在旧系统中的值可能是0001为男,0002为女,可是在新系统中,可能是1为男,2为女,若在数据迁移前不进行分析,在数据迁移导入数据的时候就会报错,导致数据迁移无法进行或者迁移结果出错.
4) 数据的检查.数据的检查可以分为6类,分别是对数据格式检查、数据长度检查、区间范围检查、空值与默认值检查、完整性检查和一致性检查.即①检查数据的格式是否一致和可用;②检查数据的有效长度;③检查数据是否包含在定义的最大值和最小值的区间中;④检查新旧系统定义的空值、默认值是否相同,不同数据库系统对空值的定义可能不同;⑤检查数据的关联完整性;⑥检查逻辑上是否存在违反一致性的数据.
5) 数据转换与迁移程序的开发和部署.数据迁移工作通常需要编写大量前后台程序才能得以顺利完成.到目前为止社保信息系统数据迁移具体实施过程中,采用的方法都是通过执行各个后台函数或函数脚本实现,这就需要在准备阶段就逐步编写这些代码,并不断进行测试.需要开发一套高效简便的程序供用户使用.
6) 数据转换与迁移过程中应急方案的制定.在数据迁移过程中可能存在迁移中途失败或其他突发事件,需制定详细的应急方案.例如在数据迁移失败后立即重新启用旧系统,暂缓新系统的使用或者编制多套数据迁移方案,数据迁移失败后立即启用其他方案等.
2.2 数据迁移的实施
数据迁移的实施是实现数据迁移的三个阶段中最重要的环节.数据转换的详细实施步骤为:①准备数据迁移环境;②业务上的准备,结束未处理完的业务事项或将其告一段落;③对数据迁移涉及的技术进行测试;④最后实施数据迁移.
实施数据迁移相对来说工作任务比较明确和简单.首先,需要停止对旧系统的使用,将旧系统数据进行备份.在数据迁移过程中旧系统数据不能有任何改变,如果数据迁移过程中仍有用户对旧系统操作,可能会导致新产生数据无法进入新系统,造成数据的丢失.其次,需要清空系统中所有测试数据,避免与写入的数据产生混淆和冲突,查询数据迁移执行程序是否可正确运行.最后,按照迁移准备中的迁移计划逐步执行数据迁移程序,并实时监控数据库中数据写入情况,以便及时发现问题.以多套旧系统切换到同一套新系统为例,数据迁移程序可按如下过程进行,具体流程如图2所示.
图2 社保信息系统中数据迁移流程图
1) 新旧系统数据分析调研.对新旧系统数据库结构进行分析研究,以新系统运行所需数据为依据,对旧系统现有数据进行对照分析,提取旧系统中可以提供的数据,同时建立新旧系统数据映射关系.
2) 数据格式转换.依据映射关系把旧系统的历史数据进行分析、整理、补录、比对、校验,并进行数据格式转换.此处,选择使用数据库组件的方法进行数据格式转换,数据库软件选用Oracle 9i,对数据库的相关表进行查询、修改和删除等操作以完成数据格式的转换.
3) 数据的对比.数据对比以自动核对为主,人工核对为辅.对于大量采集的数据,采用自动比对的方法.对数据量小的简单数据、有详细原始表的数据、部分自动核对异常的信息,进行人工比对.
4) 数据的迁移.数据在比对过后存放于新系统数据库副本中,其环境与新系统数据库一致.因此,此时的数据迁移即在同一平台同一类型数据库间,进行数据导出、导入即可.
通过以上数据迁移程序,最后将旧系统的数据迁移到新系统,实现参保单位、参保人员信息的一致性、完整性.
2.3 数据迁移后的校验
数据迁移后的校验是对迁移工作的检查,数据校验的结果是判断新系统能否正式启用的重要依据.通过编写检查程序进行数据校验,通过试运行新系统的功能模块,特别是查询、报表功能,检查数据的准确性.具体采用对迁移后的数据进行质量分析和新旧系统查询数据对比检查的方法,对迁移后的数据进行校验.
1) 对迁移后的数据进行质量分析,可通过编写有针对性的检查程序进行.对迁移后数据的校验有别于迁移前历史数据的质量分析,主要差别在于检查指标的不同.迁移后数据校验的指标主要包括:①完整性检查,引用的外键是否存在;②一致性检查,相同含义的数据在不同位置的值是否一致;③总分平衡检查,例如发放记录主表金额的总和与各单位发放金额之和的对比;④记录条数检查,检查新旧数据库对应的记录条数是否一致;⑤特殊样本数据的检查,检查同一样本在新旧数据库中是否一致.
2) 新旧系统查询数据对比检查,通过新旧系统各自的查询工具,对相同指标的数据进行查询,并比较最终的查询结果.先将新系统的数据恢复到旧系统迁移前一天的状态,然后将最后一天发生在旧系统上的业务全部补录到新系统,检查有无异常,并与旧系统比较产生最终的对比结果.
3 结 论
社保信息系统数据迁移是一个复杂的过程,数据迁移质量直接影响新系统的运行情况,因此在保证数据完整性和安全性的前提下,尽量选择简便易行的方法,不但可以避免花费大量人力物力重新输入数据,还能够保证数据不在迁移过程中丢失.实际运行表明,笔者所设计的数据迁移过程实现了社保数据的可靠和较快速的迁移,为社保管理系统的正常运行提供了重要保障.
[1] 史晓燕. 数据迁移的研究[J]. 浙江工商职业技术学院学报,2007,6(3):55-56.
[2] 李永良. 数据迁移在新旧系统中切换[J]. 中国计算机用户,2003,9(35):55-56.
[3] 宋鹏,廉继红. ETL技术在复杂数据迁移项目中的应用[J]. 西安工程大学学报,2008,8(4):493-497.
[4] 夏凯. 三步实现数据迁移[J]. 中国计算机报,2005,1(1):17-18.