基于SOA的数据挖掘原型平台的设计与实现
韩璐 孙蕾 施惠娟 李由 网络
 随着信息技术的日新月异,企业的决策/管理者已不满足仅能够从其企业的信息系统中获取相关的经营管理的事务分析型信息,而更加迫切地需要获取能对其经营/管理过程起辅助决策支持的知识型信息。商业智能数据分析系统的出现与兴起已成为信息系统目前发展的必然趋势,同时,目前IT业界日趋成熟的基于数据仓库的数据挖掘技术成果已使得该类信息系统的研制成为可能。许多经典的数据挖掘理论/算法能够从已有的海量数据信息中析取更有价值的知识型数据,随之应运而生的各IT业界厂商发布了一系列的商用数据挖掘产品/开源项目(比如SAS公司的Enterprise Miner、IBM公司的Intelli—gent Miner和Teradata公司的warehouse Miner等),然而,该类商用数据挖掘软件/工具大都基于传统的n层(n-tier)系统架构,普遍存在着功能耦合性强、资源共享度低和可扩展性弱等问题。因此,如何有效地构建一个开放式的、可集成的和可扩展的数据挖掘平台系统并将其与企业现存的信息系统环境相融合/相衔接,成为目前备受关注的研究课题。

近年来,随着“服务”成为开放网络环境下资源封装与共享的标准形式,特别是随着web服务。技术灵活的新型商业智能分析系统的总体解决方案的出现和推广,面向服务的体系架构S0A逐渐得到业界的普遍重视和高度认可。本文从国内中小型企业信息服务的实际需求出发,构建了一个平台独立的、开放的、可扩展的和可插拔的基于SOA的数据挖掘原型平台的设计/实现方案,即采用目前业界主流的技术集成平台完成了该系统中核心的服务组件和功能构件的研制工作;并且采用Java ME技术定制了一个智能终端的前端应用,将已完成原型平台中的数据挖掘功能有效且灵活地封装于企业用户的“服务”。文中仅阐述了该原型平台中主要的服务组件/功能部件的研制工作。

1 系统的功能性分析与总体结构设计

基于SOA的数据挖掘原型系统的主要功能性组件的总体设计框架如图1所示,图中。各矩形框内为同一类别服务的逻辑组合,封装在不同类别的服务之间通过企业服务总线ESB(Enterprise service Bus)进行相互通信与调用。具体地,该系统的前端应用服务(Application senrice cosumer)依据标准的S0AP/HTTP协议将用户的访问服务请求发送至企业服务总线,相应的用户服务请求经企业服务总线以路由访问的方式启动相关的功能性服务的执行;同样,被访问到的功能性服务亦将所执行的服务内容传送至企业服务总线,然后由企业服务总线采用标准的SOAP/HTTP协议中响应报文的方式提交用户访问服务的结果,最终结果可在前端应用服务中获取。

 

图1 基于SOA的数据挖掘原型平台的总体设计框架

其中,平台系统的主要功能性服务组件可归结为三类:

(1)面向服务的数据挖掘前端应用层主要由数据挖掘可视化服务组件(DM Vi8ualization Senrice Provider)和前端应用服务组件(Application Service Consumer)构成。

(2)面向服务的数据挖掘功能性部件与中间件部件

主要由平台系统服务注册管理组件(Service Registry)、相关的服务元数据存储管理组件(senrice Meta—data Repository)、基于数据源的数据访问/处理服务组件(Data Access Senice Pmvider)、核心数据挖掘算法服务组件(DM service)、面向服务的数据挖掘访问组件(DM Access service)和企业服务总线(Enterprise ServiceBus)/总线路由访问服务组件等构成。

(3)面向服务的数据存储层主要由与数据源相关的存储层服务组件(即由数据仓库、OLAP服务器以及相关的数据文件组成)和面向服务的与数据挖掘模型/结果相关的存储层服务组件(DM outPut M0del Bailk)构成。

2 系统的主要组件的设计思想和实现过程

2.1企业服务总线组件

