APP下载

基于交换中心的分布式系统数据同步技术*

2018-03-13步晓亮

通信技术 2018年2期
关键词:数据库系统异构站点

张 莹,步晓亮,李 强,徐 辉

0 引 言

当前,分布式数据库系统已被广泛应用。分布式数据库系统是指数据在物理上分散而在逻辑上集中的数据库系统[1-3]。分布式数据库系统通过适当的数据冗余,增加了系统的效率和可靠性[4];通过提供局部的数据自治和全局的数据共享,使系统具有快速的数据处理能力。分布式数据库还有一个重要特点,即在用户看来,整个数据库仍然是一个集中的数据库。用户不关心数据物理位置分布的细节,也不必关心数据副本是否一致,分布的实现完全由系统来完成。而要实现上述特点,就要依赖数据同步技术。

数据同步技术[5]通过使在分布式数据库中的数据库站点之间的数据更新的同步,达到使数据分布存放的目的,从而实现数据库的分布式处理应用。这种处理方式允许应用程序透明地存取分布存放的数据,使用户感觉好像这些数据就存放在本地的数据库服务器上。

传统的数据库同步技术主要是由各大主流数据库厂商提供的同步方案,如Oracle提出的透明网关技术、微软公司的出版者/订阅者方案、DB2提出的CCD(Consistent Change Data)表方式等。这些同步解决方案虽各有所长但也有缺点,主要表现为过于依赖自身的数据库系统,无法实现真正的异构,且往往对自身的应用系统改动或影响较大。因此,设计一种应对于异构数据库间的数据同步技术显得十分必要。

1 概述

本文根据分布式数据库的有关理论,利用XML(eXtensible Markup Language)和JAVA技术,结合实际需求,研究和设计一套分布式数据库同步系统。此同步系统具有以下特点。

1.1 跨平台性和异构性

JAVA技术是一门跨平台的语言。利用JAVA技术开发的模块或系统,不需要过多考虑操作系统的差异性,具有很好的跨平台适应能力。该同步系统采用JAVA技术进行开发,具有很好的跨平台性。XML作为一种中间件,降低了异构数据库系统之间信息交换的复杂性,解决了异构数据库系统的差异性和不兼容性。可把异构数据库系统之间的信息交换转变为数据库与XML之间的映射关系,然后使用一种XML格式实现异构数据库系统之间信息的交换。这有利于以后系统的扩充和与其他系统的信息交流。

XML[6]是由W3C(World Wide Web Consortium)制定的一种基于SGML(Standard Generalized Markup Language,标准通用标记语言)的标记语言。它提供了一种用文本格式描述数据的方法,主要目的是使用标记、属性等选项来描述数据内容。XML可以通过DTD(Document Type Definition,文档类型定义)和XML schema对其结构进行定义和验证。XML技术支持DOM(Document Object Model,文档对象模型)和SAX(Simple Application for XML,XML简单应用程序)两种编程接口技术,还能使用XPath语言对数据内容进行查询。XML技术支持XSLT(eXtensible Style sheet Language Transformations,可扩展样式表语言转换)格式转换。利用XSLT技术能将XML文件转换为各种不同的格式,如格式不同的XML文件、HTML文件、文本文件、无线标记语言(WML)和SVG文件等。

1.2 灵活配置同步模式

可以按不同的应用环境选择不同的数据同步模式:全量同步或增量同步。全量同步即所有数据库存有最大化数据,任一数据库数据发生变化,需要全量同步给所有其他数据库;增量同步可以通过配置,选择同步部分变化数据给指定数据库。

1.3 稳定性

不会因为网络原因丢失数据,也不能因为某个站点的数据丢失导致整个系统数据的错乱。

1.4 保证传输过程中的机密性

传输数据遵循特殊的封装格式,并通过安全设备进行传输数据的机密性和完整性保护。

总之,该同步机制不仅实施简单、配置灵活、效率高,而且具有较强的稳定性和扩展性。

2 应用设计

2.1 架构设计

