引言
在国际金融危机肆虐、国际竞争日益激烈、产品需求日益精细化的背景下,企业要摆脱困境、做大做强,并购重组成为一种重要的发展战略。
在企业完成并购后,作为企业运营管理载体的信息系统的整合成为了必然的需求,如何有效地把这些分布的、异构的、运行在不同软硬件平台上的信息集成,连通“信息孤岛”,共享数据,为集团企业提供一个完整统一的数据视图以充分利用现有数据资源,成为了企业界日益关注的新问题。
1 异构数据源集成概述
异构数据集成目的就是提供统一查询接口,屏蔽底层数据源的异构性,使用户不必考虑底层数据模式与分布位置的不同等问题,能够通过一个统一的查询界面实现对异构数据源的透明访问。其中的关键是如何以一种统一的数据模式描述各异构数据源中的数据,屏蔽它们的平台、数据结构等异构性,实现数据的无缝集成。
近年来,多种数据集成模式被提出,其中比较有代表性的有以下几种模式:
1) 点对点模式。
在两种不同数据源之间建立相互转化模式,该方法在异构数据源很少的情况下,实现技术比较简单,但对异构数据源较多的情况下,实现起来极不方便,因为对于一个包含N 个异构数据源的系统,需要建立的转化模式总和为: T = N( N - 1) ,相应的交互复杂度为:O( n2 ) 。采用该模式,系统每增加一个新的数据源,都必须为这个新数据源建立起与已有数据源的多种访问模式,这就大大降低了系统的可扩展性,该方法正被新的数据集成方式逐步取代。
2) 集中复制数据模式。
数据仓库是这一方法的典型代表,通过对异构数据源的分析与转换,将每个异构数据源中的数据复制到一个统一的数据仓库中,该模式的优点是: 不破坏原有系统,可集成多种数据源和商业规则,实现了数据的集中式管理,数据集成质量好。缺点是: 无法实时反映数据的变化,只能定期进行数据更新,每当有新的数据源加入时,全局模式必须重新生成,系统可扩展性较差。
3) 中间件模式。
随着分布对象技术的兴起,中间件技术也被广泛地应用到数据集成中,其中比较有代表性的有微软的DCOM 和OMG 的CORBA 等,他们都采用包装的思想,以统一的接口提供调用服务,屏蔽了数据的异构性,实现了数据的透明性访问。中间件技术在数据源的自治性、查询的实时性、配置的灵活性等方面,优点比较明显,是目前采用比较广泛的集成模式之一。
4) 基于XML 技术模式。
XML(eXtensible Markup Language,可扩展标记语言) 是一种在Web 上表示信息的标准文本格式。XML凭借其良好的可伸缩性和灵活性,不仅能够提供对资源内容的表示,也可提供对资源所具有的结构信息的表示,其正被广泛地应用到许多领域,也是近年来数据集成领域研究热点之一。
文中在对这些集成方法分析的基础上,提出了一种采用SOA 架构及通过Web Service 技术封装数据源的软件架构。并针对目前Web 服务选取主要集中于UUDI 层,基本是通过关键字匹配或者基于框架的方法实现,引入语义Web技术,来解决原方法查准率极其低下的不足。在语义Web 中,描述服务的信息均被赋予特定的语义,能被计算机理解和处理,这使得基于语义的Web 服务的发现成为可能,极大地提高了查准率。
2 基于SOA的系统集成架构设计
面向服务架构( Service Oriented Architecture,SOA)的概念是GartnerGroup,于1996 年提出。关于SOA,目前尚未有一个统一的、业界广泛接受的定义。一般认为: SOA,面向服务架构是一个组件模型,它将应用程序的不同功能单元( 称为服务) ,通过服务间定义良好的接口和契约联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信。
Web Service 是一种与平台无关的“自包含的、自描述的、组件化的应用程序”,是一种在Internet 上使用的全新的分布式计算技术。
系统首先按照Web Services 标准把数据封装,以解决平台异构、结构异构与分布性等问题,本体服务层及语义层进一步把数据解析与重组,最后以虚拟视图或视图集合的形式,提供给应用层。其特点是能够解决各种异构性问题,且中间过程中不存储任何异构数据库中的实际数据,实现了数据的实时异构集成。整个系统架构如图1 所示,主要包括以下5 个层次:
图1 基于SOA 的异构数据集成框架图
1) 应用层。
提供统一的查询接口,用户可以透明地访问底层数据,而不必知道数据的物理位置与数据的异构性,对用户而言,就像访问单数据源一样简单。
2) 语义层。
将语义查询结果与语义信息结合包装为语义形式的结果集,并以服务的形式提供给应用层调用。
3) 本体服务层。
本体服务包括领域本体服务与系统本体服务两部分。领域本体是数据模式的统一表达模型和领域术语标准。领域本体由领域专家定义,数据提供者需要把自己的数据集与领域本体进行映射形成系统本体。系统本体与系统的多个角色存在着相互联系,是整个系统语义集成的核心。
4) 数据资源服务层。
维护所有与数据资源相关的信息。所有直接与数据资源有关的操作都由这个组件提供支持。这些操作包括数据资源的动态发布、加入、退出、信息维护、信息查询、数据的导入和查询等。实际上,这个核心组件为各种不同类型的数据资源提供了统一的接口,使得查询能够跨越不同的数据资源类型。系统平台在分析用户的查询请求时,正是从这个数据资源服务中获取数据资源的相应信息,进而生成查询计划,并把查询分派到各个数据资源。
5) 资源层。
企业遗留及新建的各种数据资源。
3 关键模块的设计
3.1 本体库
起初本体是哲学范畴上的一个概念,Studer等通过研究认为“本体( ontology) 是共享概念模型的明确的形式化规范说明”,其包含4 层含义: 概念模型、明确、形式化和共享。本体是对一个客观存在系统的解释或说明,描述的是一个客观系统的抽象本质。正是由于本体对客观现实的强大描述能力,本体这一概念被广泛地引入计算机领域,用来解决一些与现实世界相关的,需要对现实事物进行抽象描述的领域。在数据集成过程中,人们需要对大量的数据进行逻辑描述,以揭示其中的相互关系,消除语义的异构性等问题,本体的出现正好解决了这一问题。在数据集成领域中,通过对数据的严格定义和建立数据之间的关系,揭示数据之间共同认可的、可共享的知识,达到解决语义异构性问题的目的。
这里,借用描述逻辑( DL,Description Logic) 中对TBox 和ABox 的定义形式,来构建本体库。
1) 集合C: 概念集,领域知识中最基本最一般的概念形成最初的概念集C;
2) 集合R: 关系集,概念之间一些最基本的关系形成关系集R;
3) 把1) 中形成的概念集C 和2) 中生成的关系集R,通过逻辑关系运算,生成新的概念,并把新生成的概念添加到集合C;
4) 重复第三步,直到集合C 足够覆盖应用中的领域知识,集合C 就是所要的TBox;
5) 用实例集来填充概念集C 中的概念和关系集R中的关系,这时用于表示填充式子的全体就形成Abox。
这里TBox 与ABox 就是本系统中要用到的领域本体与系统本体。
下面说明一下本体的创建过程,现有仓库A 与仓库B,其结构如图2 所示。
图2 仓库A 与仓库B
其涉及到的基本概念及他们之间的关系,用MyoMyo Naing 提出采用六元组法可表示为{ C,AC,H} ,其中:
仓库A:
C = { 仓库、减速器、库管员、蜗杆减速器}
AC = { 管理( 库管员,减速器) ,存放地点( 减速器,仓库) ,工作地点( 库管员,仓库) }
H = { ( 蜗杆减速器,减速器) ,减速器…}仓库B:
C = { 仓库、减速机、管理员、蜗杆减速器、齿轮减速器}
AC = { 管理( 管理员,减速机) ,存放地点( 减速机,仓库) ,工作地点( 管理员,仓库) }
H = { ( 蜗杆减速器,减速机) ,( 齿轮减速器,减速机) ,减速机…}
通过调研及与企业相关专家勾通,可得到基于图3 表示的领域本体。
图3 领域本体
用Myo Myo Naing 提出采用六元组法可表示为{ C,AC,H} ,其中:
C = { 仓库、减速器、管理员、蜗杆减速器、齿轮减速器}
AC = { 管理( 管理员,减速器) ,存放地点( 减速器,仓库) ,工作地点( 管理员,仓库) }
H = { ( 蜗杆减速器,减速器) ,( 齿轮减速器,减速器) ,减速器…}
用仓库A 与仓库B 中的概念集CA、CB去填充领域本体概念集C 中的概念,用仓库A 与仓库B 中的关系集RA、RB去填充领域本体中的关系集R,并清除多余概念与关系,就得到系统本体,如图4 所示。
图4 全局本体
用OWL 语言可表示为:
< owl: Class rdf: ID = " 仓库" > < /owl: Class >
< owl: Class rdf: ID = " 减速器" > < /owl: Class >
< owl: Class rdf: ID = " 管理员" > < /owl: Class >
< owl: Class rdf: ID = " 蜗杆减速器" >
< rdfs: subClass >
< owl: Class rdf: about = " #减速器" / > < /owl: Class >
< /rdfs: subClass >
< /owl: Class >
< owl: Class rdf: ID = " 齿轮减速器" >
< rdfs: subClass >
< owl: Class rdf: about = " #减速器" / >
< /owl: Class >
< /rdfs: subClass >
< /owl: Class >
< owl: OProperty rdf: ID = " 管理" >
< rdfs: domain rdf: resource = " #管理员" / >
< rdfs: range rdf: resource = " #减速器" / >
< /owl: OProperty >
< owl: OProperty rdf: ID = " 存放地点" >
< rdfs: domain rdf: resource = " #减速器" / >
< rdfs: range rdf: resource = " #仓库" / >
< /owl: OProperty >
< owl: OProperty rdf: ID = " 工作地点" >
< rdfs: domain rdf: resource = " #库管员" / >
< rdfs: range rdf: resource = " #仓库" / >
< /owl: OProperty >
3.2 查询模块
查询模块是直接面向数据使用者的接口,负责将用户提交的查询分解成针对各分布数据的子查询,并提交给相应的数据源服务模块。语义查询服务是整个系统的关键部件之一,其结构如图5 所示,它又可再细分为:
图5 查询模块系统结构
1) 查询生成模块。
查询生成模块主要负责查询预处理。接收用户提交的各种查询请求,并进行必要的验证处理,包括验证本体的有效性、验证数据资源的可用性、验证查询的合法性和完整性等一系列工作,最后根据全局本体的定义将用户请求转化为统一的、可识别的全局查询语句。
2) 查询解析模块。
负责分析语义查询并进行分解工作。将从查询生成模块接收到的语义查询语句,根据全局本体或局部本体中定义的本体信息生成相应的查询语句。这些查询语句描述了所要查询的数据来自哪些数据资源、具体的表名、数据列、查询条件、各个数据表之间的连接关系以及各条查询计划之间的执行依赖关系。
3) 查询执行模块。
其具体包括队列管理和调度管理两个子模块,首先接收来自查询解析模块中的查询语句,行成一个队列,然后调度管理模块基于FIFO( 先进先出) 调度策略,分析其属性参数,并送往相应的数据源服务模块执行具体操作。
3.3 数据融合模块
将原子查询计划的执行结果进行融合,得到符合用户要求的最终查询结果集。由数据源服务模块返回的结果集,包含了各个不同数据源的查询结果,这些查询结果由一些数据行组成,对这些数据行必须进行相应的判断融合,才能得到所需结果,数据融合主要有以下三种情况:
1) 重复数据行,合并过滤,返回唯一值;
2) 数据行行数据的融合。要查询减速器的库存情况,分厂1 与分厂2 返回的结果分图如表1、2 所示,则最后数据融合后的结果如表3 所示;
表1 分厂1 返回结果
表2 分厂2 返回结果
表3 数据融合后的结果
3) 数据行列数据的融合。如果2 行数据除关键属性组外的属性取值不同,根据需要则要把一行数据中的不相同属性值连接到另一行数据的末尾成为同一行数据输出。
4 结束语
随着信息化发展及企业规模的不断扩大,“信息孤岛”问题已经成为阻碍企业信息化进程的主要因素,数据集成是解决“信息孤岛”问题的根本方法。文中通过对比已有数据集成方法,结合现代企业的具体应用需求,提出了一种基于SOA 架构和本体技术的数据集成框架。系统将异构数据源以Web Service 的形式进行封装,同时引入本体技术,利用本体描述领域概念的优势,较好解决了数据集成中数据的异构性问题,实现了数据访问的透明性。
下一步的主要工作是: 改进本体的生成规则,减少人工干预,提高本体生成的自动化程度。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:基于SOA的异构数据集成软件架构研究