在系统中,由于各个不同的服务组件之间的通信总是通过企业服务总线组件进行交互,因而企业服务总线组件起着不同服务组件之间信息交互/执行调度的关键作用。采用企业服务总线组件进行系统的功能调度/执行具有的优势体现在:一方面,有效地减少了不同服务组件之间交互所需的Internet上点对点的连接数量,降低了系统的开销、提高了系统的灵活性;另一方面,不同服务组件间具有逻辑独立性,即它们之间的点对点的交互/调度允许双方采用不同的通信协议进行,且若某个关键的服务组件需升级或功能发生变化时.不会使其他服务组件的功能受到影响,从而削减了系统中各服务组件间的功能耦合性、增强了系统的可扩展性。

本系统中具体地采用开放企业服务总线(Open ESB)来设计和实现其企业服务总线组件。Open ESB包含了一组可插拔的组件容器,这些容器用于集成不同类型的IT资产;各组件容器间通过一种快速、可靠、驻留内存的消息总线连接起来,该消息总线称作Java商业集成JBI。其中:服务组件容器负责调整/规范化IT资产,使其使用基于抽象WSDL的标准化消息交换模式进行XML消息交换,即在JBI环境内部实施通信时,由于所有的消息已被规范化成WSDL格式,因此它们无需再经过协议转换、消息序列化和消息规范化等异构情况的处理,从而实现了不同供应商所提供的IT资产问的互操作性;在与JBI环境外部交换信息时,引擎组件容器使用JBI消息总线实施通信,并负责将处理的结果以消息的方式由所绑定的功能组件容器传递到客户端应用程序;同时,JBI规范定义并封装了由服务提供者和服务消费者组成的复合应用的标准,即一个组件可以由多个独立的服务单元构成,多个组件可以形成一个特定的服务集(service Assembly),可以由相应的服务集部署为若干个复合应用,然后基于开放的复合应用接口,允许在系统的前端应用程序中访问其所提供的服务,由此实现了在面向服务的架构下以服务访问方式整合系统中已有的应用服务和潜在的服务需求的工作目标。

2.2数据访问服务组件

在系统中,数据访问服务组件是一个重要的服务组件,它提供相应的数据挖掘算法所需的源数据集的访问服务,如图1所示,考虑到源数据集既可以是规范化的(如关系型数据、多维度的数据等),也可以是非规范化的(如普通数据文件形式等),因此需要在数据访问服务组件中设计一个访问不同类型源数据集的独立的接口平台:对于异构的规范化的数据文件,可以定制其专门的数据访问服务应用组件,并将其部署到相应的企业服务总线上;对于非规范化的数据文件,则需经过相应的数据预处理(即,包括数据清理、数据集成、数据选择以及数据变换等过程),将预处理后的数据集加载到相应的数据仓库中;对于多维度数据集,则可以直接加载到相应的OLAP服务器中处理。

传统的数据访问服务(尤其是对于数据库中数据的访问服务等)往往采用数据访问驱动组件(如ODBC、JDBC、OLEDB等)来实现,在本系统中数据访问服务组件具体地提供统一的数据访问原语,该类原语包括:SUM(求数据集的总和)、VAm-ANCE(求数据集的方差值)、INTERSECTI0N(求N个数据集的交集)以及SUBSET(求子集)等。因此,系统中的数据挖掘算法服务组件只需要向数据访问服务组件发出请求,数据访问服务组件将根据所接到的请求调用相应的数据访问原语,从数据仓库/预处理后的数据集中取出/计算出所需的数据。系统中的数据访问服务组件是基于JDBC标准来设计和实现的,数据挖掘算法服务组件则是采用Java/C++或其他主流的开发语言来设计和实现。

2.3服务注册管理服务组件

在系统中,服务注册管理组件用以管理整个系统中所有相关服务的元数据信息,该类信息主要包括特定服务的描述、相应服务的跟踪、服务的具体实施规范/细节等内容,充当着系统平台中基于Web服务规范的UDDI的角色。另外,该服务注册管理组件还管理着系统中数据挖掘算法服务组件所涉及的元数据信息(包括算法功能、算法接口、非结构化数据的元数据信息等)内容。

