控制端的实现
控制端程序主要负责提供图形化的数据映射关系增删改操作界面(由于源端与目标端对应表的字段可能不一致,需要手工确定映射关系)。控制端用例关系图如图6所示。
控制端的流程逻辑包括:程序运行时,通过用户输入获取目标端数据库的信息后,连接目标端数据库,读取DBXD.SOURCE表获取源数据库的信息。通过DBXD.SOURCE表获取源数据库的信息可以访问各个源数据库DBXS.MAP_TABLE和DBXS.MAP_FIELD获取已经配置的映射信息。
控制端所需操作的表和字段说明如下:
(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所示。
为了提高系统运行效率和性能,系统对数据抽取和转换不是通过数据表复制来实现,而是通过在数据源端每小时调用一次LOGMINER日志解析该时段的在线REDO日志,然后将解析结果入库,入库结果再按照用户在控制端设置,将语句中相关字段和数据进行转换,以XML文件保存,在用户指定数据同步时间到达时(通过控制端设置),将XML文件上传。目的端程序将XML文件中的操作内容存入Oracle数据库指定表中,数据源端再提取日志存放表中原子操作内容(即SQL语句)执行,达到数据抽取和转换的目的。
实验结果显示日志文件规模直接影响到了数据交换系统的交换频率和交换时间长度。日志文件规模较小时,交换频率偏高会影响到服务器日常工作(LogMiner的运行会影响数据库效率),但是日志文件规模设置较大时,又会导致数据交换时间过长(必须在晚上非工作时间运行)。根据实验结果,日志文件设置为50MB左右是比较合理而且频率和交换时间都处在可以接受的水平。
在数据校园原有多重数据孤岛环境下开发数据交换系统,面对的主要问题还是增量数据如何同步以及数据同步的效率问题。大校园环境下由于有多个校区存在,不能采用集中环境中那种静态数据备份技术,这种技术传输文件大,并且效率很低。因此增量数据同步成为唯一可行的方案。在基于Oracle数据库系统中,增量数据同步就必须解决数据库日志的解析以及增量数据在目标计算机快速入库的问题。利用LogMiner解析Oracle系统日志是实现分布式数据交换系统所要解决前提之一。对LogMiner解析出的日志进行SQL语句分析重构(针对目标数据库的快速入库接口重构)是实现分布式数据同步系统要解决的前提之二。本文实现了数字校园网数据同步系统的技术问题及系统架构问题,并给出了系统实现方案。
(作者单位为厦门大学现代教育技术与实践训练中心)
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。