APP下载

破除校园“数据孤岛”新思路

2015-09-10刘传尧

中国教育网络 2015年4期
关键词:字段孤岛日志

文/刘传尧

现在从国家到学校都非常重视“信息孤岛”问题,并相继投入了大量的人力和财力,本文作者在学校实施教学改革和开展数字校园建设的过程中,通过建设与部署“本科生创新网”、“国家级虚拟仿真实验中心”、“课程中心平台”等几个校级的系统,也确切感觉到“数据孤岛”给数字化校园建设带来的问题。目前主要解决的办法有两种:一种是推翻原有系统,建立校级数据中心,由学校重新规划建设各部门信息系统;一种是对原有的系统进行升级改造,然后实现跨部门之间的实时数据同步,让“数据孤岛”之间的基础数据有效共享、合并冗余数据 。

数字校园“信息孤岛”壁垒

随着信息技术的快速发展,“信息孤岛”(Information Isolated Island)所带来的管理与技术问题在高校数字校园建设中普遍存在,所谓“信息孤岛”指的是相对独立的不同类型的资源信息系统,由于各系统间相互封闭、无法进行顺畅的信息交流,犹如一个个分散、独立的岛屿。其本质的问题就是这些独立的系统之间所生成的数据无法相互共享、数据不一致,这不仅导致了不同的系统因独立管理而产生大量冗余数据,而且由于系统与系统之间无法进行数据关联,特别在大数据时代无法对数据进行科学分析,学校无法通过这些数据进行科学的管理与决策。信息孤岛的产生不是一开始就存在的,它是高校在信息化推进的过程中逐渐产生的一种必然现象。其产生的原因主要是高校在信息化建设初期,在认识上,没有充分理解信息化内涵,过于注重技术而忽略应用;在管理上,缺少统一规划,多个部门各自为阵;在技术上,只注重硬件投入,而忽略软件资源的建设。

“信息孤岛”的存在很大程度上制约了校园信息化的进程,已经成为各高校急待解决的问题。查阅文献发现,目前在关于解决“信息孤岛”问题上,主要还是从政策理论上去避免“信息孤岛”的产生,通过技术来解决现存的“信息孤岛”的方案相关文献比较缺乏,特别是针对高校这种特殊的情况。目前也有专家提出基于信息交换平台的实现方法,比如,李杰玲,雷军程提出基于XML消除高校信息孤岛,郭向阳提出基于数据库复制技术的数据交换平台研究与实现等。本文提出的是一种基于日志解析数据同步的“数据孤岛”解决方案。该方案在许多方面都有其不可替代的优势,这主要体现在:操作方便,适合远程同步操作;实现记录级数据同步;实现表一级数据同步;实现异构表间的数据同步等。进而让远程目标数据库执行同样语句实现数据同步。要解决的主要问题是对Oracle数据库归档日志的提取和分析,以及分析结果的SQL语句重构问题。

Oracle数据库的所有更改都记录在日志中,但是原始的日志信息我们根本无法看懂,而从目前来看,分析Oracle日志的较好的方法就是使用Oracle公司提供的LogMiner工具来进行。LogMiner工具是Oracle8i版本以后新增加的功能。通过LogMiner工具,可以进行日志分析,分析在线日志、离线日志以及数据库的重作日志文件。

在分布式环境下开发数据交换系统,面对的主要瓶颈还是增量数据如何同步以及数据同步的效率问题。分布式环境下不能采用集中环境中那种静态数据备份技术,这种技术传输文件大,并且效率很低。因此增量数据同步成为唯一可行的方案。在基于Oracle数据库的环境下,增量数据同步就必须解决数据库日志的解析以及增量数据在目标计算机快速入库的问题。

数据同步方案的实现

系统总体设计由三大模块构成,分别

系统设计总体思想

本文提出的数字校园的数据同步方案,主要依靠分析Oracle数据库归档日志文件,解析日志中的SQL语句,为数据源端、目的端和控制端。数据源端和目的端以服务的方式运行,控制端为一个在Windows下运行的GUI应用程序。数据源端根据控制端发送的要求,操纵地方各局数据库,然后提供系统所需的源数据。目的端根据用户在控制端的设置,在规定的时间内,抽取数据源端的数据,并进行转换入库。控制端操纵数据源端和目的端服务运行,并提供GUI界面供用户设置系统运行所需配置信息。系统各模块具体定义如表1所示。源端的实现

表1 系统模块定义

