APP下载

数据同步技术在高校数据中心的应用

2020-06-08魏李方

电脑知识与技术 2020年10期
关键词:触发器数据库

魏李方

摘要:针对我校应用系统众多、数据库繁杂的情况,根据不同的场景、要求和条件,采用不同的数据同步技术来保证我校人事、财务、教务、学生、学工和一卡通等基础数据的一致性。该文分析了几种常用的数据同步技术,并结合我校实际情况,介绍我校数据中心在不同的应用场景下所采用的数据同步技术。

关键词:数据库;数据同步;触发器;ODI;Oracle Job

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2020)10-0266-03

1背景

随着信息化的发展,高校中各种应用系统越建越多,数据库环境也越来越复杂,同时这些庞杂的数据库之间还需要保持各种基础数据的一致和正确,为此就需要使用各种数据同步技术。所谓数据同步,就是将数据从源数据源经过清洗、转换之后复制到另一个或多个目标数据源的过程,复制完成后双方数据达到一致。

为了满足日益复杂的数据同步需求,很多学者已经在数据同步相关领域进行了各种技术层面的研究和实践,比如寇媛媛,王晓明,乔文文的数据库同步技术的研究与应用,罗永有、梁超香的基于ODI的高校异构系统数据集成的研究与实现。刘树、徐硕等一种基于触发器的数据同步系统的研究及关键技术实现等。本文结合实际情况,介绍了常用的数据同步技术和这些技术在我校的应用情况。

2主要技术

2.1触发器数据同步

在数据库中,触发器(trigger)是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发。当对一个表进行insert、delete或update等操作时,触发器就会被执行。触发器可以是简单的查询SQL语句,也可以是复杂的插入、删除、更新SQL语句。触发器分为语句级触发器和行级触发器。所谓语句级触发器,是在指定的操作语句之前或之后执行一次,不管影响多少行数据,都只会执行一次。而行级触发器则是指在每一条数据发生变化时操作都会被触发,即多少行数据发生变化,就触发多少次触发器。

不同的数据库有不同的触发器规则,在Oracle数据中,一个表上最多可有12个触发器,同一时间、同一事件、同一类型的触发器只能有一个。一般而言,在触发器的执行部分只能用DML语句(SELECT,INSERT,UPDATE,DELETE),不能使用DDL语句(CREATE,ALTER,DROP)。在触发语句中一般不能包含事务控制语句fcOMMIT,ROLLBACK,SAVEPOINT),在触发器主体中调用的任何过程、函数,也不能使用事务控制语句。

触发器是在表中数据发生变化时自动强制执行,当触发器由于某种原因执行失败时会阻断数据更新过程,从而导致该数据库之上的业务系统执行时出现异常,一般这种异常无法被业务系统捕捉到。触发器的这种固有缺陷也限制了其在数据同步中的使用。

2.2定时任务

所谓定时任务,就是一个Job,在规定的时间内,执行数据库中指定的“存储过程”。在实际数据同步时,先在源数据库和目标数据库之间建立一个远程连接;之后编写一个用于完成将源数据库中的数据同步到目标数据库的存储过程;最后设置一个定时任务,在该定时任务中执行上述存储过程,即可实现定时数据同步。

使用定时任务进行数据同步,由于数据同步操作不是在业务数据更新时同时进行,而是在一个固定的时间间隔内进行,所以数据同步过程对业务数据更新没有任何影响。由于数据存储过程功能强大,也能实现比较复杂的需求。在不同的使用场景中,定时任务间隔时间可以根据需要进行调整,基本能满足高校环境中数据同步的时限要求。

2.3数据同步工具

由于数据同步的非常重要并存在广泛的需求,很多公司都开发了适应于不同场景和工作要求的数据同步工具。这些数据同步工具也在高校数据中心的数据同步中得到了广泛的应用。下面介绍几种比较常用的数据同步工具。

2.3.1ODI

