高校信息化建设中共享数据同步机制与实现
2018-07-05苏亚涛
苏亚涛
(亳州学院 电子与信息工程系,安徽 亳州 236800)
1 共享数据中心结构
高校信息化建设中共享数据中心是整个信息同步的核心,共享数据中心数据来源于各应用系统如:人事系统、教务系统、一卡通系统等(见图1)。各应用系统负责对本系统的数据进行维护和管理,共享数据中心的数据与各应用系统数据要保持实时同步,因此数据同步技术是整个共享数据中心的关键技术[1]。
2 数据同步机制与实现
2.1 数据ETL机制
ETL是建立数据仓库的基础,它是对数据分布和异构的有效集成[2]。ETL机制主要由数据抽取、转换和加载组成。数据抽取是指根据目标数据系统的要求从源数据系统中获取数据的过程;数据转换是指根据目标数据系统所需的形式和业务需求,改变源数据系统对数据的需求过程,在转变过程中要根据情况对数据的错误和不一致进行清洗和加工;数据加载是将按要求转换的数据装载到目的数据系统的过程[3]。ETL机制目前已经比较成熟,许多专家、学者提出了很多的ETL策略和模式,Oracle、SQL Server、DB2等主流数据库都提供了对ETL机制的支持。将ETL机制应用于高校共享数据中心,可以实现将分布于各应用系统中的数据与共享数据中心进行数据同步。ETL流程如图2所示。
图1 高校共享数据中心结构
图2 ETL运行机制
2.1.1 数据抽取
数据抽取是从数据源中抽取数据的过程,有全量抽取和增量抽取两种方式。全量抽取简单但效率低;增量抽取效率高,但抽取机制相对复杂。全量抽取是将源数据库中的数据全部抽取,但对于数据量庞大的数据库来说,会增加数据传输的网络流量,增加抽取和转换的时间,全量抽取对于数据量大的数据库来说是不可行的[4]。增量抽取可以有效地避免全部抽取数据,只对上一次数据抽取时间点后数据库中变化的数据进行抽取,增量抽取包括插入、修改和删除数据。
增量抽取效率高、速度快,其关键在于要准确获取变化的数据。增量抽取主要包括触发器方式、时间戳方式、日志表方式、CDC方式、全表对比方式、全表删除插入方式等。触发器方式是指在被抽取的数据表上设立触发器,当该表中产生新增、更新或删除等数据改变时触发器会记录改变数据,然后将改变数据存储在一个临时表中,在临时表中的数据抽取完毕后,再将临时表记录删除。时间戳方式是在源数据表中建立一个时间戳字段,用于记录每一次的抽取结束时间,每次进行数据抽取时,与时间戳字段记录的时间进行对比,只针对上次抽取时间以后的数据进行抽取。全表删除插入方式是在提取数据时删除目标表中的所有数据,然后将源数据表中提取的数据复制到目标表中。全表对比方式是建立一个与源数据表具有相同或相似结构的表,在该表中对源表的主键进行记录,在执行抽取操作时,对该表和源表进行全面对比,对变化的数据进行抽取[5]。日志表方式是指在被抽取的源数据库中,通过系统日志表记录数据变化情况,通过日志猎取变化数据进行抽取。CDC方式是Orcale 9i版本数据库的新技术,CDC方式通过对数据库自身日志进行分析,得出数据变化的情况,Oracle的CDC分为同步和异步两种模式。各种数据抽取方法的效率、准确性的对比见表1所示。
表1 数据抽取方式对比
2.1.2 数据的转换、加工
在抽取源数据库中的数据后,这些数据在编码标准、数据格式方面与目标数据库的要求或格式无法严格匹配,并且数据抽取过程中会出现数据不完整或异常等情况,所以必须对已抽取数据进行转换、加工。数据的转换和加工主要通过ETL引擎或数据库函数实现。数据库中还提供了实现数据转换的函数,可以利用这些函数进行数据转换,但通过函数进行数据的加工有一定的局限性。
2.1.3 数据装载
数据转换和加工后,要将数据存储到目标数据库中,数据的装载使用SQL语句对目的数据库进行更新,常用的SQL语句如insert、update、delete等。为了提高装载效率,特别是装载数据量较大时,可以采用批量处理,如sqldr 等。
2.2 Oracle数据库间数据同步
由于Oracle是当前使用最广泛的数据库,因此针对Oracle进行数据库间数据同步进行详细介绍,Oracle的数据同步机制有多种方式,如DLL方法、Orcale快照。
2.2.1 传统数据同步方法——DLL方法
DLL方法是基于Oracle数据库链接,在目标数据库中建立对应于源数据库的表或视图。数据同步可以采取时间戳更新、全表删除插入、全表比较更新等。具体操作步骤如下:
步骤1:在目标数据库中配置与源数据库对应的实例名(服务名)。对tnsname.ora文件进行如下配置。
SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=IP)(PORT=port))——“IP”为具体IP地址,“port”为端口号
(CONNECT_DATE=(SERVER=DEDICATED)
(SERVICE_NAME= SERVICE_SOURCE)))
步骤2:对目标数据库建立DBLink。
create dataBase like DL_SD connected to user indetifide by password using ‘S_SOURCE’;
其中DL_SD是DB Link的名称,user、password为源数据库的用户名、密码,S_SOURCE为配置的实例名(服务名)。
步骤3:建立与源数据库对应的数据库表或视图。
create table Table1 as select *from Table1 @S_SOURCE;
create or replace view V_S1 as select * from Table1 @S_SOURCE;
步骤4:采用全表删除插入、对比更新、时间戳更新进行对数据同步。
Delete from Table1;
Insert into Table1 as select*from S_SOURCE @S_SOURCE;
同步方法根据实际情况而定,如在校园一卡通系统人员信息表使用全表删除插入方式进行数据同步,消费信息表使用时间戳方式进行数据同步。
2.2.2 Orcale快照
Orcale数据库的快照是在目标数据库中建立数据表,在源数据库中对需要同步的数据表建立快照日志,日志表将记录其对应表中的数据的变化,当快照刷新时,被处理后的源数据表中变化数据将存储到目标数据库中的表中。对Oracle数据库和远程数据库必须以DB Link为基础。DB Link建好后,再执行如下步骤:
步骤1:建立源数据库表快照日志。
Create snapshot log on S_SOURCE;
步骤2:建立共享数据中心的快照。
create snapshot S_N1_ Table1 as select * from Table1 @AS SELECT * FROM S_SOURCE @S_SOURCE;
步骤3:设置刷新时间。
alter snapshot S_N1_ Table1 refresh fast start wite sysdate+10/24*60 next trunk(sysdate)+1+1/240;
其中,“start”为设置执行刷新的时间为10 m后执行,“next”表示每天1点进行刷新。
由于教务系统中的数据都采用快照模式来同步数据,因此需要在现有的教务系统数据库中建立相应的快照日志,并通过快照的定时刷新来同步数据。
2.3 Oracle透明网关
当为非Oracle数据库系统时,Oracle数据库提供了透明网关来实现数据同步。MS SQL Server、Sybase、DB2等主流数据都可以被Oracle透明网关支持。如图3所示,其他数据库通过Oracle透明网关与Oracle服务进行交互,透明网关服务器对于Oracle服务器来说就是一个Oracle服务器。
图3 Oracle透明网关结构
以MS SQL Server为例说明透明网关的配置(以下建立文件的路径为“%ORACLE_HOME% etwordadmin”):
步骤1:建立源数据库在共享数据中心Oracle数据库下的别名byname。建立文件initTEST.ora编辑其内容:
HS_FDS_CONNECT_INFO=”SERVER=192.168.10.100;DATABASE=byname”
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
步骤2:建立listener编辑其内容。
(SID_DESC=
(SID_NAME= byname)
(ORACEL_HOME=D:oracleproduct10.1.0db_1)
(PROGRAM=tg4msql))
步骤3:修改tnsnamees.ora。
ZNDB=
(DESCRIPTION=
(ADDRESS_LIST=
SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=IP)(PORT=port))——“IP”为具体IP地址,“port”为端口号
(CONNECT_DATA=(SID= byname))
(HS= byname)))
说明:在MS SQL Server透明网关的配置中,需要安装Oracle透明网关组件,且运行在windows系统之上。至此,配置工作完成,可以建立数据库连接(DB Link)实现Oracle与SQL Server的数据库连接。
2.4 第三方程序实现数据同步
除了使用Oracle自带的数据同步机制,还可以开发第三方的程序进行数据库间数据的同步。这样可以减少源数据库共享数据中心对数据转换和加工的负担。特别是针对一些学校原有系统普遍使用SQL Server数据库的情况[6],即使使用透明网关,但只能部署在windows服务器上,容易导致操作不稳定,所以在SQL Server与Oracle之间的数据同步中,可以开发一些数据同步的程序。
2.5 定时进行数据同步
数据同步包括两种方式:定时同步和实时同步。实时同步容易造成对数据库的频繁操作,导致数据库负载过大。因此,在没有特殊要求的情况下,最好使用定时同步方式进行数据同步。
定时数据同步可以避免在峰值时间增加对数据的访问,有效减轻数据库的负担。例如,一卡通数据库中师生的存取、消费数据,对这些数据进行统计和分析,可以很好地掌握校园消费状况,这部分数据的实时性不强,可以每天或几天进行查询一次,因此可以设计成定时数据同步,如数据同步时间定为每天凌晨。定时同步分为Oracle的定时任务和第三方程序定时同步两种方法。
2.5.1 Oracle定时任务
Oracle提供了一种定时执行任务的功能——Oracle job。先编写存储过程实现数据同步功能,再通过Oracle job完成存储过程的定时执行。job的代码如下:
Variable job_N1 number;
Begin
——每天3点执行
Dbms_job.submit(:job_N1,‘ykt.p_jwc_tb_all;’,to_date(‘2017-08-20 3:00:00’,‘yyyy-mm-dd hh24:mi:ss’),‘TRUNC(SYSDATE+1)+(3*60+30/(24*60))’);
Commit;
End;
2.5.2 第三方程序定时同步
Oracle定时任务仅适用于Oracle之间的数据同步,但现实中,也会出现使用非Oracle数据库情况,这时可以使用Oracle透明网关或第三方程序来实现同步。已经对Oracle透明网关进行了阐述,第三方同步程序中会使用一个定时线程来对同步时间进行设置,程序会按照同步时间实现数据同步。
执行数据同步需要考虑到数据库的负担问题,大部分数据同步都使用定时同步,但也有一些情况需要进行实时同步,如学生课程成绩数据库中的数据,教务系统对成绩进行修改后,就需要及时与共享数据中心数据进行同步,否则就会影响学生实时查询、打印成绩。针对这种情况可以考虑使用如触发器同步或采取教师客户端手动同步机制,即以成绩更新为触发数据同步操作或教师手动操作完成数据同步。
3 结 语
共享数据中心是高校数据资源共享统一服务平台应用的共享和交流平台,是智慧校园中各种结构化数据或数据交换平台和各种应用系统的统一管理平台,数据同步机制与实现为进一步的数据挖掘和数据分析提供重要依据。
[1] 邱 亮.关于分布式云数据中心架构及管理关键技术研究[J].电子技术与软件工程,2016(09):97-99.
[2] 黄 峰.分布式云数据中心架构及管理关键技术[J].自动化仪表,2014(08):35-37.
[3] 舒 晖,任 宇.基于信息化环境的网络教学与资源共享管理平台建设[J].中国现代教装备,2017(21):41-43.
[4] 马文龙,朱妤晴,蒋德钧,等.Key-Value型NoSQL本地存储系统研究[J].计算机学报,2017,40:1-35.
[5] 刘 露,郭 磊,杨秀云,等.数字化校园三大平台建设研究[J].电子技术与软件工程,2017(10):187-188.
[6] 刘业峰.基于BS结构的B2C电子商务管理系统设计与开发[J].沈阳工程学院学报:自然科学版,2017,13(1):59-65.