1、数据共享与交换平台解决方案一、 方案概述随着信息社会的到来,计算机网络环境和分布处理技术的深入发展。信息系统中的数据源所呈现的形式也日益繁多,在这些数据中有模式固定的结构化数据,也有无模式的无序数据。这种无论是已知确定来自数据库的数据或是来自网络上的各式各样结构不固定、不完全或不规则的数据,都给信息系统在向国民经济信息化发展的过程中产生了很大的障碍。因此,完成不同数据的共享与交换成为各个企业与部门进行信息交换时所必须要解决的重要问题。主要原理如下图:二、 主要工具1. 工具简介数据集成的目的就是要运用一定的技术手段将系统中的数据按一定的规则组织成为一个整体,使得用户能有效地对其进行操作。数据处
2、理的对象是系统中的各种异构数据库中的数据或者无格式数据,而数据集成的主要过程则是建立完善的数据仓库,以及采用数据挖掘技术获取更多数据信息。ETL 作为数据库级的数据集成工具,擅长大量数据的迁移,能从多个数据源中抽取数据,然后进行数据转换和加载,最终得到统一的、完备的主题数据库或数据仓库,原来分散的应用仍独立运作。ETL 中三个字母分别代表的是 Extract、Transform、Load,即抽取、转换、加载。数据抽取:从源数据源系统抽取目的数据源系统需要的数据;数据转换:将从源数据源获取的数据按照业务需求,转换成目的数据源要求的形式,并对错误、不一致的数据进行清洗和加工。数据加载:将转换后的数
3、据装载到目的数据源。ETL 原本是作为构建数据仓库的一个环节,负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。一个简单的 ETL 体系结构如图 1.1 所示。2. ETL 关键技术数据抽取数据抽取是从数据源中抽取数据的过程。实际应用中,数据源较多采用的是关系数据库。从数据库中抽取数据一般有以下几种方式:全量抽取:全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数据库中抽取出来,并转换成自己的 ETL 工具可以识别的格式。增量抽取:增量抽取只抽取自上次抽取
4、以来数据库中要抽取的表中新增或修改的数据。在 ETL 使用过程中。增量抽取较全量抽取应用更广。目前增量数据抽取中常用的捕获变化数据的方法有:触发器、时间戳、全表比对、日志对比。数据转换和加工从数据源中抽取的数据不一定完全满足目的库的要求,例如数据格式的不一致、数据输入错误、数据不完整等等,因此有必要对抽取出的数据进行数据转换和加工。数据的转换和加工可以在 ETL 引擎中进行,也可以在数据抽取过程中利用关系数据库的特性同时进行。相比在 ETL 引擎中进行数据转换和加工,直接在 SQL 语句中进行转换和加工更加简单清晰,性能更高。对于 SQL 语句无法处理的可以交由 ETL 引擎处理。数据装载将转
5、换和加工后的数据装载到目的库中通常是 ETL 过程的最后步骤。装载数据的最佳方法取决于所执行操作的类型以及需要装入多少数据。当目的库是关系数据库时,一般来说有两种装载方式:1)直接 SQL 语句进行 insert、update、delete 操作;2)采用批量装载方法,如bcp、bulk、关系数据库特有的批量装载工具或 api。3. 主流 ETL 工具ETL 工具从厂商来看分为两种,一种是数据库厂商自带的 ETL 工具, 如 Oracle warehouse builder、Oracle Data Integrator。另外一种是第三方工具提供商,如 Kettle。Oracle Data In
6、tegrator(ODI):ODI 主要定位于在 ETL 和数据集成的场景里使用,ODI 能够检测事件,一个事件可以触发 ODI 的一个接口流程,从而完成近乎实时的数据集成。ODI 的主要功能特点有:使用 CDC 作为变更数据捕获的捕获方式、代理支持并行处理和负载均衡、完善的权限控制、版本管理功能、支持数据质量检查,清洗和回收脏数据、支持与 JMS 消息中间件集成、支持 Web Service。KETTLE:说到 ETL 开源项目,Kettle 当属翘首,项目名称很有意思,水壶。按项目负责人 Matt 的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。Kettle 分为四大块:Chef 工作(job) 设计工具 (GUI 方式)、 Kitchen工作(job)执行器 (命令行方式)、Spoon转换(transform) 设计工具 (GUI 方式)、Span转换(trasform)执行器 (命令行方式)三、 数据集成工具选择1. 对平台的支持程度2. 对数据源的支持程度3. 抽取和装载的性能是不是较高,且对业务系统的性能影响大不大,倾入性高不高4. 数据转换和加工的功能强不强5. 是否具有管理和调度功能6. 是否具有良好的集成性和开放性