数据迁移技术在电力MIS中的应用与研究

2009-06-17 06:48虞秀洪路清霞
中国高新技术企业 2009年5期

虞秀洪 路清霞

摘要:在MIS系统的更新换代中,数据迁移与转换就显得尤为重要和迫切,数据迁移的成功与否直接关系到系统切换的成败。文章介绍了数据迁移技术在电力MIS中的应用。

关键词:数据迁移技术;电力MIS;系统切换;ZEPCIS

中图分类号:TP311文献标识码:A文章编号:1009-2374(2009)05-0018-02

信息技术发展日新月异,许多MIS从单机系统升级到C/S,再发展到目前广为流行的B/S结构,相应的数据库也是从单机版发展到网络数据库。特别是在MIS系统的更新换代中,数据迁移与转换就显得尤为重要和迫切,数据迁移的成功与否直接关系到系统切换的成败。

在我们向浙江省70多个县、区、市推广浙江省电力营销信息系统(ZEPCIS)中,数据迁移技术显的尤为重要和迫切。在我们推广ZEPCIS系统前,各个电力局都有用电管理信息系统,每个局所使用的数据库也不尽相同,包括Fox Base、SQL Server、Fox Pro、Access、Sybase、Oracle等,而新系统ZEPCIS考虑到数据的安全性、稳定性、数据效率和系统的可扩充性,使用Oracle数据库,不可能丢掉源系统的数据而通过全新的数据录入到目标系统,就存在一个数据迁移问题,也就是要把源系统的数据迁移到目标数据库。

一、实现方法

在系统开发和推广初期,我们一直在探索如何用高效简捷的方法实现数据转换和迁移,进而按时完成全省ZEPCIS系统的推广和应用。

ZEPCIS系统主要包括业扩与变更管理、电费计算电量管理、电能计量管理、用电检查管理等四大模块,数据库中总共有338个表。ZEPCIS系统与原来各电力局所使用的用电管理信息系统在数据库设计、表结构、字段编码、代码及含义等方面不尽相同,则给系统切换与数据迁移带来了较大的难度与困难。我们曾经试探性的用Delphi来开发统一的软件来完成数据迁移;在几个局的试验以后发现由于原系统的数据库设计与ZEPCIS差异实在太大,单一的工具软件很难完成全省用电管理信息系统的转换。在经过多次探索和试验以后,我们最终决定采用通过中间数据库过渡的办法和用SQL脚本来实现数据灵活迁移。整个数据迁移总体流程如图1所示。

(一)分析和比较源数据库与目标数据库,设计制定数据转换详细方案

在这一步工作中,主要找出源数据库和目标数据库中表、字段、数据等内容的对应关系。首先,确定需要迁移的数据。通过分析源数据库与目标数据库中数据表的性质、如档案数据、代码数据、中间业务流程数据和历史数据等,根据目标系统确定要转换的数据。通过分析和比较两个数据库的数据字典,找出表结构、代码、编码、字段类型及含义的差异与对应关系。表与表之间、字段与字段之间可能存在一一对应、多对一、一对多和多对多等关系,通过确定对应关系,制定详细数据转接方案。

(二)根据数据转接方案,用SQL脚本设计数据转换程序

不同数据库在字段类型定义、提供扩充函数等方面都有较大差异。根据数据转接方案在设计数据转换程序的时候要考虑到这方面的差异。有了数据转接方案,我们就可以用SQL写出具体、详细的脚本程序。

(三)源数据库复制到中间数据库

中间数据库与目标数据库是同一类型的数据库。在ZEPCIS系统的推广过程中,中间数据库也是用Oracle。中间数据库拥有ZEPCIS系统中的库结构,与目标数据库的不同之处在于中间数据库中没有完整性约束。数据库完整性(Database Integrity)是指数据库中数据的正确性和相容性。数据库完整性约束可分为6类:列级静态约束、元组级静态约束、关系级静态约束、列级动态约束、元组级动态约束、关系级动态约束。因此,在中间数据库的ZEPCIS库结构中,没有字段非空、长度、主键和外键等限制和定义。

为了便于异构数据库之间的数据转换,在系统推广过程中,我们发现把源数据库统一拷贝到中间数据库后再进行处理比较方便和高效。在Oracle中,我们建立一个单独的用户,把源数据库的数据统一放到该用户下。进行数据库拷贝的工具很多,如Dephi提供的Datadump等。通过配置BDE,再用Datadump工具实现源数据库拷贝到目标数据库,在拷贝过程中,我们有时发现在不同的数据库数据转换中出现一些异常现象,如数据拷贝过去后,发现数据不一致(数字出现四舍五入)和大表(含有百万条数据的表)只拷贝部分数据等情况,则

可以通过检查调整系统配置或者进行一些临时处理来解决,如放大数字倍数和把大表调整为几个小表等来处理。源数据拷贝到中间库后,要检查数据的完整性和一致性。

(四)化异构数据库为同一数据库,用SQL脚本实现数据灵活迁移

通过数据拷贝后,化异构数据库为同一数据库,大大方便了数据的转换和迁移。源数据库的数据导入中间数据库后,就可以用数据转接程序把源数据导入中间数据库。由于数据转换程序是根据源系统与目标系统的设计而制定SQL脚本,是比较理想的程序。在实际数据转换过程,由于源数据的差异、重复、缺失等原因而导致SQL脚本在具体的执行中出现一些意外情况,需要根据具体情况对数据转换程序及时进行调整和修改。对导入到中间库后,我们要按照目标数据库的要求对中间库的数据进行统一严格的校验、检查和修改。

(五)对中间库实时更新数据

对于这一步,要视具体源系统的情况而定。对于一些源系统的数据基本能满足目标系统数据的需要,可以略过这一步,在系统切换时,统一从原系统取数据。而对源系统与目标系统在系统功能设计差异比较大,缺少很多目标数据的情况下,建议通过普查数据等手段补充数据。对于原系统业务变更中产生的数据变化也要及时录入中间库。

(六)中间数据库到目标数据库间的数据转换

中间数据库与目标数据库在表结构上基本一致,唯一的不同就是中间库缺少数据的完整性约束,所以数据转换程序相对简单,这部分程序在各个局的推广过程中程序脚本一致。通过建立Oracle的数据链接实现两个Oracle数据库之间的数据迁移。由于目标库有完整性约束,所以在写数据转换程序的时候,要注意数据间的逻辑顺序,数据导入的先后顺序。

二、结语

通过三年多时间的推广,我们完成了浙江省70多个县、区、市浙江省电力营销信息系统的数据迁移和系统推广工作,得到了国家电力公司的肯定和取得了用户的一直好评。数据迁移是一项较为复杂的操作技术,它直接关系到新系统运行的成败,同时也牵涉到系统的二次开发和移值问题,通过对数据进行分类,化异构为同一数据库,通过SQL脚本灵活迁移,建立对应关系,通过数据检查和校验确保数据完整性,符合电力系统的要求,具有普遍性,为电力系统数据库迁移提供了参考和借鉴。