源数据端运行存储过程DBXS_LOGDUMP将Oracle数据库最新自动归档的Redo日志文件利用Oracle日志分析工具LOGMINER进行解析,并将结果存入归档日志文件同名的表中,然后源数据端程序(DBXSd)将读取存入数据库的解析结果,并将相关数据库的DML语句按照在控制端配置的数据映射关系进行转换,并以XML文件的格式进行保存,在数据交换时间到达时以FTP方式上传目标数据端。源端用例关系如图1所示。

源数据端主要功能包括:SQL语句分析,通过Flex编写词法解析器,解析并重构符合OTL接口标准的SQL语句;创建XML文件,将构造好的SQL语句依据控制端的表项映射倒入到一个XML文件中;Oracle数据库访问,访问Oracle数据库,从控制端读取同步参数(包括握手参数、时间参数和回滚参数等);客户端功能,向目标端上传构造好的含有SQL语句的XML文件。

图1 源端用例关系

源数据端数据库存储过程包括:自动归档Redo日志和调用LogMiner解析最新归档的Redo日志。源端的输入为经过LOGMINER所解析的归档日志,表的字段为:SCN,TIMESTAMP,SEG_OWNER,SEG_NAME,ROW_ID,SQL_REDO。表名称同其对应的归档日志名称同名。DBXSd将从Redo日志解析中获取的结果,根据控制端配置的表映射信息进行转换,将转换结果以XML文件的形式输出。

文件中的SQL语句按照其SCN号从小到大依次排列:

参数值参数值参数值......

例:

SUCCESS 8888

AAAEEE34566

001

源端流程逻辑即DBXS_LOGDUMP存储过程如图2所示,其过程如下:首先读取DBXS.OM表,获取系统执行数据交换起始时间。判断系统时间是否大于数据交换起始时间,如果不大于则等待。当系统时间大于数据交换起始时间时读取DBXS.ARCHIVED_FILE表,判断从数据交换起始时间到系统时间段日志是否已经被解析。如果未被解析,检索V$Archived_log视图,获取从数据交换起始时间到系统时间的所有归档日志。调用LOGMINER将归档日志解析,存入归档日志同名表中,并将表名称和相关数据结果存入DBXS.DBXS_ARCHIVED_FILE中。如果已经被解析,判断是否有新的归档日志产生。新的归档日志产生时继续执行前面的LOGMINER日志解析步骤的内容进行日志解析。判断是否已经到了系统数据交换执行时间,或数据立即交换标志生效,如果满足以上两条件之一,则运行Archive log switch强行生成归档日志。

图3 源端程序流程

图4 目标端用例关系

图5 目标端流程逻辑

DBXS程序流程如图3,其过程如下:如果DBXS.DUMP_FILE中内容为空,则获取DBXS.OM中的系统执行数据交换起始时间,将DBXS.ARCHIVED_FILE中所有BEGIN_TIME大于数据交换起始时间的归档日志记录进行抽取映射转换,并存为XML文件。如果DBXS.DUMP_FILE中内容不为空,获取DBXS.DUMP_FILE中最大的END_SCN,然后将DBXS.ARCHIVED_FILE中,BEGIN_SCN大于END_SCN的归档日志记录进行抽取映射转换,并存为XML文件。如果DBXS.OM表中MAP_ID发生转变,则清空DBXS.DUMP_FILE中该ID对应的时间不小于数据交换起始时间记录,并删除相应文件,然后将DBXS.ARCHIVED_FILE中从数据交换起始时间到当前时间的记录进行转换。数据交换执行时间到达时或数据交换立即执行命令下发后,将DBXS.DUMP_FILE表中记录从数据交换起始时间到执行时间的XML文件和归档文件上传到指定的FTP目录,并在上传完成后,将上传的文件路径写入DBXD.UPLOAD表中,并将DBXS.OM表中的EXCHANGE_START_TIME设置为此次交换起始时间,EXCHANGE_EXE_TIME设为下次交换起始时间。SQL语句的转换时,对于insert语句要增加对BUREAU_ID和ROW_ID字段的插入,对于update和delete语句要加入判断BUREAU_ID和ROW_ID这两个字段的判断,且要将其转换为带参数的SQL语句。目标端的实现

目标数据端主要负责在数据交换时间到达时,读取源端程序上传的XML文件,将其反向解析为SQL语句,并执行入库。目标端用例关系图,如图4所示。

目标端的主要功能包括:创建DBXD数据库,解析XML文件和入库操作。目标端(DBXDd)输入项为DBXSd程序上传的XML文件。目标端流程逻辑如图5所示。程序初始运行时,判断UPLOAD表是否为空,如果不为空,将里面剩余数据分析完毕。在数据交换时间到达时,访问UPLOAD表,获取源数据端上传的XML文件,进行解析入库,在解析入库前将OM表SYS_STATUS字段置为DBX_SYS_STATUS_EXCHANGING,入库完成后将字段重新置为DBX_SYS_STATUS_IDLE,并将EXCHANGE_EXEC_TIME置为下次数据交换时间。控制端的实现