ODI(Oracle Data Integratorl是Oracle公司开发的一个综合数据集成平台。ODI完成数据集成过程中最为重要的ETL(Ex-tract-Transform-Load,提取一转换一加载)环节。ODI能够在异构数据源之间以批量、实时、同步、异步模式实现高性能的数据转换与传输。ODI能保证数据在各业务系统之间的一致性,避免冗余数据,消除“信息孤岛”。由于ODI强大的功能,ODI非常适合在高校的数据环境中进行数据同步。

2.3.2DataX

阿里公司的DataX是一款异构数据源离线同步工具。DataX基于python开发,可以实现包括Oracle、SQL Server、MySQL、OceanBase等多种异构数据源之间高效的数据同步功能。DataX提供了丰富的数据读写插件,支持多线程执行,从而使数据同步非常便捷高效。

Datax还可以根据实际业务需求对同步的数据按照一定的规则进行清洗、过滤及转换,进而提高数据同步的数据准确度,最终为数据高质量同步提供可靠的保障。

2.3.3 Sqoop

Sqoop是一款开源的数据同步工具,主要用于在Hadoop與传统的数据库(Mysql、Postgre等)之间进行数据的传递,可以将关系型数据库(例如:Oracle、SQL Serv-er、MySQL、Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

2.4定制数据同步程序

在高校众多的应用系统中,很多应用系统(如财务收缴费系统、网络计费系统等1出于安全、性能方面的考虑,没有向数据中心开放底层数据库访问。这类应用系统的数据同步无法通过之前提到的数据库同步方式来完成,而是通过提供南北向接口的方式来向其他应用系统提供业务数据或完成本应用系统的基础数据更新。这种情况就需要定制开发数据同步程序来完成数据同步工作。

定制开发的数据同步程序能实现更为复杂的数据过滤、转换、清洗功能,并能根据时效性要求选用不同的技術方案实现实时或定时的数据同步。定制开发的数据同步程序由于功能强大、灵活性高、适应性强,在高校的数据同步中使用非常广泛。

3数据同步技术的应用

根据不同的要求和场景在数据同步时选用不同的数据同步技术。下面简单介绍各种技术在我校的使用情况。

3.1触发器数据同步

同一个数据库服务器上部署的多个数据库之间数据同步可以使用触发器来完成。我校数字化校园系统采用的是正方软件股份有限公司的统一门户平台、统一身份认证平台和统一数据库产品。统一数据库平台中存放教工、学生、财务等公共数据。统一身份认证平台存放了数字化校园的用户信息、权限信息等身份认证信息。当统一数据库中教工、学生信息发生变化时,使用触发器将变化的信息同步到统一身份认证系统中,并由统一身份认证系统将更新信息发送到LDAP服务器,供其他应用系统使用。图1为触发器数据同步。

3.2定时任务

定时任务一般用来处理需求比较简单、现有数据同步工具处理不方便,又不需要定制开发程序就可以完成的数据同步。我校数据中心到一卡通的教工和学生的基本信息的数据同步就是通过定时任务来实现的。定时任务主要有名称、类型、存储过程、开始日期、结束日期、运行频率等几个因素。配置示例如图2。

3.3数据同步工具

在众多的数据同步工具中,我校主要使用的是Oracle公司开发的ODI。目前,ODI完成了教务系统到数据中心的学生、学籍、成绩、课程、教室、考试安排的教务相关信息;完成学工系统到数据中心的收缴费信息、贷款信息、注册信息等学工相关信息;完成财务系统到数据中心的学生、人事、组织结构、收缴费信息等财务相关信息;完成安保信息系统和数据中心之间的教工、学生、宿舍、车辆、门禁等安保相关信息;完成各院系机房管理系统和数据中心之间的人员信息、一卡通、黑名单等信息的同步;教评系统和数据中心之间的班级、教室、课程表、单位、教工基本信息、课程等教评相关信息的数据同步。

图3为数据同步工具数据同步图。

3.4定制程序数据同步

在数据同步需求比较复杂不能通过上述方法进行或应用系统没有开放数据库访问的可以通过定制程序来实现。通过定制数据同步程序来实现数据同步的方法在我校网络计费系统用户信息同步;邮件系统用户、组织机构信息同步等场景中得到了应用。我校网络计费系统数据同步程序的流程如下:

1)数据中心根据网络计费系统需求提供用户信息视图。

2)定制程序读取数据中心提供的用户信息,将数据库中的用户信息和网络计费系统中的用户、计费组和计费套餐等信息进行比较,检查网络计费系统中的数据是否和数据中心的数据符合。

3)如果不符合,根据情况调用网络计费系统提供的北向接口进行处理。

4)如果符合,则继续处理下一条数据。

5)定时重复以上步骤。

4结束语

实践表明,在高校复杂的业务环境下,很少有一种数据同步技术能完全满足所有业务系统的数据同步需求。根据不同的情况采用不同技术灵活地实现数据同步功能是数据中心的最优选择。在工作中,也应密切跟踪数据同步新技术的发展,不断将合适的新技术应用到数据同步的工作中。

猜你喜欢

触发器数据库
主从JK触发器逻辑功能分析
使用触发器,强化安全性
对触发器逻辑功能转换的分析
触发器逻辑功能转换的两种方法