ODI(Oracle Data Integrator)是Oracle在2006年10月收购Sunopsis公司后,整合Sunopsis Active Integration Platform而推出的一款数据集成工具,现在是Oracle Fusion Middleware的组件。和Oracle自己的OWB(Oracle Warehouse Build)相比,ODI支持更多的异构数据源,支持SOA,支持Jython,和OWB正好互补。ODI和OWB都是所谓的ELT工具,和通常所见的ETL工具不同,它们不是采用独立的引擎而是采用RDBMS进行数据转换。做为领先的RDBMS供应商,Oracle选择ELT而不是ETL不是没有道理的。
ODI的主要组件包括模块知识库,图形模块和执行引擎,都是基于java编写,所以运行ODI需要有JDK的支持。另外还有一个基于J2EE的元数据导航器(Metadata Navigator)。
知识库
ODI所有模块的信息都保存在一个叫做Master Repository的中心知识库中。Master Repository通过Master Repository Creation Wizard创建,这也是安装完ODI后应该做的第一个任务。
除了Master Repository,还需要为不同的任务创建Work Repository。Work Repository中的信息包括模块信息,项目信息和运行期信息。
图形模块
Designer 用于定义数据转换逻辑,这是最常用的开发工具,大部分的开发任务,包括data store的定义,interface(数据映射关系)和package(相当于workflow)的创建等,都是在Designer中完成。
Operator用于管理和监控数据转换任务的执行情况,在设计阶段,也可用于调试(debugging)
Topology Manager用于定义物理和逻辑基础架构,如work repository的创建和管理等。
Security Manager用于管理用户权限
运行期组件
Schedule Agent计划代理,用于调度执行数据转换任务。计划代理同时也带有一个数据转换引擎,但是ODI采用E-LT架构,所以基本上计划代理只是将任务传递给目标库,其数据转换引擎很少用到。
附:安装完ODI后默认用户名为SUPERVISOR,密码为SUNOPSIS,大小写敏感。
ODI官方网站:http://www.oracle.com/technology/products/oracle-data-integrator/index.html
ODI中文官方网站:http://www.oracle.com/technology/global/cn/products/oracle-data-integrator/index.html
Oracle的OWB(Warehouse Builder)和ODI(Data Integrator)都是使用E-LT的理念设计出来的数据抽取/数据转换工具,他们本身都可以作为一个ETL工具使用但是也有不同的特点,本文主要讨论他们之间的差异和关系。
ODI和OWB
ODI和OWB是互为补充的,ODI有四个地方是对OWB的很好的补充:
1. 对于需要异构数据支持:当数据源或者目的不是Oracle数据库,ODI能够生成针对那个数据源的native的SQL操纵语句。
2. 对于需要实时数据集成的环境:ODI能够检测事件,一个事件可以触发ODI的一个接口流程。从而完成近实时的数据集成。下图是ODI提供的一些检测事件的工具,可以用在package里(ODI workflow的代名词)如OdiFileWait是等待文件到达,OdiSleep类似于许多系统里的Sleep等待轮询,OdiWaitForLogData则可以用于捕获增量数据的捕获的事件。这里的组件都是实现实时数据集成的关键部分。
3. 在数据抽取集成过程中需要和SOA集成,ODI本身提供了call web service的机制,并且ODI的接口也可以暴露为webService,从而可以和SOA环境进行交互。
4. 一致的CDC(Change Data Capture)支持,不同的数据源(Oracle,DB2等)对于变化数据获取都提供了不一样的技术框架,ODI把这些不同的技术框架屏蔽了,以一个统一的接口方式提供统一的CDC的设置框架,并提供订阅者的功能。
而OWB相比于ODI也有自己的很多特点:
1. 丰富的Oracle数据运算符,能够提供Oracle数据库之间的高速转换抽取。
2. 从11g开始,OWB会作为Oracle的标准选件来提供,OWB本身会通过Oracle数据库的安装盘来安装,和所有的其他Oracle选项一样,都会和数据库核心紧密集成。
3. 数据质量管理:OWB的data profiling是一个相当强的数据质量管理工具,原理和流程是 数据采样-》分析采用数据的错误和规则-》生成纠正采样数据的mapping流程-》验证流程-》把流程应用到所有的数据上的循环。
小结
OWB本身除了运行需要较多的资源之外,本身是一个设计得相当好的工具(身边一些用过的人都评价还是很不错呀!),对于Oracle数据之间的抽取转换的功能完全不是任何别的工具可以比的,当然OWB的主要不足都体现在ODI里了,所以,OWB和ODI是完全互相补充的工具,如果是要同时在建设一个数据中心的项目里使用这两个工具的话,可以使用ODI来完成从异构数据源到staging Oracle数据的生成,或者用ODI完成需要实时数据同步的工作,而OWB可以用于从staging Oracle数据到Oracle数据仓库的Oracle数据源之间的工作,这样应该是最完美的设计。当然单独用OWB或ODI其实都可以完成这些工作,只不过这两个工具合并起来用,应该是一个大型数据仓库项目的非常好的方式。