神通数据库数据集成

1) 引言

随着信息社会的到来,计算机网络环境和分布处理技术的深入发展。信息系统中的数据源所呈现的形式也日益繁多,在这些数据中有模式固定的结构化数据(如关系库中的表/元组和对象数据库中的类型/对象),也有无模式的无序数据(如文字、声音、图像)。无论是来自数据库的数据或是来自网络上的不规则的数据,都给企业、部门的发展产生了很大的障碍。因此,完成不同数据的交换与集成成为各个企业与部门进行信息交换时所必须要解决的重要问题。

为了解决各系统之间设计理念、建设时间、平台选择等不一致性因素而导致系统间相互独立、信息分散等问题,企业通过集成不同的系统信息为企业提供统一的决策分析平台,帮助企业解决实际的业务问题。人们往往会采用数据集成技术实现。


2) 数据集成的分析

■ 数据集成的概念

数据集成的核心任务是要将互相关联的分布式异构数据源集成到一起维护数据源整体上的数据一致性,使用户能够以透明的方式访问这些数据源。数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,提高信息共享利用的效率。

■ 为什么使用数据集成

使用数据集成有三个方面的好处:第一,数据集成能够为业务部门提供准确、及时的信息。第二,数据集成可以赋予管理人员更强大的分析能力。第三,数据集成是进行数据挖掘、知识发现的基础。无论是简单的还是复杂的数据集成应用都以ETL技术为基础,ETL技术成为了数据集成的核心技术。

■ 数据集成的方法

模式集成

模式集成是人们最早采用的数据集成方法。其基本思想是在构建集成系统时将各数据源的数据视图集成为全局模式使用户能够按照全局模式透明地访问各数据源的数据。全局模式描述了数据源共享数据的结构、语义及操作等。用户直接在全局模式的基础上提交请求由数据集成系统处理这些请求转换成各个数据源在本地数据视图基础上能够执行的请求。模式集成方法的特点是直接为用户提供透明的数据访问方法。

目前有两种比较典型的模式集成方法:联邦数据库,中间件集成方法。

联邦数据库

联邦数据库是早期人们采用的一种集成模式方法。联邦数据库中数据源之间共享自己的一部分数据模式形成一个联邦模式。

联邦数据库按集成度要可分为:紧密耦合联邦数据库系统、松散耦合联邦数据库系统。紧密耦合联邦数据库系统使用统一的全局模式将各数据源的数据模式映射到全局数据模式上解决了数据源间的异构性。松散耦合联邦数据库系统采用非全局模式,采用的是联邦模式,提供统一的查询语言将异构性问题交给用户自己解决。

中间件集成方法

此集成方法是另一种典型的模式集成方法它使用全局数据模式,中间件系统不仅能够集成结构化的数据源信息还可以集成半结构化或非结构化数据源中的信息WEB信息。

基于中间件的数据集成系统,主要包括中间件和包装器其中每个数据源对应一个包装器中间件通过包装器和各个数据源交互。中间件处理用户请求将其转换成各个数据源能够处理的子查询请求并对此过程进行优化以提高查询处理的并发性减少响应时间。包装器对特定数据源进行了封装将其数据模型转换为系统所采用的通用模型并提供一致的访问机制。中间件将各个子查询请求发送给包装器由包装器来和其封装的数据源交互执行子查询请求并将结果返回给中间件。如下图:

 

 

数据复制

数据复制方法将各个数据源的数据复制到与其相关的其它数据源上并维护数据源整体上的数据一致性、提高信息共享利用的效率,数据复制可以是整个数据源的复制也可以是仅对变化数据的传播与复制。数据复制方法可以减少用户使用数据集成系统时对异构数据源的数据访问量从而提高数据集成系统的性能。数据复制方法可以从数据传输方式和数据复制触发方式两个方面来划分。

数据传输方式是指发布数据的源数据和订阅数据的目的数据源间的传输形式该数据传输方式可分为数据推送和数据拉取。数据推送是指源数据主动将数据推送到目的数据源上。而数据拉取则是目的数据源主动向源数据发出数据请求从源数据源获取数据到本地。

数据复制触发方式是指集成系统调用数据复制的方式集成系统通常预先定义了一些事件这些事件可以包括对数据发布端引起的数据变化的某个操作、数据发布端数据缓存累积到一定批量、用户对某个数据源发送访问请求、具有一定间隔的时间点等。

综合集成

综合方法通常是想办法提高基于中间件系统的性能该方法仍有虚拟的数据模式视图供用户使用同时能够对数据源间常用的数据进行复制,对于用户简单的访问请求综合方法总是尽力通过数据复制方式在本地数据源或单一数据源上实现用户的访问需求而对那些复杂的用户请求无法通过数据复制方式实现时才使用虚拟视图方法。

集成方法的比较

集成方法

优点

缺点

模式集成

实时一致性好透明度高

执行效率低网络依赖性强算法复杂

数据复制

执行效率高网络依赖性弱

实时一致性差

 

3) 神通数据集成解决方案

 神通数据集成介绍