在系统中。服务注册管理组件是采用0pen ESB中的服务注册中心支持机制来设计和实现的,它能动态/实时地管理与各类服务活动相关的元数据内容,符合基于SOA的服务理念。同时,本系统中采用OMG发布的公共数据仓库元数据CWM(common warehouse Metamodel)标准来系统地管理系统中数据挖掘算法服务组件所涉及的元数据信息内容,具体的该类元数据内容的归类/抽取/抽象机制的设计和实现,有机地融合并参照了图2和图3所示的元数据分类/逻辑抽影视图抽象的模式。

 

 
 图2 CWM DM的7个概念域
 
图3 CWM DM挖掘核心的组成部分

其中,如图2所示:CWM DM所描述的数据挖掘算法组件的元数据所涉及的7个有机组成概念域,即包括挖掘核心(Miningcore)、聚类(Clustering)、关联规则(AssiciatiionRules)、监督(supevised)、近似(Appriximation)、分类(Classification)、属性重要性(AppributeImportance)等内容。该类元数据信息是跟踪/记录相应的数据挖掘算法服务组件所提供的数据挖掘处理和过程。如图3所示,最为重要的数据挖掘核心算法的元数据信息还可进一步地细分为:挖掘函数设置(MiningFuctionsettings)(主要关注数据挖掘算法参数的设置)和挖掘模型(MiningM0del)(主要描述了挖掘的类型,如关联规则、分类、聚类等)。

2.4数据挖掘访问服务组件

在系统中,面向服务的数据挖掘访问组件为访问/执行数据挖掘算法服务组件提供了标准化的应用接口,即客户端应用程序将封装成标准的SOAP报文请求的相关服务应用发送到企业服务总线组件,SOAP报文中包含相关应用所需的数据挖掘任务等服务请求,数据挖掘访问服务组件首先完成对SOAP报文的解析,抽取相应的数据挖掘任务请求代码,然后对该服务请求代码进行有效的语法分析/校验,最终形成相应的数据挖掘任务执行步骤(包括如何调用数据挖掘算法、传递数据参数和完成模式评估等)。

本系统采用Microsoft提出的数据挖掘扩展DMX技术方案来实现数据挖掘访问服务组件的功能。DMx的语法结构类似于SQL语言,DMX语言既可以构建出满足各种用户需求的前端应用程序和封装相应的数据挖掘处理过程,又可以支持标准化应用接口(如,web调用模式)访问/执行数据挖掘算法服务组件所提供的各类数据挖掘算法。

在系统中,数据挖掘访问服务组件的核心内容——DMX源引擎服务的设计与实现过程如下:前端应用程序发送s0AP请求报文给DMx语言引擎服务,首先,由其析取器(ExTRACTOR)将DMx语句从SOAP报文中抽取出来,析取出的DMx语句经其语法分析器(SYNTAxER)完成相应语法的分析/校验;然后,完成语法正确性校验的DMx语句由其安全校验器(SECURITY)确认该服务请求的访问权限。特定的服务请求语句经其优化处理器(OPTIMIZER)进行优化处理之后传递给执行计划生成器(GENERATOR)生成执行步骤;最终执行步骤由其应用器(APPUER)处理形成执行计划的S0AP报文形式,调度器(DISPATCHER)将执行计划的SOAP报文发送到相关的服务组件。

2.5数据挖掘算法服务组件

在系统中,如图1所示,数据挖掘算法服务组件是本原型平台的核心功能组件。数据挖掘算法服务组件通过企业服务总线组件既可以被总线上其他的服务组件调用(如,数据挖掘查询服务组件),又可以调用总线上其他的外部服务组件(如,数据访问服务组件)。该服务组件中的每一个数据挖掘算法能够独立地解决用户提出的数据挖掘任务,比如分类、预测、聚类、关联规则分析以及特征分析等。每个数据挖掘算法均相互独立,即每一个数据挖掘算法服务具有自治性和透明性,它们只需要管理自身算法的任务,而无需考虑对其他算法服务的影响。

