基于ETL技术的数字化校园共享数据中心设计
2015-03-02赵健
摘要:数据的抽取、转换与加载(ETL)是数据整合的核心过程。在分析高校信息化建设现状基础上,以建立数字化校园、整合数据资源、实现数据共享为目标,提出以ETL为基础建立共享数据中心实现数据整合的方案。介绍了共享数据中心的结构,并研究了从业务系统到共享数据中心的ETL过程设计方法。
关键词:ETL;共享数据中心;DTS;同步
DOIDOI:10.11907/rjdk.143623
中图分类号:TP3-05
文献标识码:A 文章编号文章编号:16727800(2015)001001603
基金项目基金项目:
作者简介作者简介:赵健(1982-),女,浙江湖州人,硕士,嘉兴职业技术学院教务处讲师,研究方向为计算机科学与技术、教学管理。
0 引言
随着办学规模的扩大,高校对信息化建设的要求越来越高,各种管理系统先后建成并投入使用。在工作效率提高的同时,问题也逐渐显现:由于受系统使用或开发时间、经费、目的等限制,各部门之间的业务系统处于相互独立的状态,彼此之间不能实现数据交换,从而导致部门间形成“信息孤岛”,造成数据无法有效共享、应用缺乏有效集成以及冗余数据无法处理的现象。因此,构建数字化校园,将全校范围内的各个业务系统进行高效整合,以实现管理的一体化和资源共享,已成为高校信息化的建设重点。
1 ETL概述
ETL(ExtractionTransformationLoading),即数据的抽取、转换与加载,是将分散、零乱、标准不统一、码制不一致的数据整合到目标数据库中的技术[1]。它从各种原始的业务系统中提取数据,按照一定规则进行数据转换,最后将转换的数据按计划导入目标数据库中[2]。
1.1 数据抽取
数据抽取指业务系统将源数据抽取至目标数据库。对于不同数据平台、不同源数据形式及数据量、不同性能要求和业务量的业务系统,应采取不同的数据抽取接口。典型的数据抽取接口包括数据库接口和文件接口。在数据抽取时,数据抽取效率应放在考虑的首要位置,同时也不能忽视抽取过程对现有业务系统性能及安全的影响。
1.2 数据转换和数据清洗
从业务系统中抽取的数据因为有些来自不同系统,具有不同格式,导致了数据不一致的情况。因此在加载到目标数据库之前,必须对数据进行转换和清洗,将从不同业务系统中抽取出来的数据进行转换、清洗、拆分、合并等处理,以保证数据的完整性和一致性。
1.3 数据加载
数据加载是将从数据源系统中抽取出来的数据经过转换与清洗后装载到目标数据库中。数据加载工具通常要求具有高效的性能,否则会影响整个ETL的效率[3]。
2 共享数据中心架构
共享数据中心是收集、存储和处理全校各类共享数据,同时为全校提供信息共享服务的平台。共享数据中心是基于数据管理与利用的综合性技术方案,它的建立可以在存放大量数据的同时有效地管理数据,以实现系统集成和各个系统之间的数据共享,同时提供数据访问手段,以保证数据的及时性、完整性和一致性[4]。
采用共享数据中心进行数据整合的好处是:原有各个部门比较成熟的系统仍然保持独立运行,各业务数据库与共享数据库通过XML接口相互通信。需共享的数据如学生信息、教师信息等被抽取到共享数据库中,各个业务部门之间的数据共享都要通过对共享数据库的数据订阅来完成,而不需要通过手工或映射方式从其它部门获取。共享数据中心的数据来自权威的数据提供部门,所有数据都有唯一维护者,从而保证了数据的准确性和权威性。因此,采用共享数据中心是一种比较好的数据整合方案[5]。共享数据中心结构如图1所示。
图1 共享数据中心结构
3 数字化校园共享数据中心ETL设计
3.1 历史数据的ETL过程
在共享数据中心建立之初,需抽取各业务系统的公共数据作为其历史数据。该ETL过程需要选择合适的ETL工具,若自行开发,可满足项目的特殊需要,但周期长、通用性差、效率低;若选择通用的ETL工具,能够对不同领域及需求的业务给予很好的支持,用户不必过多关心数据库的各种内部细节,只需专注于功能,且无须花费额外的开发时间,但往往价格不菲。综合比较各种ETL工具,最后选择了MicroSoft SQL Server 2000自带的ETL工具DTS(Data Transformation Services数据传输服务)实现从业务系统数据库到共享数据库的ETL过程[6]。
DTS作为SQL Server的一个工具,能支持ODBC或JDBC的数据接口,主要用于实现各种不同数据源之间的数据转移。其具有图形化的界面,也是一个可编程对象。DTS所支持的源数据库和目标数据库包括SQL Server、Oracle、DB2、Sybase、Access、Excel等所有使用OLE DB的数据库,转移形式包括数据导入、导出以及数据转换。在进行数据转移时,可以通过指定不同的转换规则在具有不同名称、大小、数据类型、精度等数据之间进行数据复制[7]。
利用DTS实现ETL,首先必须创建数据转换服务(DTS)包,选择需要连接的源数据库与目标数据库,当业务系统与共享数据中心连接后,需要创建“转换数据任务”,并对其进行设置,抽取业务系统中的数据,导入到数据准备区。
“转换数据任务”主要用于实现源数据库与目的数据库之间的数据复制,可实现任何支持OLE DB数据连接之间的复制和转换。并且该任务能选择性地将列级转换应用于数据,可以实现DTS中最基本的数据抽取。
进行“转换数据任务”的配置步骤如下:①建立连接;②设置源数据和目的数据属性;③设置转换属性。默认的转换映射为直接进行数据复制。如果源数据与目的数据之间存在异构,则需要设置转换属性,如将源列与目的列重新匹配,或者选择其它转换类型。
对于不能直接进行匹配的字段,则可以通过编写脚本语言的方式解决数据转换问题。如教务管理系统的学生基本信息表中“xb”字段表示学生性别,而共享数据中心学生基本信息表中学生的“XB”字段则是用性别代码表示。
可以在代码框中输入如下代码:
Function Main()
if DTSSource("xb")="男"then
DTSDestination("XB")="1"
Else DTSDestination("XB")="0"
end if
Main=DTSTransformStat_OK
End Function
通过该方式可以将学生性别由“男”、“女”转换成性别代码“1”和“0”,再加载入共享数据库。
又例如学生的出生日期格式极不统一,同样是1990年5月10日出生,有些为90-05-10,有些则是19900510、900510或10-may-90。对于这些多样化的日期格式,若不在导入共享数据库的过程中进行统一,则必然会影响日后如学生年龄的统计与分析,因此也可以利用“ActiveX脚本转换属性”通过编写代码进行学生出生日期格式的统一。因为在学生的身份证号中体现了出生日期,所以可以利用mid函数截取身份证号中表示出生日期的部分,将出生日期统一以19900510的格式显示。具体代码如下:
Function Main()
Dim csrqstr as char,sfzhstr as char
sfzhstr= Trim(DTSSourse(“sfzh”)
Csrqstr=Mid(sfzhstr,7,8)
DTSDestination(“sfzh”)=csrqstr
Main=DTSTransformStat_OK
End Function
利用DTS工具不但能实现在共享数据中心创建之初进行历史数据的全量抽取,还可以将一些符合特定条件的数据ETL至共享数据库。如每年开学初有大量新生信息进入教务管理系统,共享数据库中的学生基本信息表也必须更新。这些数据在从教务管理数据库到共享数据库的ETL过程中如果采用全表删除方式会大大加重系统负担,因此可以通过在DTS的转换任务属性中编写SQL查询语句,将抽取条件限定为年级字段值等于录取年份,实现起来非常简便,抽取效率也非常高。
3.2 实时同步数据的ETL过程
对于历史数据而言,使用DTS可以方便地实现ETL过程,但在实时性要求较高的情况下,则显得不太合适。例如教务管理系统的学生基本信息发生了变化,共享数据中心只有在数据转换服务包执行了以后数据才会更新,而这往往在某一个特定时间才会发生。如果在此之前有业务系统向共享数据中心提取了学生基本信息,则会造成数据不准确,因此还要考虑数据的实时同步问题。当提供共享数据的权威部门数据发生变化时,应及时将这些变化提交到共享数据库,以保证共享数据库中数据的准确性与完整性,同时也要将这些变化及时更新到订阅这些数据的业务部门[8]。
实时同步数据的ETL过程可分为3个步骤:①建立Insert、Modify、Delete触发器以获取实时的增量更新数据并进行数据类型转换以及数据清洗;②将这些增量更新的数据存放到更新数据记录表中并记录下操作序列和操作类型(Insert、Modify、Delete);③由共享数据中心的数据同步服务通过调用Web服务连接该更新数据记录表,进行业务数据库与共享数据库的同步。其过程如图2所示。
图2 实时同步数据的ETL过程
更新数据记录表负责记录业务系统中数据的所有更新操作,包括数据的增加、删除、修改等。不管是何种更新操作,在更新数据记录表中都会有一条记录,以表示业务系统中数据的修改,包括记录操作的类型是增加、删除或修改,修改数据的具体内容等。
更新数据记录表建立在业务系统端,其结构是共享数据库中业务数据表的字段加上控制字段,包括变化发生的时间、变化类型以及改变记录的主键。
控制字段如下:
字段名:CREATE_TIME
类型:DATETIME
说明:记录这条变化数据发生的时间
字段名:CHG_TYPE
类型:CHAR(6)
说明:记录该变化数据的变化类型(INSERT、DELETE、MODIFY)
字段名:SDC_ID
类型:INT
说明:该字段自动生成,作为记录的流水号,用于作为更新数据记录表的主键。
下面以教务管理系统到共享数据中心的实时同步为例,介绍实时同步数据的ETL过程。
在业务系统上创建触发器(包括插入、删除和修改3种类型),当业务系统的数据发生变化时,则触发了触发器,通过触发器在更新数据记录表上添加记录。为教务管理系统学生基本信息表创建触发器的部分代码如下:
create trigger trg_xsjbxxb
on xsjbxxb
for insert as
declare @xh char(10) declare@xm char(10)
……
declare@ksh char(20)declare@bz char(20)
select
@xh=xh,@xm=xm,
……
@ksh=ksh,@bz=bz
from inserted Inst
insert
into tb_xsjbxxb values (@xh,@xm……@ksh,@bz, 'insert')
为教务管理系统创建发布更新数据的Web服务部分代码如下:
string sql="select * from tb_xsjbxxb";
SqlDataAdapter da = new SqlDataAdapter(sql,con);
DataSet ds = new DataSet();
da.Fill(ds," tb_xsjbxxb");
con.Close();
return ds;
为教务管理系统创建清除更新数据记录表的Web服务部分代码如下:
string sql="delete from tb_xsjbxxb";
SqlCommand com=new SqlCommand(sql,con);
com.ExecuteNonQuery();
string a;
a="共享数据中心数据更新成功!更新数据记录表数据已清除!";
return a;
4 结语
数字化校园是一个长期的系统工程,共享数据中心是其重要的基础设施。本文提出的基于ETL技术的共享数据中心建设方案使各部门业务系统之间可以实现公共数据的安全共享,消除了原先存在的“信息孤岛”,整个高校各部门之间的协调性和灵活性大大增强,极大地提高了高校各部门的工作效率。
参考文献:
[1] [美]W H INMON.Buildding the data warehouse=数据仓库[M].王志海,译.北京:人民邮电出版社,2004:6870.
[2] 刘映辉,晏妮.基于ETL技术的商业银行自动对账系统[J].中国金融电脑,2009(4):7477.
[3] 张瑞.ETL数据抽取研究综述[J].软件导刊,2010(10):164165.
[4] 党中华,赵健,肖文红.校园网数据整合方案研究[J].科技资讯,2010(12):249252.
[5] 罗妙云.高校共享数据中心平台设计与部分实现[D].广州:华南理工大学,2010.
[6] 李雅莉.决策支持系统中数据仓库的设计[J].中国管理信息化,2009(17):8487.
[7] 黄光明.教学管理数据仓库ETL过程的设计与实现[J].电脑知识与技术,2007(19):3738.
[8] 孔存金.数字化校园共享数据中心建设研究——以新疆师范大学为例[D]. 乌鲁木齐:新疆师范大学,2009.