神通数据集成采用的是模式集成(中间件集成方法),是面向企业应用集成的中间件产品,采用SOA架构,提供即插即用的构件框架,遵循JEE规范、JBI规范、WebService规范等业界最新的规范和事实的行业标准,提供数据集成(ETL)、协议转换、业务集成等领域业务构件。神通数据集成产品简称为(SIB)。

 SIB体系架构


 



SIB由开发模块、运行模块、管理模块三个部分组成,这三个模块分别与开发平台、运行平台、管理平台相对应,依赖于三个平台的框架,独立于三个平台的其他模块。SIB开发模块对用户提供构件开发、构件管理、服务编排、服务开发、服务测试、服务管理的功能。运行模块是 SIB的运行环境,由ESB容器、协议构件、服务引擎等构成。用户将功能模块封装成构件安装到ESB容器中,并允许外部系统将系统的构件的功能抽象成服务发布到服务注册库,用户还可以在可视化的环境中,根据这些构件,实例化服务,并通过对服务的编排、组合,快速生成数据集成的应用。管理模块为用户提供构件的生命周期管理和服务的生命周期管。

 SIB功能介绍

SIB可以分为开发模块、运行模块、管理模块三个部分,分别对应于应用软件系统生命周期的开发时态、运行时态、管理时态三大阶段,以支撑SIB构件和服务的整个生命周期。

SIB的开发模块

SIB开发模块是一个基于Eclipse构建,面向复杂企业应用软件系统开发的集成开发环境平台。以模型驱动的方式快速生成指定的构件模板,将配置文件,打包等工作从开发任务中分离出来,使开发者更关注业务需求的实现。以服务单元为基础编辑单元,可以进行图形的选择、拖拽和编辑等功能,提供对构件以及服务工作的远程部署和调试。

SIB的运行模块

SIB运行模块基于JCP组织的JBI标准、Web服务相关标准以及XML等标准建造,SIB运行模块采用面向服务的体系架构,提供即插即用的构件框架和服务发布机制,提高企业应用集成中的可重用性、灵活性、可扩展性,做到“随需应变,快速构建”。

SIB运行平台提供了一整套面向数据集成构件,由基础服务、容器、标准构件、服务工作、轻量级构件组成。运行模块是整个数据集成的核心模块,这些构件可以实现数据的抽取、转换、清洗、装载功能。

SIB的管理模块

管理模块提供友好而完备的构件和服务管理功能,提供安装构件和共享库的可视化通道,通过简单的菜单和按钮操作完成。提供流量分析和统计、服务状态检测以及各种工作的生命期控制。在安全管理方面提供用户注册审批、用户权限控制。提供环境变量、数据库、连接池等参数的调整和配置。

 ETL解决方案

ETL是数据集成的主要解决方案,在实施数据集成的过程中,由于不同用户提供的数据可能来自不同的途径,其数据内容、数据格式和数据质量千差万别,有时甚至会遇到数据格式不能转换或数据转换格式后丢失信息等棘手问题,严重阻碍了数据在各部门和各应用系统中的流动与共享,因此,数据ETLExtract, Transform and Load,提取、转换和加载)过程十分必要,对脏数据进行有效处理,确保提取数据的质量,是数据集成的不可缺失的一环。

ETL作为数据库级的数据集成工具,擅长大量数据的迁移,能从多个数据源中抽取数据,然后进行数据转换和加载,最终得到统一的、完备的主题数据库或数据仓库,原来分散的应用仍独立运作,ETL提供了复杂的数据转换功能,集成多种数据源和复杂的商业规则,主要是抽取、转换和加载各种数据库中的数据,并能容忍数据在时间上的延迟。其转换处理步骤如下图:

 

 

ETL的工作原理

ETL工作流程包括:

数据的抽取:从不同的网络、不同的操作平台、不同的数据库及数据格式、不同的应用中抽取数据;

数据的转换:数据的转化(数据的合并、汇总、过滤、转换等)、数据的重新格式化和计算、关键数据的重新构建和数据总结、数据定位;

数据的加载:跨网络、跨操作平台将数据按照物理数据模型定义的表结构装入目标数据库中。

神通ETL的架构

ETL作为数据集成的核心技术在数据处理上遵从以下几个步骤过程:

异构的多数据源处理

能够接受多种数据源,异构数据源。即除了对三种基本类型的数据库(本地数据库、外部数据库即较流行的数据库、ODBC数据源)还支持电子商务数据、未知格式文件数据等。

通用数据访问数据接口

ETL工具能够跨平台、跨网络访问数据,能支持不同类型数据源间的连接,通过屏蔽各种数据源之间的差异,为后序提供一个统一的数据视图,目前只支持JDBC接口,其中JDBC支持跨平台、网络访问数据。

数据抽取

数据抽取包括模式数据和实例数据抽取。通过SIBDBSource构件从数据源中抽取模式信息,用人工或相关的智能算法加以分析,得到实例数据的抽取策略,存储在知识库中供装载数据时使用。抽取模式信息的合法性是保证数据质量的关键。在此过程中使用增量式的抽取算法,避免了对庞大的多源数据集进行昂贵而费时的重复扫描,以保证数据处理的效率问题。

数据集成

