本文介绍了 Oracle Data Integrator,它是一个基于 Java 的中间件,可以使用数据库在 SOA 中执行基于集合的数据集成任务。
现在,复杂的“可热插拔”系统和面向服务的体系结构 (SOA) 得到了广泛应用,这使得将数据合理地整合在一起的难度日益增加。尽管您的主要应用程序数据库在 Oracle 数据库上运行,但是可能还有其他较小的系统在其他供应商提供的数据库和平台上运行。您的应用程序本身可以通过 Web 服务之类的技术进行交互,应用程序和数据可以远程托管,也可以由您在企业数据中心内进行管理。
Oracle Data Integrator 属于 Oracle 融合中间件产品系列,它解决了异构程度日益增加的环境中的数据集成需求。它是一个基于 Java 的应用程序,可以使用数据库来执行基于集合的数据集成任务,也可以将该功能扩展到多种数据库平台以及 Oracle 数据库。此外,通过它,您还可以通过 Web 服务和消息提取并提供转换数据,以及创建在面向服务的体系结构中响应和创建事件的集成过程。
Oracle Data Integrator 产品体系结构
Oracle Data Integrator 是以 Java 图形模块和调度代理访问的模块化信息库为中心进行组织的。图形模块用于设计和构建集成过程,代理用于安排和协调集成任务。当 Oracle Data Integrator 项目投入生产时,数据管理员可以使用基于 Web 的 Metadata Navigator 应用程序来根据信息库中的元数据生成报告。现成的知识模块可以使用特定于平台的代码和工具跨异构平台提取和加载数据。
Oracle Data Integrator 信息库包含一个主信息库(包含有关用户和角色的详细信息)、到数据库和其他数据源的连接、项目版本以及一个或多个工作信息库(包含数据模型的详细信息以及用于集成数据的映射)。这些信息库可以存储在 Oracle 和非 Oracle 关系数据库中,可以使用图形模块进行管理,并可以在运行时由代理进行访问。
有四个图形模块可用来创建和管理 Oracle Data Integrator 项目:
Designer 用于定义数据存储(表、文件、Web 服务等)、接口(数据映射)以及程序包(包括接口在内的几组集成步骤)。
Topology Manager 用于创建和管理到数据源和代理的连接,通常限制为只有管理员可以访问。
Operator 用于查看和管理产品集成作业。
Security Manager 管理用户及其信息库权限。
这些基于 Java 的应用程序可在包括 Microsoft Windows、Macintosh OS X 和 Linux 在内的任何 Java 环境中运行。
声明式设计
一般来说,数据集成任务涉及两个主要的领域:
关于转换哪位数据并将其与其他位相结合的业务规则
关于数据的实际提取、加载等操作方式的技术细节
这种划分意味着,定义业务规则的人通常是机构的技术业务专家或数据专家,而技术细节则往往留给开发人员和 DBA 等技术人员来定义。使用大多数数据集成工具,通常很难以这种方式划分职责,因为它们的数据映射特性在同一个数据映射中混合了业务规则和技术实现细节。而 Oracle Data Integrator 采用了一种不同的方法,像 SQL 一样使用声明式方法来构建数据映射,这在工具中称为“接口”。
创建新的接口时,开发人员或技术业务用户首先定义要集成的数据以及应使用的业务规则。在该步骤中,会将表联接在一起,应用过滤器,并使用 SQL 表达式来转换数据。所使用的特定 SQL 语言由执行代码的数据库平台来决定。
然后,在另一个步骤中,技术人员可以使用特定于数据库的工具和设计方法(例如增量加载、批量加载工具、渐变维度和更改数据捕获)以最有效的方式来提取、组合并集成该数据。
可扩展的知识模块
由于 Oracle Data Integrator 在响应事件的同时从很多不同的数据库平台加载和转换数据并使用基于消息的技术(如 Web 服务),因此用于访问和加载这些不同数据源的技术需要灵活、可扩展而又高效。Oracle Data Integrator 通过知识模块解决了该问题。
知识模块是 Oracle Data Integrator 的“插件”,它浓缩了为特定数据源或特定目标加载、转换或集成数据的最佳实践。Oracle Data Integrator 有六种知识模块,如下图所示:
反向工程知识模块用于从源数据库中读取表和其他对象元数据。
日志记录知识模块记录单个表或视图或者一组一致的表或视图中的新数据和更改的数据。
加载知识模块用于从源数据库中有效地提取数据,并包括特定于数据库的适用的批量卸载工具。
检查知识模块用于检测源数据中的错误。
集成知识模块用于有效地将分段存储区中的数据转换为目标表,以便为给定数据库生成优化的本机 SQL。
服务知识模块可以将数据公布为 Web 服务。
知识模块还可以扩展,这样您可以添加 Oracle Data Integrator 当前未提供的功能。例如,采用一组现有的基于 Oracle 的知识模块并将其扩展为包括 Oracle 数据库 10g 中的 Oracle 数据泵功能将是一项相对简单的任务。
数据质量防火墙
如果您是负责加载数据仓库的人,那么不得不解决的一个问题是执行夜间加载的时间段越来越短。如果您的元数据包含大量在加载到数据仓库分段存储区之前无法检测的错误,时间就会变得格外紧张。
Oracle Data Integrator 利用了一种创新方法来解决该问题,即,使用检查知识模块在数据源处充当脏数据的“防火墙”,只允许符合业务规则的数据进入集成流程。要使用该方法有效地确保数据质量,您首先要在源对象上定义一个或多个约束,然后使用检查知识模块来识别不符合这些约束的所有行,并将它们复制到错误表中。
这样,在您以后从这些源对象中提取数据并在接口中使用它们时,可以确保仅加载了符合这些约束的数据,并且您可以单独处理错误表中的脏数据。
支持更改数据捕获
尽可能缩短数据加载时间的另一种有用的方法是,仅加载新的或经过更改的数据。幸运的话,应用程序设计人员会提供指示器和日期来帮助确定新的或经过更改的数据,但是大多数情况下,不会提供该信息,这需要您自己来确定感兴趣的数据。
由于这是一个相当普遍的要求,因此 Oracle Data Integrator 提供了日志记录知识模块来监视源数据库,并将新的和经过更改的记录复制到日志中,然后可以从日志中而非原始的源表中读取这些记录。如果 Oracle 之类的数据库供应商提供更改数据捕获的本机支持,就会使用这些功能;否则,日志记录知识模块会使用触发器之类的技术来捕获数据操作语言 (DML) 活动并使更改可用。在本文的后面部分,您将看到 Oracle Data Integrator 如何提供 Oracle 更改数据捕获功能,以及如何使用它以增量方式将数据库实时加载到其他数据库平台上。
Oracle Data Integrator 与 Oracle Warehouse Builder 比较
这时,Oracle Warehouse Builder 的常规用户可能想知道它与 Oracle Data Integrator 的关系,以及它在其他 Oracle 数据仓库技术产品中的适用情况。我们的回答是,Oracle Data Integrator 是一个工具,是对 Oracle Warehouse Builder 的补充,如果涉及在 Oracle 数据仓库中创建分段层和集成层的工作很重要或者涉及 SOA 或非 Oracle 数据库源,它将尤为有用。
对于构建 Oracle 数据仓库的人来说,Oracle Warehouse Builder 有一组功能强大的特定于 Oracle 的数据仓库功能,例如,支持关系和多维数据结构的建模、与 Oracle Business Intelligence Discoverer 集成、支持加载渐变维度,以及用于理解数据结构和语义的数据分析器。
从源数据的最初准备和集成一直到数据仓库的分段存储区,Oracle Data Integrator 都起着重要作用。
Oracle Data Integrator 可以集成和同步大量不同数据源(包括 Web 服务和基于事件的体系结构)中的数据,并且如上图所示,还可以为特定于 Oracle 数据库的功能(如 Oracle 更改数据捕获)提供方便的图形界面。将数据集成并复制到数据仓库分段存储区后,Oracle Warehouse Builder 会接替后续工作,创建并填充操作数据存储和维度仓库层。
现在大家对 Oracle Data Integrator 已经有所了解,本文将重点关注如何在实际的数据集成案例中使用它。
Oracle Data Integrator 使用示例:跨平台实时数据集成
在该案例中,您的任务是从 Oracle 数据库中提取一些订单和客户数据,将其与文件中保存的一些员工数据组合到一起,然后将集成的数据载入 Microsoft SQL Server 2000 数据库。由于订单到达时需要进行分析,因此您希望以尽可能接近实时的速度将它们直接传递到目标数据库,并仅提取新的和经过更改的数据以保持尽可能小的负载。您已经在 Oracle 技术网上了解了 Oracle Data Integrator 的相关信息,并希望使用这一新工具来提取和加载数据。
您首先登录到 Oracle Data Integrator 并启动 Topology Manager,如下图所示。
在 Oracle Data Integrator 中,物理数据库、服务或基于事件的数据源均称为数据服务器。使用 Topology Manager 创建三个新的数据服务器:
一个 Oracle 数据库数据服务器,使用 SYSTEM 用户的凭证设置,映射到数据库上的 ORDERS 和 ORDERS_WORKAREA 模式。ORDERS 模式包含您要提取的订单数据,而 ORDERS_WORKAREA 模式是您专门设置的一个空模式,用来存放 Oracle Data Integrator 创建的工作表。使用 Oracle JDBC 驱动程序建立该连接。
一个文件数据服务器,映射到以逗号分隔的文件(其中包含员工详细信息)。使用 Sunopsis 文件 JDBC 驱动程序建立该连接。
一个 Microsoft SQL Server 数据服务器,映射到名为 ORDERS_DATA_MART 的数据库。使用 Sun JDBC-ODBC 桥接 JDBC 驱动程序建立该连接,或者使用 Microsoft JDBC 驱动程序(可以从 Microsoft Web 站点下载)。
定义数据服务器之后,您可以退出 Topology Manager 并启动 Designer。使用 Designer,您可以创建代表 Oracle、文件以及 Microsoft SQL Server 表和文件的数据模型,这在 Oracle Data Integrator 中称为数据存储。首先创建 Oracle 和 Microsoft SQL Server 模型,然后使用反向功能将表的元数据导入 Oracle Data Integrator 的信息库中,如下图所示。