本系统在实现数据挖掘算法的编程语言的选择上,鉴于相应的数据挖掘算法中存在着对海量数据信息的统计分析等问题,为了提高算法执行的效率和节省资源使用的开销,建议采用C/C++语言实现相应的数据挖掘算法;此外,系统中调用每个数据挖掘算法的服务均基于gSOAP框架来实现,即gSOAP是一个跨平台的0pen c/C++系统开发框架,可以生成C/C++RPC代码;而XML数据负责绑定特定的服务模式于SOAP Web服务解析器,即实现web服务的语言必须带有xML绑定功能的SOAP解析器(如,在SOAP/HTTIP协议上传输web服务接口定义语言WSDL)。

3基于Java ME智能终端的前端应用服务组件的实践

在系统中,如图1所示,前端应用服务组件负责为用户提供面向服务的人机交互接口。其中,前端应用服务组件由以下几种方式来实现:

(1)构建定制式客户端访问软件,即基于各种支持标准的SOAP通信协议的系统开发技术(如Java、.NET技术等)来实现;

(2)构建基于Web的企业级门户网站应用端口;

(3)构建可移动设备的应用接口。即基于支持SOAP协议的智能终端开发技术(如Java ME技术等)来实现。

智能(移动)终端的普及使得面向服务的软件应用成为用户关注的热点。目前,智能终端客户端是面向服务的软件其前端应用的发展趋势,移动客户端是一组特殊智能终端客户端,如个人数字助手和移动电话等。Java ME是主流智能终端开发技术。几乎所有的智能终端设备上均提供基于Java ME的运行环境。系统中采用Java ME web services/JSR172一来来实现智能移动客户端的用户访问功能。构建具体的Java ME Web服务客户端可分为两个步骤来实现:

(1)创建一个Java ME Web服务,即从服务提供方基于其WSDL生成一个Java stub,在Java ME中,该Java stub可采用JSR172来构建(如,sun wireless Toolkit可提供相应的开发/工具),该过程与基于WSDL获得特定的用户接口来发布相关服务的标准化Web服务相类似。

(2)构建一个具体web服务功能类,负责提供相应的可调用的web服务的方法,移动web服务功能需在相应的模拟器上测试/调式,然后加载到实际的移动终端设备上。基于以上步骤,本系统实现了一个基于Java ME的数据挖掘查询客户端服务组件,即基于JSR172规范来实现对远程的DMX数据挖掘算法组件的应用访问服务。该客户端的功能是在智能终端上编写DMX语句,然后发送DMx语句到DMx解析引擎,最后返回数据挖掘的结果到客户端上。功能示意图如图4、图5和图6所示。图4是通过终端编辑一条DMx的Create语句,然后通过发送这条create语句到DMx解析引擎后,相关语义得到执行,如果没有错误的话,会返回内容“Successfully create Model modelname”(图5)。最终,会在数据仓库中的元数据表M0del_Type和Asscosiation中插入相关的刚刚创建的模型的元数据信息,同时一张模型表将被生成(图6),用于保存训练数据完成训练后生成的模式的结果。

 

图6 CREATE执行后在数据仓库中的元数据表和模型表示例

4结束语

本文完成了基于S0A数据挖掘原型平台的构建工作,在设计和实现该原型系统时既考虑了以“软件服务”为宗旨的设计理念,又兼容了“共享/开放”式的企业服务总线的设计思想,尝试性地为各类中小型企业用户的信息辅助决策活动提供了开放式可扩展的数据挖掘系统原型方案,该课题的研究具有很好的实用性和应用的创新性。然而,目前所完成的基于SOA的数据挖掘原型平台中的各服务组件/功能部件的粒度较粗,仍需进一步地迭代求精。另外,数据挖掘可视化服务组件的功能细化和相应的数据挖掘算法组件的功能优化等问题均有待深入地探讨。

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