数据抽取后得到的是多个模式和实例数据集,然而数据集成需要的是集成的、语义一致、面向对象的数据,必须将多模式与数据集进行统一映射,转换为单一的结果集。在数据集成过程中SIB提供DBOperator构件把抽取的数据进行转换、清洗、过滤等,此过程依据数据语义、语法、结构将不同数据元素化,格式化得到统一的数据结构,从而进行数据标准化,消除不一致性的问题(如缩写、简写)等,最后将处理后的数据作为中间结果存储临时区域中,等待进一步的清洗。

数据规约

经过数据集成后的数据集中还包含许多相似重复记录,必须消除这些数据。针对数据集进行匹配,发现重复异常,根据匹配结果进行处理,删除部分记录或者将多个记录合并为一个更完整信息的记录。

数据装载

此过程SIB提供DBSink构件用来解决模式实现以及数据装载时机等问题,能够有选择的转载到一个或多个目的数据表中,并允许人工干预,以及提供强大的错误报告、系统日志、数据备份与恢复功能。

目的数据存储

提供数据与元数据的存储场所,是ETL的终点。

 完整的应用集成解决方案

SIB提供完整的数据集成方案,支持语义和访问协议的转换,覆盖三种企业应用集成模式:基于连接的应用集成、基于信息共享的应用集成、基于流程协作的应用集成。

基于连接的应用集成

基于连接的应用集成是指应用程序之间进行同步或异步的通信来实现业务功能。在这一模式中,集成的多个应用程序共享一个公共的应用架构。应用程序共用通信的数据模型,并且能够激活相应的应用程序来获取服务。基于连接的应用集成有两种方式来实现:通过服务访问、通过数据集成。

服务访问

使用这种方式的时候,根据需要集成业务逻辑将需要集成的应用程序封装成为构件,安装到SIB运行平台上,将构件的服务单元直接部署到SIB运行平台,各个应用程序通过访问封装的应用程序的构件的服务单元来完成应用程序间的集成。如下图:

 

 

数据集成

利用SIB的数据集成构件来完成基于连接的应用集成,其实质就是将源应用系统的数据传送到目的应用系统,其实现方法是通过编排服务、组合读取数据的构件(Source类),进行转换的构件(Transform类),进行数据传输的构件(Transfer类),实现应用程序直接进行同步或异步的通信。如下图:



基于信息共享的应用集成

基于信息共享的应用集成通过应用程序之间业务事件驱动的发布/订阅通信来实现。SIB提供支持发布/订阅的构件,支持应用程序系统之间通过信息共享的应用集成。如下图:



基于流程协作的应用集成

基于流程协作的应用集成是应用于企业级的集成方式,需求企业通过B2B协议和企业外部系统进行集成。为了获得企业系统的灵活性,要求企业独立使用B2B协议,而且企业的内部流程对应企业外部系统是隐蔽的。这样当企业的内部流程发生变化后不会影响到外部的合作伙伴。如下图一个简单的基于流程协作的应用集成示意:




通过一个业务封装构件封装系统A中需要供外部调用的接口,将业务服务单元XSLT语义转换服务单元,外部协议绑定构件的服务单元组合成一个服务组合,注册到某个公用的注册中心。在绑定的三个服务单元当中,XSLT语义转换服务单元根据某个公用数据标准,负责内部与外部的语义转换,外部协议绑定构件的服务单元将服务发布成使用外部协议可以调用的端点。外部系统通过注册中心查询到这个已发布的服务组合,通过外部调用协议,访问服务组合。

推荐神通数据集成方式

通过上面的集成方式介绍可以看出,基于连接的应用集成是典型的模式集成方法,而基于信息共享的应用集成更偏向于数据复制的集成方式,基于流程协作的应用集成过于复杂,不适合一般的企业级应用。

基于连接的应用集成适用于集成系统规模大、数据更新频繁、数据实时一致性要求高的情况或者当很难预测用户的查询需求时也适合采用这种方法。我们建议采用这种集成方式,因为它实时一致性好而且透明度高。

基于信息共享的应用集成适用于数据源相对稳定、用户查询模式已知或有限的情况,实时一致性差,有一定的局限性,出于机密性的考虑不最好不采用信息共享的应用集成方案。

 

4) 我们的优势

■ 丰富的外围工具

SIB不仅实现了JBI规范的SOA的运行平台,同时也提供了支持SIB构件开发和服务开发的开发工具和支持SIB平台及其构件和服务安装、部署的管理工具。SIB的开发工具基于Eclipse插件框架实现,包括构件开发和服务开发两部分。它提供图形化基础工具,通过可视化导航、拖拽和编辑,配置构件的属性,以及构件之间的连接关系,建立服务工件模型。

■ 灵活的架构体系

采用SOA架构,提供即插即用的构件框架,遵循JEE规范、JBI规范、WebService规范等业界最新的规范和事实的行业标准。SIB管理的资源可以通过参数的调整和配置来实现。例如连接池、数据库的管理,环境变量以及运行参数。

■ 完备的数据集成套件

提供了一整套面向数据集成构件,用户可以在可视化的环境中,根据这些构件,实例化服务,并通过对服务的编排、组合,快速生成数据集成的应用。