维普资讯 http://www.cqvip.com 第27卷 2007年6月 文章编号:1001—9081(2007)S1—0021—03 计算机应用 Computer Applications V01.27 June 2o07 基于服务数据对象的异构系统数据集成方案研究 倪志刚,洪玫,刘 佳 (四川大学计算机学院,四川成都610065) (nizhigang2000@gamil.corn) 摘要:针对现存的一些企业异构数据集成解决方案中存在的数据表示不够标准,硬编码过多, 可重用度不够高等问题,提出了基于服务数据对象(SDO)规范的企业异构数据集成的解决方案,设计 并实现了该方案。测试与实际应用表明:该方案切实可行,开发量小,可重度高,性能好,能够满足企 业异构数据集成的需要。 关键词:服务数据对象(Service Data Object,SDO);异构数据源;数据集成 中图分类号:TP311.13 文献标识码:A 1)统一的数据定义。SDO中数据的表示是独立于数据 0 引言 随着企业中分布的、异构的、孤立的数据源的增多,如何 使这些数据源集成起来,使其中的数据能得到更好地利 用——汇总、分析、统一展示等,一直是数据处理技术中的一 个热点与难点。根据企业异构数据集成的需要,文献[1—3] 都提出了相类似的解决方案,即利用XML对数据进行统一的 描述,再由XQuery等工具对数据进行处理,最后形成统一的 视图供客户端使用。这些解决方案在一定程度上满足了异构 数据集成的需要,但是也存在一些不足的地方,例如数据的表 示没有依据统一的标准,对XML的处理需要进行大量的硬编 码,数据集成系统可重用程度不够高等,这些都不利于将其直 接应用于企业的实际环境中。 源的,采用数据对象来对所有数据进行描述,在数据对象中由 元数据(XML Schema),数据(XML表示)与变更摘要(使用 XML记录数据修改痕迹,包括记录了对数据的更新、插入、删 除等操作)组成。这使得数据无论传输到哪里都不会失去原 始的信息与操作,能方便地为手工编程与自动工具服务。 2)统一的数据处理模型。在SDO规范中,定义了数据的 处理过程与基本构架,如图1所示:使数据的读取与更新过程 都有了明确的定义。 本文在现有解决方案基础上进行进一步的研究,引入国 际上通用的异构数据处理标准:服务数据对象(Services Data Object,SDO)规范 J,提出了一种更为通用的异构数据集成的 解决方案,并就该方案在企业实际应用中的性能进行了测试 与分析。 图1 SDO数据处理流程简图 1 SD0介绍 SDO规范是由IBM和BEA公司联合制定的一个异构数 据集成处理的规范JSP-235。它是一种应用程序编程接口 3)支持丰富的数据访问接口。文献[1—3]中使用的 XML读取与解析方式非常原始,需要手工编写大量的代码, 而且还不能重用。在SDO中,可以使应用程序通过动态(索 引的方式)、静态(直接字段操作)以及通常XML解析的方式 (API),可以简化和统一对异构数据的访问。由于在当前的 企业环境中,单一数据类型的应用程序已经比较罕见了,越来 (DOM与SAX)对数据进行访问,可以方便地重用,更有效地 访问数据。 4)更好的开放性。符合SDO规范的系统间可以十分方 便地进行水平层面与垂直层面上的系统互联,这样可以避免 出现更大的信息孤岛。 5)有丰富的开源实现供使用。包括Eclipse项目下的 EMF项目,Apache的tuscany开源项目等,这些开源实现可以 极大地减少开发的工作量。 因此,将SDO运用于异构数据集成可以有效地满足异构 越多的信息存放在不同类型的数据源中(如数据库、Web erSvices、LDAP erSver等),这使得开发人员需要熟悉许多不 同的API,如JDBC,JAX—RPC,JCA等。SDO简化和补充了 J2EE开发模式,提供一种独特的访问异构数据源的API,还 可以用于数据处理的其他方面。 SDO规范的1.0版本于2003年发布,到了2005年SDO 规范2.01版发布时,已经有越来越多知名的I1’厂商加入的 规范的制定与实现行列中来了,除了IBM与BEA外,Oracle, SAP,Sybase,Siebel都是新规范的制定者。新的SDO规范除 了提供Java的接口规范外,还提供了C/C++的规范,这更 使得无论是在UNIX系统,还是在Windows系统,无论是Java 环境下的数据共享和交换的需求,尽可能做到组件重用,这样 不仅可以极大提高开发效率,还可以减少实施的成本。 语言,还是其他主流编程语言,都能很方便地集成到系统中来 进行统一的数据处理。 将SDO用于异构数据处理主要有如下优点: 2异构数据集成的设计 2.1数据处理模型 参考SDO规范中的数据处理规则,并考虑到系统重用以 收稿日期:2006—09—20 作者简介:倪志刚(1978一),男,硕士研究生,主要研究方向:计算机网络、数据集成,分布式计算;洪玫(1963一),女,副教授,主要研究 方向:数据库、计算机网络、软件工程、实时系统;刘佳(1981一),女,硕士研究生,主要研究方向:计算机网络. 维普资讯 http://www.cqvip.com 计算机应用 2007血 及扩展与维护的需要,在设计时将各种数据进行分层处理是 了可以充分利用一些开源组件来减少开发量以外,还可以有 一种较好的方法。如图2所示,按照数据与数据源关联的程 效地进行扩展。本文的解决方案基于J2SE 1.4、J2EE1.3以 度可以分为两层。 及SDO 2.0规范与标准实现,J2EE中间件选用了WebLogie Sevrer 8.1.5,XQuery引擎采用WebLogic Server中自带的 XQuery引擎。系统实现中主要有两种关键的数据处理流程。 3.1数据读取 图2数据分层设计 物理视图层物理视图层与数据源直接相关,即将各种 数据源中的数据直接暴露为异构数据集成中的物理视图,经 由物理视图所展现的数据已经是各种异构数据源中的数据封 装后的SDO数据对象。这样的设计屏敝了最底层异构数据 源提供的数据的差异性,为更上一层的处理提供了便利。物 图4数据读取实现 理视图一般只有一层。 逻辑视图层逻辑视图层直接与物理视图层交互,是一 数据读取实现如图4所示。以关系数据库的操作为例, 个或者多个物理视图经过相应的转换、映射、过滤、联合等处 客户端将相应逻辑视图请求传递到解析器,解析器读取逻辑 理后的SDO数据对象。根据需求的不同,可以存在多层逻辑 视图的定义文件,将相应的请求分发到不同的Wrapper, 视图,这样的设计可以满足数据集成灵活的处理要求,通过配 Wrapper根据相应的物理视图的定义,使用JDBC从数据源中 置文件即可定义数据的处理规则,方便系统开发与维护与进 读取数据,并将ResuhSet结果集封装为SDO数据对象,返回 一步的扩展。 给XQue ̄引擎;XQue ̄根据逻辑视图中的定义将各个 2.2系统框架层 Wrapper返回的SDO数据对象进行处理,形成客户端所请求 的逻辑视图,并返回给客户端。 数据应用层 ———— ==~—=;’——一 由于SDO中的数据表示采用的是XML,而XML所表示 的数据大小一般是原数据大小的10倍以上,对于大批量数据 跹抿睾成屡 l l Xquery ̄J[擎 l 而言,一次性将如此大量的数据加载到内存中将会消耗大量 i 嘧匝 匝 匝 的内存,时常会导致内存溢出,而利用文件缓存则可以避免这 种情况发生。在读取小批量数据时则不存在这种问题,故可 l数 圆圆圆回 以不需要文件缓存。 } f l 数据读取实现以后在应用于实际系统中时,按照需要建 立好逻辑视图与物理视图的定义文件即可,不再需要任何的 图3系统框架 开发。 如图3所示,整个系统按照应用要求可以分为三层: 3.2数据修改 数据包装层数据包装层直接与底层的各种数据源相 I 客户端 l 关,不同数据源开发不同的包装器(Wrapper),每种包装器都 ● 由特定的技术实现,对外暴露出相同的调用接口,返回统一形 ———式的数据。每种包装器只需要开发一次,以后基于配置的方 叫sDO解析器I 式来使用。主要功能是对底层读取的数据进行封装与转换, 提供物理视图,这样可以最大程度地重用相关的包装器组件。 I数据集成层作用是根据数据处理规则将物理视图进行 I物理视L 图 l 相应的转换,提供出客户所需要的逻辑视图,或者对于客户提 【 囤 供的视图进行数据分解,将需要更新的数据下发到数据包装 ’ 层。开发完成后,可根据配置文件自动进行相关的处理,不再 <= 需要手工的编码。 L数据 数据应用层数据集成层提供的数据都已经按业务需要 图5数据修改实现 封装完整,在应用层主要是暴露出相应的调用接口供客户端 数据修改实现如图5所示。客户端提交修改过后的SDO 取得数据进行分析与显示,或者供客户端提交修改后的数据。 数据对象,SDO数据对象中包括变更摘要,变更摘要中记录 3 系统关键过程实现 了数据的原始状态以及修改过的状态。提交的SDO数据对 象经过SDO解析器进行解析后,根据逻辑视图的定义分解生 由于异构数据集成中需要与多种不同的数据源进行数据 成相应的SDO数据对象,提交到Wrapper,Wrapper根据物理 交换,如关系数据库,文件或者LDAP服务器,Web Services 视图的定义生成相应的SQL语句,并由SQL代理经由JDBC 等,这些都需要用到不同的技术,再者考虑到跨平台、可扩展 传递到数据库,从而修改数据源中的数据。 等因素,使用Java/J2EE来实现整个系统是非常好的选择,除 与数据读取类似,数据修改实现后,在以后的使用中,不 维普资讯 http://www.cqvip.com 6月 倪志刚等:基于服务数据对象的异构系统数据集成方案研究 除了小批量数据查询外,还测试了大批量数据的读取,处 需要再进行开发,只需要定义相应的视图即可。 从以上关键技术点的实现可以看出,本文提出的解决方 案,只需要开发一次,可以跨平台使用,可以方便地用于不同 的企业环境,在应用于不同的系统时只需要配置相应的视图 定义文件。 理大批量的数据读取时使用了文件缓存,结果如表3如示。 经过分析大量的测试结果,可以看出,基于Java与SDO 实现的异构数据集成系统无论是从功能上,还是从数据集成 时总的时间消耗与系统吞吐量来看都能较好地满足企业实际 应用中的需要。 表3大批量数据测试结果表 4 系统测试 4.1系统测试场景 在实现解决方案后,基于企业的实际环境做了测试。测 试基于实际订单系统中的订单主表(Master)与定单明细表 (Detail),其中Master表在Oracle数据库中,Detail表位于 DB2数据库中。 表1软硬件环境表 机型 CPU主频内存 软件系统 用途 5 结语 通过对企业异构数据集成的一些解决方案进行改进和完 善,用基于SDO的方式设计并实现了异构数据集成系统,还 就该系统在企业中的应用作了大量的测试。结果表明将SDO 用于企业异构数据集成不仅可以大大减少相应的开发工作 量,可以最大限度地系统重用,而且还可以非常高效地满足企 业异构数据集成的需要。 参考文献: [1】 李军怀,周明全,耿国华,等.XML在异构数据集成中的应用研 究[J】.计算机应用,2002,22(9):10—12. 4.2测试结果 根据实际应用的需求,主要测试了两种场景,一种是实时 小批量的数据查询,该查询中不使用文件缓存,测试结果如表 2所示。 表2小批量数据测试结果表 [2] 甄玉钢,刘璐莹,康建初.基于XML的异构数据库集成系统构 架与开发【J】.计算机工程,2006,32(2):85—87. [3】 赵辉,陶世群,李丽萍.一种基于XML的异构数据源集成的方 法与实觋【J】.山西大学学报(自然科学版),2005,28(1):33— 36. [4】 BEATI ̄J’BLOHM H,BOUTARD C,et a/.Service Data Objects For Java Speciifcation[EB/OL】.http://www.bea.com/dev2dev/ assets/sdo/SDOSpeciifcationJava—V2.01.pdf'2005—1 1. _—[5】 BEATI ̄J.Next—Generation Data Programming:Service Data Ob— jctes—A Joint White paper with IBM and BEA[EB/OL】.http:// "w ̄/w.bea.com/dev2dev/assets/sdo/Next—Gen—Data—Program— uirng—Whitepaper.pdf'2003—11. (上接第2O页) 要操作管理接口,它本身也随着数据库系统新功能的扩展而 扩展。SQL语法分析不仅是DBMS关心的重要部分,也在数 据库上层项目开发中常常遇到。本文围绕分析查询语句结构 的全过程,展示了借助于flex、bison工具进行SQL语法分析 的一个实践策略。SQL语法分析,构建无冲突语法范式和语 [2】LESK ME,SCHMIDT E.Lex—A Lexical Analyzer Generator[R】. Computing Science Technical Report Bell laboratories.Murray Hil1. NJ,1975:39. [3】 JOHNSON SC.Yacc:Yet Another Compiler Compiler[R】.Compu— irng Science Technical Report No.32,1975,Bell Laboratories, 法分析是它的核心,实践过程要遵循它们的顺序,以免浪费工 作,有些情况语法范式可以在不损伤无冲突条件下为方便分 析树结构存储作些改动。可重人分析器是模块化设计和上层 并行程序的需要,lfex和bison为此提供了很有效的实现接 口。最后,还可以根据需要,增加多种SQL语言体系的兼容 性,设计更加灵活通用的语法树结构等,完成诸如此类的SQL 语法分析扩展工作。 参考文献: [1】LORENTZ D,GREGOIRE J.Oracle Database SQL Reference 10g Release 1(10.1)[z】.Oracle Corporation.1996,2003. Murray Hil,NJ 07974. [4】 BROWN D,LEVINE J'MASON T.1ex&yacc,O’Reilly Media [Z】.Inc.;2 edition,October1,1992. [5】 陈意云.编译原理和技术[M】.第2版.合肥:中国科学技术大 学出版社,1997. [6】LOUDEN KC.Comp iler construction P fincip les and practice [MJ】.北京:机械工业出版社,1999. [7】 李海龙,张维明,肖卫东,等.通用标准SQL语法分析模型[J】. 小型微型计算机系统,2003,24(1 1):1969—1972. [8】 朱望归.数据库语言SQL的实现[J】.计算机工程与应用,1994, 11.