本文采用基于交换中心的同步架构方式,即每个数据库站点只需要提交待同步数据给交换中心,然后由交换中心决定数据需要推送给哪个数据库站点。这样每个数据库站点的数据发生变化后,就不需要分发给所有其他数据库站点,只需将数据推送给交换中心,然后由交换中心统一分发数据。这样既避免了各站点间频繁的交换数据,减少了由于数据库同步导致的网络开销,又减弱了各站点间的耦合性。同步架构如图1所示。

图1 同步架构

如图1所示,基于交换中心的同步架构具有如下优点。

第一,可方便实现同步模式的灵活配置。每个站点只需要将数据上报给交换中心,至于数据需要全量同步还是部分同步,是同步给其他所有站点还是只同步给某个特定站点,则只需在交换中心进行配置,而不需要在每个站点进行配置。

第二,减少了数据库站点需要维护其他站点的麻烦,方便扩展站点和删减站点。由于每个站点只需与交换中心交互,对当前站点来说,其他数据库站点的存在与否是透明的,即使由于后期需要而增加或删减了站点,当前数据库站点的运行也不受任何影响。

2.2 具体实现

2.2.1 系统组成

该同步系统包含三部分:各数据库站点同步模块、交换中心和数据传输模块。其中,数据库站点同步模块主要负责变化数据的采集、XML数据的封装、XML数据的解析以及同步数据的入库等操作;交换中心主要负责同步模式的配置、同步站点的维护、同步数据的收集与分发等;数据传输模块则主要负责数据的安全传输等。它的组成结构,如图2所示。

图2 同步系统组成

如图2所示,同步模块A和同步模块B分别部署于数据库站点A和数据库站点B,以用于监听对应站点的数据变化。当本站点有数据变化时,通过数据采集模块采集变化数据,然后调用XML封装模块将数据封装成一定格式的XML文件,交由数据传输模块进行传输;交换中心接收到数据传输模块传来的数据后,通过数据收集模块进行汇总;至此,数据上报阶段完成。交换中心对数据进行汇总后,可根据同步配置信息,调用数据分发模块,将待同步数据交予数据传输模块,由数据传输模块将数据下发给对应的站点。对应的接收站点接收到数据后,调用XML解析模块解析数据,然后由入库模块完成数据的入库。至此,数据下发完成。它的数据同步过程,如图3所示。

图3 同步过程

如图3所示,在一次数据同步过程中,数据库站点A的数据发生了变化。需要同步数据时,A的同步模块通过将待同步数据转换成符合一定格式的XML文本,然后发送给交换中心。交换中心则根据配置信息选择将数据发送给哪(几)个站点。B接收到XML文件后,通过本地同步程序解析为数据库有效数据。

交换中心的站点维护模块主要完成数据库站点的增删和信息维护等,主要包含站点的IP信息、端口信息、在线信息等,如表1所示。

表1 同步维护信息表

同步配置模块主要配置同步模式、数据下发模式等。其中,同步模式主要是配置全量同步或增量同步;数据下发模式可以配置数据是实时下发或定时下发等,如表2所示。

表2 同步配置表

2.2.2 同步详细流程

本同步系统的详细流程,如图4所示。

图4 同步详细流程

如图4所示,当网络不通或对应站点不在线时,同步系统提供数据临时存储功能,防止数据丢失,以保证数据同步的稳定性。

2.2.3 数据变化的捕捉方式

数据信息变化的获取是数据进行同步的基础。它是数据同步更新的依据,也是同步操作的主体(即待同步数据)产生的源头。这里,本文选择触发器方式。在源数据库中对同步数据信息对象建立一个触发器,当数据库中的同步数据发生插入、修改和删除变化操作时,触发器被激活,标记变化数据。然后,触发本地同步模块启动,将变化数据映射成XML文件并及时传送给交换中心。经过实验对比,相对于日志法、快照法等方案,该方案具有执行效率较高的优点,原理如图5所示。

图5 数据捕捉原理

如图5所示,当数据库站点的源数据库发生数据变更时,触发器被触发,将变化的增量数据写成XML文件,然后由同步模块经传输网络发送给交换中心。