控制端程序主要负责提供图形化的数据映射关系增删改操作界面(由于源端与目标端对应表的字段可能不一致,需要手工确定映射关系)。控制端用例关系图如图6所示。

控制端的流程逻辑包括:程序运行时,通过用户输入获取目标端数据库的信息后,连接目标端数据库,读取DBXD.SOURCE表获取源数据库的信息。通过DBXD.SOURCE表获取源数据库的信息可以访问各个源数据库DBXS.MAP_TABLE和DBXS.MAP_FIELD获取已经配置的映射信息。

控制端所需操作的表和字段说明如下:

图6 控制端用例

图7 数据同步系统部署

(1) 数据交换时间设置:用户设置数据交换时间后,控制端需要将DBXS.OM和DBXD.OM的EXCHANGE_EXEC_TIME填入用户设置数据交换时间。

(2) 数据立即交换触发:用户触发界面上数据立即交换按钮后,控制端需要将DBXS.OM和DBXD.OM的EXCHANGE_EXEC_IMMEDIATE置位,并将EXCHANGE_EXEC_IMM_TIME字段设置上控制端当前时间。

(3) 源数据端配置:用户添加源数据端后,需将相关信息填入DBXD.SOURCE数据库,和DBXS.OM的DEST_IP、DEST_USER、DEST_PASSWORD、FTP_USER、FTP_PASSWORD字段。

(4) 映射信息增删改:用户在控制端进行映射信息的增删改操作时,将结果写入DBXS.MAP_TABLE和DBXS.MAP_FIELD,并且将DBXS.OM表中的MAP_ID值修改。

(5) 日志显示:通过读取DBXS.OM和DBXD.OM可以获取当前系统运行的日志信息。

(6) 同步控制:通过判断DBXD.OM的SYS_STATUS字段可以判断系统当前是否正在进行同步。

数据同步系统部署

数据同步系统部署图,如图7所示,系统中主要包含用于实现控制的控制端及其数据库、源端程序及数据库、目标端程序及数据库。

本次数据交换系统源端与目标端程序均采用服务进程的方式运行于系统后台,控制端程序负责远程初始化源端程序的数据交换时间、交换数据表的映射关系设置和交换数据的有效起始时间等参数。数据交换系统的实验结果如表2所示。

表2 数据交换系统实验结果

为了提高系统运行效率和性能,系统对数据抽取和转换不是通过数据表复制来实现,而是通过在数据源端每小时调用一次LOGMINER日志解析该时段的在线REDO日志,然后将解析结果入库,入库结果再按照用户在控制端设置,将语句中相关字段和数据进行转换,以XML文件保存,在用户指定数据同步时间到达时(通过控制端设置),将XML文件上传。目的端程序将XML文件中的操作内容存入Oracle数据库指定表中,数据源端再提取日志存放表中原子操作内容(即SQL语句)执行,达到数据抽取和转换的目的。

实验结果显示日志文件规模直接影响到了数据交换系统的交换频率和交换时间长度。日志文件规模较小时,交换频率偏高会影响到服务器日常工作(LogMiner的运行会影响数据库效率),但是日志文件规模设置较大时,又会导致数据交换时间过长(必须在晚上非工作时间运行)。根据实验结果,日志文件设置为50MB左右是比较合理而且频率和交换时间都处在可以接受的水平。

在数据校园原有多重数据孤岛环境下开发数据交换系统,面对的主要问题还是增量数据如何同步以及数据同步的效率问题。大校园环境下由于有多个校区存在,不能采用集中环境中那种静态数据备份技术,这种技术传输文件大,并且效率很低。因此增量数据同步成为唯一可行的方案。在基于Oracle数据库系统中,增量数据同步就必须解决数据库日志的解析以及增量数据在目标计算机快速入库的问题。利用LogMiner解析Oracle系统日志是实现分布式数据交换系统所要解决前提之一。对LogMiner解析出的日志进行SQL语句分析重构(针对目标数据库的快速入库接口重构)是实现分布式数据同步系统要解决的前提之二。本文实现了数字校园网数据同步系统的技术问题及系统架构问题,并给出了系统实现方案。

猜你喜欢

字段孤岛日志
一名老党员的工作日志
不再是孤岛
扶贫日志
《岛上书店》:与书相伴,没有谁是一座孤岛
浅谈台湾原版中文图书的编目经验
雅皮的心情日志
雅皮的心情日志
没有人是一座孤岛
题名与责任说明附注字段用法分析
互联互通破“孤岛”