APP下载

基于XML序列化技术的分布式数据库同步实现

2018-03-08

关键词:序列化表单数据表

刘 鹏

(中国电子科技集团公司第41研究所,安徽 蚌埠 233000)

一、引言

当前,很多企事业单位及科研院所都在不同地点建立了自己的分支机构,不同机构之间的网络都实现了互联互通。由于很多单位对数据传输的保密性要求很高,传统的互联网因其保密性差已无法满足实际应用的需要,在这种情况下,通过采用专线网络,可以极大保障数据传输的安全性。

专线网络虽然安全性好,但价格昂贵,带宽受到限制。在企业信息系统的设计中,如果采用传统的集中式数据库,除本地用户以外,其他用户在操作时都需要实时通过网络向异地读取或传输数据,这会给专线网络带来很大的压力。在这种情况下,使用分布式数据库可以有效解决这一问题。如何实时、高效地将不同数据库之间的数据进行同步是使用分布式数据库的关键所在。本文以企业信息系统的设计为例,提出了一种基于XML序列化技术的分布式数据库同步方案,有效克服了传统数据同步方法的局限性。

二、传统的分布式数据库同步技术

分布式数据库是由一组同时重复地存储在不同的场地的数据组成的,当应用程序执行时,就可以在本地数据库的基础上运行,尽量不借助通信网络去与外地数据库联系。分布式数据库避免场地之间的通信开销,加快了应用程序的运行速度,具有很好的可靠性。传统的分布式数据库同步技术主要以文件传输技术和数据复制技术为主。

文件传输技术是通过专门编写的应用程序将需要更新的数据信息收集起来形成文件,存储在物理介质中,通过网络或者物理拷贝的方式将文件传输到网络上其他场地,其他场地将接收的数据导入到本地数据库系统中。这种同步方式主要有以下缺点:(1)数据的更新需要固定的时间段,数据库得不到实时更新;(2)需要人工进行干预,难以保证正确性,而且效率低下;(3)无法解决数据同步过程中出现的数据冲突问题。

数据复制技术是一些数据库系统自带的数据复制机制,其主要原理就是将一组数据从一个数据源拷贝到多个数据源,从而使不同的服务器用户在权限许可的范围内共享这份数据。复制技术作也存在不少应用局限性。主要体现在以下几方面:(1)对网络的要求很高,专线网络的窄带宽不能满足需求;(2)在大量的数据传输过程中会导致数据丢失;(3)在网络延时的情况下无法很好解决数据冲突问题。

三、XML及序列化技术

XML即可扩展标记语言,具有可扩展性,不但可以表达数据的内容,还可以表达数据的结构,可以跨平台使用,能够适应多种不同的网络环境,具有体积小、便于传输等优点,XML的这些特性使得XML在分布式应用程序的数据交换时体现出很大的优势。

随着分布式应用程序的发展,要想在不同应用程序域之间,或者在不同平台上进行对象的传递就显得非常不方便,这个时候,序列化技术应运而生。序列化就是将对象转换为可以存储或传输的数据格式的过程。将对象序列化,可以将对象永久保存在数据存储区中,并使用HTTP协议在服务器之间进行传输。其过程如图1所示。

图1 序列化和反序列化

XML序列化是序列化技术的典型应用,是将对象的公共属性和字段转换化为XML流以便存储或传输的过程,反序列化则是从XML输出中重新创建对象的副本。XML序列化的使用,可以将一个应用程序域中的对象序列化,通过网络传输到另一个应用程序域,另一个应用程序域通过读取序列化后的数据形式,通过反序列化,重新构建该对象,再执行某些业务逻辑,得到需要的结果。

四、基于XML序列化的分布式数据库同步实现

(一)系统功能介绍

本单位企业信息系统为两地部署,通过专线网络实现互联互通,是集办公、计算机、科研、生产、质量等功能为一体的综合管理系统,涉及到申请、审批、处理、信息维护等多种操作,在本单位的办公及科研生产中发挥着重要的作用。

(二)总体框架

两地都采用SQL Server关系型数据库,在数据同步时,需要实现两地的双向同步,可以看作是两个单向同步的有机组合。在同步时,将同步数据发起端称为源端,将同步数据接收端称为目标端。

在实现数据同步之前,需要做以下准备性工作:

(1)定义业务实体:在应用程序中,业务实体用来存储与该业务相关的操作或数据,在我们的企业信息系统中,主要包括表单号、事件号及其它与具体表单相关的业务数据。

(2)定义同步数据表:在源端和目标端分别定义同步数据发送表和同步数据接收表,两者有着相同的数据结构。发送表用于存储本地变化的数据信息,接收表用于接收从异地传送过来的数据信息。该系统多个业务表单共享一个同步数据表,其结构定义如表1所示:

表1 同步数据表结构定义

