数据库同步编程解决方案

2017-08-31 21:51王站立
关键词:字段线程编程

王站立,修 玮

(朝阳师范高等专科学校,辽宁朝阳122000)

【学术研究】

数据库同步编程解决方案

王站立,修 玮

(朝阳师范高等专科学校,辽宁朝阳122000)

在实现信息系统过程中,多个异地的数据库需要实现相互同步.不同的数据库系统根据本身规则提出的数据库同步方案五花八门,而且约束繁杂.所以数据库管理员可根据系统环境不同编程来实现数据库同步.

数据库同步;编程;解决方案

在信息化社会中,信息是进行决策管理和科学研究的前提条件.数据库是管理信息系统、决策支持系统、办公自动系统等各类信息系统的核心部分[1].在信息系统中,多个异地数据库服务器可能形成树型的逻辑结构,即一个服务器只能有一个上级服务器,但可以有多个下级服务器,所以将需要同步的数据分为向上同步和向下同步.向上同步是指将本级服务器数据同步至上级(根节点方向)服务器中,而向下同步指将本级服务器数据同步至下级(叶子节点方向)服务器中.异地数据库同步已经成为一个重要研究方向,下面以Oracle数据库系统为例,说明如何通过编程实现数据同步.

1 方案分析

在实现过程中需要注意几个事项:首先,当本级服务器同步数据到远程服务器后,远程服务器应该避免再把同一数据同步回本级服务器,否则会造成死循环;其次,本级服务器向远程同步过程中,对于当前数据库同一个表的数据,可能需要同步至不同的远程服务器,而不是将表的全部数据同步至所有下级服务器[2].例如:将“人员信息表”中工作单位为辽宁地区的人员同步至沈阳服务器,将工作单位为吉林地区的人员同步至长春服务器,这样在向远程服务器同步时,查询需要同步的数据需要附加条件,并且需要指定将数据同步到哪个服务器.

2 实现流程

考虑实现过程的复杂度,本文在同步过程中不考虑表结构的不同,默认为各个服务器中表结构相同,而且仅同步表数据,并不同步表结构.主要流程及步骤如下:

2.1 读取同步控制信息表

表1为同步控制信息表,用来存储控制实现同步线程(任务)的启动、频率等信息.同步线程中每间隔10 s(甚至更短时间)读取本表信息,然后决定是否开启一次同步过程.其中字段SynchInterval为同步线程的执行频率,数据库管理员可根据网络带宽、数据库性能等综合因素酌情设置或修改.如果本表信息同时满足以下条件那么启动同步过程,否则没必要启动同步:(1)Enabled标志为1(启用);(2)LastSynchTime + SynchInterval <系统当前时间,说明超过同步周期.

表1 同步控制信息表

字段名类型及宽度说明SynchIntervalint同步时间间隔,单位:s.LastSynchTimeTIMESTAMP最后同步时间.Enabledint启用1,停用0.

2.2 遍历远程服务器信息

远程服务器信息存储于数据库表(SYNCHSERVER)中,该表用来存储各服务器基本配置信息,这些信息主要包括服务器的类型(向上同步还是向下同步)、服务器IP、服务器端口、同步数据库的名称、数据库用户名、数据库密码等.同步线程开启后,根据服务器类型查询服务器信息列表,对于列表中的每个服务器进行连接,同步数据、断开连接.

2.3 查询当前的远程服务器需要同步的表名及附加条件

确定当前同步的远程服务器后,根据服务器ID查询同步索引表(表2).表2存储需要同步到对应服务器的表名及附加条件.获取表名即可查询对应表需要同步的数据.而在查询对应表格数据时候附加查询条件则很好解决了同一表格数据同步到不同远程服务器的问题.

表2 同步索引列表

字段名类型及宽度说明TableNameVarchar(50)同步表名称(主键).ServerIDint同步服务器ID(主键).AppendWhereVarchar(200)同步时附加条件.默认为"".

2.4 同步表数据

为了记录同步状态,对于每一张需要同步数据的表,除了原有需求字段外,加如下三个字段(见表3).

其中,OPUP标志向上同步时间,初始化可为NULL.向上同步本条数据后修改为系统当前时间.OPDOWN为向下同步时间,使用方法同OPUP.OPCURR为本地操作记录时间,更新记录时需更新该字段为当前系统时间.每次向上同步时可根据查询条件(OPUP IS NULL OR OPUP< OPCURR) 检索出满足条件的记录上传.向下同步同理.如果需要同步的记录过多而同步的频率又过高则会增加服务器负担,建议每次同步部分数据(例如,限制每次最多同步100条记录).每张需要同步的表需要建立主索引,根据主索引来决定插入或更新限制到同步数据库中.主索引字段不能使用自动递增方式.

表3 功能表

字段名类型说明……根据需要表结构字段OPUPTIMESTAMP向上同步时间OPDOWNTIMESTAMP向下同步时间OPCURRTIMESTAMP本地操作时间

具体实现流程如图1:

3 结论

利用编程的方法解决数据库同步的方案优点明显.首先,同步过程更加方便和灵活,可随意指定目标服务器及同步的表,而且还可以将表中不同的记录同步到不同的服务器;其次,扩展性和维护性更强.当某个节点发生故障时,不会影响整体应用,保证数据库的持续工作;另外安全性和易用性也得到保障.编程实现的工具不会影响数据库的内部工作,只是根据用户需求实现具体操作,大大方便了用户.

[1]谭怀远. 让Oracle跑得更快:Orace 10g性能分析与优化思路[M].北京:电子工业出版社,2010.

[2]格里沃尔德. Oracle高级编程[M].北京:清华大学出版社,2007.

(审稿人 李树东 邓景茹,责任编辑 王 巍)

The solution to database synchronization programming

WANG Zhan-li, XIU Wei

(Chaoyang Teachers College, Chaoyang Liaoning 122000)

During the process of realizing information system, many databases in different areas need synchronization. Different database systems not only propose different synchronization schemes according to their own rules but also interweave complicatedly. So the database administrator can realize the database synchronization by programming according to different systematic environment.

database synchronization; programming; solution

2015—10—10

王站立(1981-),男,辽宁朝阳市人,讲师,主要从事计算机教学研究.

TP311.13

A

1008-5688(2017)01-0032-02

猜你喜欢
字段线程编程
图书馆中文图书编目外包数据质量控制分析
基于C#线程实验探究
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
基于国产化环境的线程池模型研究与实现
浅谈linux多线程协作
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述