郑祥云 张 娟
摘要:在分析市政基础设施数据的特点和数据同步技术的基础上,提出了一种基于工作库和中间件的数据同步模型,在设计该同步模型时,考虑数据同步中安全、效率、通用、灵活等多方面因素,以解决市政行业级与市政级数据同步更新问题。
关键词:数据同步;中间件;工作库;XML
中图分类号:F294
文献标识码:A
文章编号:1672-3198(2009)09-0249-02
1市政管理信息集成系统同步相关业务分析
政府综合管理部门没有能力对各类数据实施动态更新,更新只能由权属单位来做,而各权属单位在地域上一般是分散的,所以需要采用分布式数据库技术,将各个市政行业数据库的变化动态反映到集成的综合数据库服务器之中。市政信息分布式一体化动态管理概念模型。如图1所示:
对市政同步相关业务分析主要集中在数据的类别、流动方向、数据量和流动特点等几个方面。市政管理信息集成系统中需要同步的数据主要有市政基础设施数据和业务数据两类。这两类数据的特点是频繁、大量、耗时和集中。数据由各行业数据经过筛选、过滤综合后向综合管理级同步。因此数据同步方案必须符合以下几点要求;保证海量空间数据同步的高效性;保证数据同步安全性;数据同步方案应具有较强的容错性;保证异构环境下的数据同步。
2解决方案构想和设计
基于工作库和中间件的数据同步模型的总体设计思路可以概括为:首先对同步参数进行分类,针对不同类别的参数,设计不同的工作表,共同构成同步工作库。然后,结合工作库进行数据同步中间件的设计,把数据同步过程抽象为数据访问、数据捕获、数据传输、数据转换和安全验证等环节,分别对各个环节进行设计,然后进行一定程度的集成形成数据同步集成中间件。基于工作库和中间件的数据同步的总体模型如图1所示:
3同步工作库
同步工作库是完成同步工作参数的集合,为数据同步做准备工作,是数据同步的基础。数据同步参数大致可以分为两类:一类是数据同步过程中进行数据过滤和筛选的一些“条件”,例如:同步表过滤、属性字段筛选等;另一类是用于同步的配置信息。如:同步方式、数据库连接、网络连接、同步功能选择等;具体说包括以下内容:
(1)同步过滤。由于行业级所管理的数据与市政级所管理的存在很大差异,一般前者更详尽,后者则是前者在城市规划意义上的综合。因此,在行业级与市政级进行数据同步时会遇到两个问题:其一是行业级有些数据表参与数据同步,而有些表与同步无关;其二是参与同步的表中也存在有些字段需要同步,而有些字段不需要同步。对于这两个问题,如果要对海量的空间数据进行数据同步且没有进行同步数据过滤和筛选,则会大大降低数据同步的效率。因此,在进行数据同步时,必须对行业级同步表进行过滤,对同步表中同步字段进行筛选,通过拼接过滤串把不需要同步的数据屏蔽掉,从而减少数据同步量,提高数据同步效率。
(2)命名映射。在行业级与市政级进行数据同步时,可能会遇到命名冲突的问题,即存在属性字段名称不一致的情况。针对这种情况,需要对源表S与目标表T中存在命名冲突的属性建立映射关系,建立命名冲突映射表。
(3)类型映射。在行业级与市政级进行数据同步时,可能会遇到数据类型异构的问题。这种异构主要表现在两个方面:一方面是指行业级与市政级存在属性字段类型不一致的情况;另一方面是指源数据库和目标数据库选择不同的数据库系统导致的数据类型的不一致(精度差异和语义差异)。针对这个问题,需要预先设置存在差异
的数据类型的对应关系,建立数据类型映射表,进行数据类型的转换。
(4)数据库连接参数。数据库连接参数是指在进行数据库访问时连接源数据库或目标数据库的连接信息。数据库连接参数一般有DBMS类型、数据库服务器名、数据库名、用户名和用户密码等。
(5)数据同步基本参数。主要包括同步功能选择信息和同步工作基本配置信息。例如同步方式的选择(影子表法、时间戳法、控制表法);同步频率,指两次同步的时间间隔;同步时间,指最近一次数据同步时间;同步优先级,指当多个数据库同时与中心数据库同步时,根据同步优先级排列同步秩序;是否进行加密以及加密或签名的元素等等。4数据同步集成中间件
该部分采用多层架构Web Service体系结构,并在一定程度上实现Web Service集成。从内部实现来看,本中间件设计是以Web Services的方式对外提供交互,以Web应用客户端和其它应用程序客户端从不同的平台,不同的软件开发环境调用该集成中间件的Web Services接口,从而获得来自不同数据源的数据,实现数据的透明访问。这部分结合同步工作库完成数据同步的主要工作,是数据同步核心部分。具体包括数据库访问、变化数据抽取、数据转换、数据传输、安全验证等五个小模块。
4.1数据库访问模块
该模块主要是提供一种对数据库简单、高效的访问方式。该模块使Web服务与Data Access Application Block相结合,通过保存在工作库中的数据库名称、服务器名称、服务器类型、连接数据库用户名和连接数据库密码等信息建立与源数据库的连接。Data Access Application Block对于不同类型的数据库提供了编程上的透明性,可以屏蔽数据库类型的差异。即无论对什么样的数据库进行编程都采用同样的数据访问方式,并且它搭建了逻辑数据库与物理数据库间的桥梁,降低了改变物理数据目标的难度。因此,我们在编程时根本不需要知道是在对哪一类数据库进行编程,这个数据库放在什么地方。
4.2数据获取模块
数据捕获即提取行业级数据库中要进行同步的数据。数据捕获的方法有多种,如:触发器法、日志法、API法、影子表法、控制表法、时间戳法和快照法等。不同的数据捕获方法都有其相应的优缺点,依据系统特色去选择相应的捕获方法至关重要。因此,该模块在设计时,考虑整个模型的通用性和灵活性,使用Web服务对以上提到的各种方法进行封装。而系统具体使用哪一种方法,可以通过工作库中同步基本参数的配置进行选择。而每种方法的辅助机制则在工作库配置完成后智能生成,例如:工作库中数据捕获选择为时间戳法。则需要自动生成时间戳字段、删除表、更新表,以及相应的触发器等辅助机制。
4.3数据转换模块
XML作为一种标准数据交换格式,主要用于异构环境下的数据交换。以及在网络上传输大量的结构化数据。该模块利用XML作为异构数据交换的载体,完成异构数据转换工作。主要包括以下两个部分:
(1)关系数据到XML文档的映射。关系数据到XML文档的映射包括两个部分:一部分是XML Schema,就是
XML的描述语言部分,XMLSehema能定义XML文档的结构、内容和语义,Xml Schema文档生成后将放置到目标服务器,做为预置XML文档格式约束以便对XML数据文档进行有效性验证;另一部分是包含数据捕获模块获取的具体数据的XML数据文档。
(2)XML文档到关系数据库的映射。
是关系数据到XML映射的逆过程,即将XML文档中内容反映到目标数据库中。具体包括以下方面:结合工作库中的类型映射表,提取需要数据类型转换的字段,选择相应的类型转换方法进行类型转换;结合工作库中命名冲突映射表,进行字段命名转换,最后,动态生成sQL语句,实现XML数据文档到数据库的转换。
4.4数据传输模块
数据传输模块分为数据发送和数据接收两个部分。分别部署在市政级服务器和行业级服务器上,发送部分负责把源数据库中提取的变化数据生成的XML数据文档交给发送模块进行网络传输,穿过安全网发送到数据接收端;接收端接收XML数据文档,放置XML文件库,并返回接收成功信号。
数据传输步骤如下:
(1)数据中心向接收端发送同步请求。即向接收端发送一个同步源的数据库ID号。
(2)接收端通过同步源数据库ID号检索工作库SourD-BConInfo表,提取同步源数据库相关信息。
(3)接收端依据步骤2提取的信息向不同的发送端发送请求信息。
(4)发送端接收到发送请求后开始向接收端发送数据。即发送经过变化数据抽取、加密过的XML数据文档。
(5)接收端将接收到XML文档置于XML文件库,检索工作库BaseConfiglnfo表(是否有加密)进行相应的处理,并向发送端发送接收状态信息。如XML文档验证失败,则向发送端发送失败消息,发送端将重新进行数据的发送;如XML数据文档成功通过验证,则向发送端发送成功信息,整个传输过程结束;数据传输过程如图3。
4.5安全验证模块
安全验证模块的功能是保证同步数据的完整性和安全性。具体说包括两个部分;一是XML文档的加密与解密。通过对一些加密算法的研究,综合对称加密算法与非对称加密算法的优缺点,本文同时选择了AES对称加密算法和RAS非对称加密算法。首先用AES对称加密算法对XML数据加密。然后使用RAS非对称加密算法对前面使用的AES对称加密算法的密钥加密。以达到在速度和安全性方面的优化组合。二是XML文档有效性验证。XML文档有效性验证包括定义的文档模式符合XML Schema的语法和模式是可以被实例化的,可以作为XML实例文档数据有效性验证标准两个方面。对文档进行有效性验证不仅可以保证同步数据的准确性,也可处理如网络状况差或突然断电引起数据传输的不完整性。