(3)构建同步规则:根据对业务逻辑的分析,同步规则定义了数据同步时如何根据具体的条件执行相应的业务逻辑,以及在冲突发生时如何保证两地数据一致性等问题。

两地分布式数据库同步总体框架如图2所示。

图2 数据库同步总体框架

首先将源端获取的同步数据序列化成XML文件,写入源端数据同步发送表,接着执行数据传送操作,将源端序列化的XML文件通过专线网络传输到目标端,写入目标端数据库同步接收表,目标端提取传输过来的XML文件进行反序列化操作,得到同步数据的副本,最后根据同步规则执行同步操作。

(三)同步数据获取

采用基于事件操作的方法来获取同步数据,当用户进行事件操作时,将该操作所包含的相关信息,包括表单号、事件号以及其他业务数据记录下来,一方面根据这些信息更新本地业务数据表,另一方面将这些信息作为同步数据提供给异地。通过这种方式,避免了从数据库中捕获数据变化的过程,减轻了服务器的负担,提高了工作效率。

(四)XML序列化

XML序列化的目的是将源端对数据库的操作及操作所涉及的数据序列化成一个XML文件,该XML文件记录了某个操作同步所需要的全部信息。通过XML序列化,可以方便地将源端产生的同步数据传送到目标端。序列化后的XML格式如图3所示。

图3 序列化XML格式

(五)XML数据的发送与解析

系统定时将从源端同步发送表中读取的XML数据形成发送队列,通过专线网络传送到目标端,插入目标端同步接收表中。目标端接收到XML数据以后,即时调用XML解析程序,通过将XML反序列化,从中解析出表单号、事件号及各项业务数据,并通过对表单号和事件号进行判断,将业务数据组装成相应的SQL语句并执行,更新对应的业务数据表,实现源端数据库和目标端数据库的同步。

(六)数据完整性和冲突控制

在网络传输的过程中不可避免的会出现同步数据丢失或延时的情况,如果不加以控制,则会导致两地数据不一致的现象。所以在系统设计的过程中,必须采取合理的措施加以解决,这也是保证分布式数据库数据一致性的关键所在。

⑴数据完整性控制

数据完整性控制就是为了防止数据在网络传输的过程中发生丢失而导致数据不一致所采取的解决办法,我们设计了如图4所示的解决机制。

程序首先读取源数据库同步数据发送表中的数据,形成数据发送队列,如果发送队列中有数据,则按照数据产生的时间依次传送,如果收到对方传送回来的应答信号,则将该条数据从数据表中删除,继续传送发送队列中的下条数据,如果没有收到应答信号,则重新读取源端同步数据发送表,重复以上流程。通过该机制,可以有效避免同步数据在传输过程中发生丢失导致的两地数据不一致现象。

图4 数据完整性控制流程

(2)冲突控制

分布式数据库系统中的每一个场地都有对数据进行修改的权限,如果在网络传输延时的情况下存在两地向同一张表插入数据或者修改同一条记录,那么在数据同步的过程中就会产生冲突。在我们设计过程中根据表单执行深度、执行结果(通过、不通过)和同步数据来源(是否来自表单申请人归属地)几个条件来进行冲突控制,主要有以下几种操作冲突解决机制:

①如果两端表单执行深度和执行结果均相同:

同步数据来源于表单申请人归属地,以同步数据为准,同步数据非来源于表单申请人归属地,抛弃同步数据;

②如果两端执行深度相同,执行结果不同,以不通过为准;

③如果同步数据执行深度大于本地,以同步数据为准;

④如果同步数据执行深度小于本地,抛弃同步数据,以本地数据为准。

其流程图如图5所示。

图5 数据冲突解决机制

通过冲突机制的使用,避免了网络延时对分布式数据库同步造成的影响,有效保证了数据的一致性。

五、结语

随着网络技术和数据库技术的飞速发展,分布式数据库已经得到了非常广泛的应用。本文基于专线网络环境提出了一种基于XML序列化技术的分布式数据库同步解决方案,并详细论述了其原理和实现方法。该方案具有扩展性好、可靠性高等优点,已成功运用于本单位企业信息系统,运行效果良好,具有较高的参考价值。

[1]林 源,陈志泊.分布式异构数据库同步系统的研究与应用[J].计算机工程与设计,2010,31(24):5278-5281.

[2]刘建芳,夏栋梁.XML序列化机制在客户关系管理中的应用[J].电脑开发与应用,2011,24(2):31-33,37.

[3]沈 敏,许华虎,等.基于XML的分布式异构数据库数据同步系统研究[J].计算机工程与应用,2005,41(5):184-186.

猜你喜欢

序列化表单数据表
Java Web反序列化网络安全漏洞分析
移动App表单组件体验设计
如何建构序列化阅读教学
某物资管理调度系统的数据序列化技术
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
浅谈网页制作中表单的教学
使用智能表单提高工作效率
QH165点焊机器人数据库开发技术