在此处插入图片超越ETL使用ODI的新一代数据集成ODI–Oracle数据集成引擎蒋燕梅FMW售前技术顾问—Oracle融合中间件2008年7月23日,广州3在此处插入图片•业务挑战•6个主要独特优势•体系结构•应用模式•参考案例议程4问:为什么这家商店每个月总是给我发送三份相同的目录?问:为什么我的信用卡奖励积分要花15天才能显示在我的航空公司网站上?问:为什么银行不能协调我的伦敦帐户和纽约帐户?答:主数据通常,银行产品代码随地域而不同,必须使用相应的法制引导,在可控的规则流程下进行协调。答:数据质量很多时候,大型零售商维护独立的邮递市场营销列表,其中包含只有轻微不同的数据,缺乏数据质量智能以匹配相同的数据。答:批量数据通常有一些特定的跨组织政策用于处理积分奖励和换算,这些政策一般用在定期执行的批处理例程中。日常数据集成问题最终客户数据集成需求示例5客户需求的分类数据集成需求动因•客户要求统一的信息视图•跨多个异构源的结构化和非结构化信息•结构化信息:数据库;打包的应用程序;数据仓库•非结构化信息:B2B源;XML源;文档源•多维源:OLAP源;财务与运营计划•通过跨事务系统、打包应用程序和主数据平台的统一主数据视图推动主数据管理•获得卓越的业务绩效•使用跨事务系统、数据仓库和数据中心的统一语义推动更佳的业务智能•使用跨计划、预算、财务合并和报表系统的统一信息推动财务绩效管理•推动跨多个业务线和功能的基于SOA的业务流程和组合应用程序•全面的数据集成基础平台•全面:完整的数据集成技术基础•集成:统一的工具;统一的元数据管理;统一的管理•与应用程序预先集成:降低了集成的成本和复杂性6数据集成中的挑战和新兴解决方案挑新兴的解决方1.不断增加的数据量;不断减少的批处理窗口2.非集成的集成3.复杂性、传统ETL设计的手动工作4.缺乏知识捕获从E-T-L转变为E-LT聚合的集成解决方案从自定义编码转变为声明式设计转变为模式驱动开发7从多源到异构目标的数据移动和转换OracleODI优点关键的特性1.高性能“E-LT”架构2.灵活性事件驱动的平台3.生产力声明式设计4.开放架构100%Java和SOA兼容5.可热插拔知识模块6.丰富的异常处理与BPEL和人工工作流原生集成OracleODI的优势6个主要独特优势9独特优势:E-LT体系结构高性能传统的ETL体系结构提取加载转换新一代体系结构“E-LT”“E-LT”加载提取转换转换在单独的ETL服务器中转换•专有引擎•成本高•IBM和Informatica方式ELT的关键点•利用RDBMS来进行E,T,L•TPCH30TB,16.1小时,32分钟/TB;10TB,1.67小时,10分钟/TB•是生成RDBMS脚本的专家•能减少数据在服务器之间的搬动优势ü最佳性能和可伸缩性ü易于管理和降低成本11ELT减少数据的搬动ODIAgent(Java)SourcesTarget(s)AgentDataSQLordersETLServerSourcesTarget(s)TransformEngineExtractLoadExtractELTArchitectureETLArchitecture11例子:公安局人口信息加载•需求•SRC.MX_JBXX=TAR.MX_JBXX。数据量上亿•人口信息缓慢变化,源不保留历史,目标需要保留•增量加载的时候,如果是UPDATE发生了变化的数据,则需要将原来的数据修改有效日期变成历史记录,然后将新的数据插入作为当前数据ETLServer源表Target(s)Join增量1万条增量全量目标表ETLArchitecture源表ODIAgentAgent增量1万条SQLordersJoinELTArchitecture11119支持实时数据仓储和操作数据平台9服务插入OracleSOA套件以便全面集成OracleDataIntegrator面向数据的集成EventConductorEventConductor面向事件的集成ServiceConductorServiceConductor面向服务的集成声明式设计元数据DataConductorDataConductor独特优势:主动集成批处理、基于事件并且面向服务的集成•数据集成中的变化数据捕获•面向事件的集成•面向服务的集成•优势22•对实时性要求越来越高•数据仓库项目对实时数据的要求•主数据管理要求实时同步•如何捕获增量(CDC)•基于时间/序号字段的方法•基于日志表的方法•Trigger•Logminer•数据一致性问题•多张表可能存在主外键引用•多张表可能存在因果关系•需要保证一次性被捕获并同步的多张表的数据的一致性数据集成对实时性/一致性的要求22•多个站点/IT系统之间的集成•双向同步•一对多/多对多•带条件的一对多•同步的时候进行复杂的转换复杂的IT环境省局服务器地市A地市B地市C条件A条件B条件C22•完全可以支持基于时间的变化捕获•根据时间字段过滤•保存当前抽取状态•增量数据Update/Insert•支持基于日志表的数据增量捕获方案CDC•简单的CDC•一致性的CDC•OracleLogminerCDC•自定义/客户化的双向CDCODI的增量数据捕获解决方案2213记日记帐从CDC源读取加载从源到临时存储检查加载前约束集成转换并移动到目标服务公开数据和转换服务反向工程元数据9定制以满足现有的最佳实践9减轻了管理工作9降低了拥有成本反向记日记账加载检查集成服务可插入的知识模块体系结CDC来源临时表错误表目标表WSWSWSSAP/R3SiebelLogMinerDB2JournalsSQLServerTriggersOracleDBLinkDB2Exp/ImpJMSQueuesCheckMSExcelCheckSybaseOracleSQL*LoaderTPump/MultiloadTypeIISCDOracleMergeSiebelEIMSchemaOracleWebServicesDB2WebServices现成知识模块示优势独特优势:知识模块可热插拔:模块化,灵活的,可扩展的33Target(Oracle)Source(Sybase)一个商业问题ORDERSLINESCORRECTIONSFileSALESErrors映射-目标的SALES是源AMOUNT汇总…约束-ID不能为空必须唯一-SalesRepID必须存在在目标的salesrep表当中…过滤器-只对那些ORDERS标记为“closed”的记录处理…连接-只选择LINES表中ORDER_ID能和ORDERS表匹配的记录…描述规则33Target(Oracle)Source(Sybase)实现这个规则ORDERSLINESCORRECTIONSFileSALESErrors映射•SALES=SUM(LINES.AMOUNT)+CORRECTION.VALUE.…约束•IDisflaggednotnullinthemodel.•SALES_REP=ORDERS.SALES_REP_ID…过滤•ORDERS.STATUS=‘CLOSED’…连接-ORDERS.ORDER_ID=LINES.ORDER_ID…用SQL实现规则33Source(Sybase)整合过程整合过程Extract-Transform(check)-Load规则解释是整合过程的基础ORDERSLINESCORRECTIONSFileTarget(Oracle)SALESErrors33Target(Oracle)Source(Sybase)过程细节ORDERSLINESCORRECTIONSFileSALESErrors操作过程的详细顺序TEMP_SALES33TEMP_111Extract/Join/TransformTEMP_222Extract/TransformJoin/Transform44CheckConstraints/IsolateErrors55Transform&Integrate33Target(Oracle)Source(Sybase)私有引擎-特殊的语言过程实施方式#1ORDERSLINESCORRECTIONSFileSALESErrors使用专有引擎TEMP_1TEMP_2TEMP_SALES1122334455Extract/Join/TransformExtract/TransformJoin/TransformCheckConstraints/IsolateErrorsTransform&Integrate33DB2/UDBTarget(Oracle)Source(Sybase)StagingAreaThelanguageisSQL过程实施方式#2ORDERSLINESCORRECTIONSFileSALESErrors使用RDBMS数据库服务器:DB2/UDBTEMP_1TEMP_2TEMP_SALES1122334455Extract/Join/TransformExtract/TransformJoin/TransformCheckConstraints/IsolateErrorsTransform&Integrate33Target(Oracle)Source(Sybase)StagingAreaThelanguageisSQL过程实施方式#3ORDERSLINESCORRECTIONSFileSALESErrors实用目标数据库服务器TEMP_1TEMP_2TEMP_SALES1122334455Extract/Join/TransformJoin/TransformCheckConstraints/IsolateErrorsTransform&IntegrateExtract/Transform33从规则描述到过程StagingAreaTEMP_1TEMP_2TEMP_SALES1122334455Extract/Join/TransformExtract/TransformJoin/TransformTransform&Integrate•一旦规则描述被实现,我们如何产生转化过程?Mapping-SALES=SUM(LINES.AMOUNT)+CORRECTION.VALUE.-SALES_REP=ORDERS.SALES_REP_ID…Mapping-SALES=SUM(LINES.AMOUNT)+CORRECTION.VALUE.-SALES_REP=ORDERS.SALES_REP_ID…Filter-ORDERS.STATUS=‘CLOSED’…Filter-ORDERS.STATUS=‘CLOSED’…Constraints-IDisflaggednotnullinthemodel.-UniqueindexUK_IDisdeclaredontableSALES.…Constraints-IDisflaggednotnullinthemodel.-UniqueindexUK_IDisdeclaredontableSALES.…Join-ORDERS.ORDER_ID=LINES.ORDER_ID…Join-ORDERS.ORDER_ID=LINES.ORDER_ID…?33Target(Oracle)Source(Sybase)知识模块KM实现满足的操作StagingAreaORDERSLINESCORRECTIONSFileSALESErrorsTEMP_1TEMP_2TEMP_SALESLKMLKMLKMLKMIKMIKMCKMCKMIKMIKMExtract/Join/TransformExtract/TransformJoin/TransformCheckConstraints/IsolateErrorsTransform&Integrate33GeneratedCodeTruncateTableSCOTT.EMPInsertintoSCOTT.EMPSelectRound(Sum(Sa