2.2.4 XML文本格式

当数据库站点中相应表数据发生变化时,数据库同步程序根据表映射关系生成XML文档,并视该文档为消息载体,将此消息发布到交换中心。生成的XML文档的主要结构如下:

<complexType name="header">

<sequence>

<element name="id"type="string"/>

<elementname="sender"type="string"/>

<elementname="createdate"type="dateTime"/><elementname="perioddate"type="dateTime"/>

<elementname="datasize"type="long"/> < /sequence>

</complexType>

<complexTypename="content">

<sequence>

<elementname="dataid"type="string"/>

<elementname="tablename"type="string"/>

<elementname="columnid"type="ByteArray"/>

......

......

</sequence>

</complexType>

2.2.5 安全传输模块

本同步系统基于交换中心,交换中心维护全部数据库站点的IP地址等信息,各数据库站点也清楚知道交换中心的地址。这里,本系统的安全传输模块采用JAVA的套接字进行编程,通过对方的IP与端口进行建立连接。

socket是面向客户/服务器模型而设计的。针对客户和服务器程序,提供不同的socket系统调用。客户随机申请一个socket,服务器拥有全局公认的socket,任何客户都可以向它发出连接请求和信息请求。socket利用客户/服务器模式巧妙解决了进程之间建立通信连接的问题。它的伪代码如下:

//接收端

ServerSocket ss = new ServerSocket(Port);

Socket socket = ss.accept();

//发送端

Socket s = new Socket(IP, Port);

传输过程中的安全传输数据协议格式,如图6所示。

图6 安全传输数据格式

如图6所示,数据密文是用对称密钥保护的发送数据体;对称密钥部分由接收方的公钥保护,仅可由接收方私钥进行解密;签名值是数据体的签名,以验证发送方的身份和保证数据的完整性。

3 结 语

文中描述了一种基于交换中心的数据同步技术,通过交换中心的架构提供服务,并具体分析了该同步技术的架构设计、组成部分、同步过程、数据捕捉方式以及XML的主体格式等。通过该数据同步技术,不仅能够高效、准确地完成数据同步任务,而且能够灵活配置同步模式,大大降低了同步过程中各站点的配置复杂性,并将异构数据库间的数据交换简单化。

[1] 王珊.数据库系统概论[M].北京:电子工业出版社,2001.WANG Shan.Introduction to Database System[M].Beijing:Publishing House of Electronics Industry,2001.

[2] 萨师煊,王珊.数据库系统概论[M].第3版.北京:高等教育出版社,2000.SA Shi-xuan,WANG Shan.Introduction to Database System[M].3rd Edition.Beijing:Higher Education Press,2000.

[3] 贾焰,王志英,韩伟红等.分布式数据库技术[M].北京:国防工业出版社,2001:342-349.JIA Yan,WANG Zhi-ying,HAN Wei-hong,et al.Distributed Database Technology[M].Beijing:National Defense Industry Press,2001:342-349.

[4] 蒲志林.网络环境下分布式数据库同步机制的研究[D].大连:大连海事大学,2003.PU Zhi-lin.Distributed Database Synchronization Mechanism under Network Environment[D].Dalian:Dalian Maritime University,2003.

[5] 苗福友.数据库同步技术的研究及其在ZK-MIS中的实现[D].北京:北京航天航空大学,2001.MIAO Fu-you.Study on Database Synchronization Technology and Its Implementation in ZK-MIS[D].Beijing:Beijing Aerospace University,2001.

[6] XML 1.0.W3C Recommendation 10-February-1998[S].http://www.w3.org/XML.

猜你喜欢

数据库系统异构站点
ETC拓展应用场景下的多源异构交易系统
试论同课异构之“同”与“异”
基于Web站点的SQL注入分析与防范
Oracle数据库系统的性能优化研究
吴健:多元异构的数字敦煌
积极开展远程教育示范站点评比活动
微细铣削工艺数据库系统设计与开发
江苏省ETC数据库系统改造升级方案探讨
异构醇醚在超浓缩洗衣液中的应用探索
怕被人认出