ITPub博客

首页 > 大数据 > Hadoop > 实现实时数据仓库使用Oracle 10g

实现实时数据仓库使用Oracle 10g

Hadoop 作者:sherrylee0316 时间:2012-01-11 10:20:34 0 删除 编辑

 

马克Rittman

 

甲骨文公司最近的数据仓库产品公告,一个有趣的新方面一直强调实时,近实时,数据仓库。那么,什么是实时和近实时的数据仓库,所有关于,为什么您的业务用户可能开始要求它,你将如何使用Oracle数据库10gOracle Warehouse Builder中实现它们?

简介                              

传统上,大多数数据仓库的使用一个临时的方法来加载到数据仓库事实表和维度表。需要加载到仓库的数据,首先是从源表,文件和交易系统中提取,临时区域内,然后分批到接口表装入。

 

然后,在这些接口表中的数据转化,清洗,和检查错误,经常与临时临时表的方式来保存源数据的版本,因为它正在处理 。这种清洗和转换后的数据,然后加载到数据仓库的展示区,可以设置为金博尔风格的事实表和维度表的收集,或更经常的设置作为第三正常仓库表。

 

一旦这个加载已经发生,要么重新聚合和摘要或刷新,并在某些情况下,单独的OLAP数据库必须从数据仓库中的数据更新。

 

rittman5 - 1.JPG

加载数据仓库,通常简称为提取,转换和加载(ETL)过程,过程可以在任何地方从几个小时到几天才能完成,并可以要求许多千兆字节的存储分期举行的许多版本接口表。由于这个ETL的传统形式所采取的时间,通常,仓库和数据集市中的数据是至少有一个一天或两个日期进行的,事实上,通常是一个星期和它们的来源背后的一个月之间是系统。

 

这种“潜伏期”,随着形势的是已知的,但通常不被太多的问题,不考虑数据仓库业务,关键业务应用,而是更多地看作是一个小团体的方式过去头办公室分析师做趋势分析。

实时,近实时的,数据仓库

然而,非常普及和数据仓库的成功,导致在仓库中的数据被用来方式的变化。首先,组织已经注意到,他们的数据仓库提供了无与伦比的,其业务的完整视图,使他们首次汇集其所有客户的数据,其所有产品的详细信息和交易,以及所有的客户互动的集成视图,一个现成的和可以理解的的形式和多​​年记录

 

在此之上“的组织的完美记录,”它现在可以运行先进的分析,市场和客户的分割,数据挖掘,客户分析,以帮助该组织获得一个非常详细的了解,其市场和其客户。

 

因此是理想的,将在销售人员手中,店员把这个信息,呼叫中心的工作人员,和其他人直接处理与客户,使他们能够发现谁就有可能投奔到竞争对手的客户,知道什么时候可以为一个产品或服务获得更好的价格,或者至少要知道,一个客户多次经历的问题,他们呼吁今天。

rittman5 - 2.JPG

所有这些信息是在数据仓库中举行;问题是,不像的这种趋势分析,客户面临的工作,你需要获得最新的客户和交易数据,和数据,充其量也就是一天或,在最坏的情况下,一个月或过时不符合要求。

 

数据仓库专业人士历史上抵制使用他们的数据仓库内的业务系统。这种阻力是部分从哲学的角度看,在这其系统的主要设计为脱机的趋势分析和OLAP分析,而且,因为直到最近,这是不实际的“零延迟”数据仓库的过程 - 提取数据太多对源系统而言,你需要经过清理和转换数据需要多个临时表的各个步骤的影响,并花了几个小时的运行。然而,仓库中的数据(值),并采取组织内更广泛的受众,已经导致了产品开发的甲骨文和其他厂商进行实时数据仓库现在可能提高知名度。

支持在Oracle RDBMS

在实时的数据仓库,仓库包含完全的最新数据,并提供源数据源系统同步。在近实时数据仓库,源数据生成和数据仓库之间有一个延迟最小。因此,如果你想实现实时或近实时更新数据仓库,你需要做三件事:

1.                                                                             减少或消除,走出新的和更改过的数据源系统的时间。

2.                                                                             消除或减少尽可能多尽可能所需的时间,清理,转换和加载数据。

3.                                                                             减少尽可能多地需要更新您的集合体时间。

 

9i的版本,并继续与最新的10g版本,甲骨文公司已经逐渐引入到数据库,以支持实时功能,和近实时数据仓库。这些功能包括:

§                                                                                 变更数据捕获

§                                                                                 外部表,表函数,流水线和MERGE命令,并

§                                                                                 快速刷新物化视图

变更数据捕获

OracleOracle 9i之前的版本,使整个改变的数据源到数据仓库系统(而不是在所有的源数据加载,做一个完整的刷新),你通常会寻找在您的源数据或源列文件显示创建和修改的数据行的日期。你的过程,然后将负载中只有那些行的数据是新的或修改自您上次负载日期。

 

Oracle 9i开始,但是,聪明的办法做到这一点是使用“变更数据捕获。”这种机制,使新的或更改数据库中的记录通过数据仓库的自动饲料。Oracle 9i的变更数据捕获在幕后工作,通过将源表上的触发器(即在Oracle数据库上)。这些触发美联储改变插入,删除或更新到更改表,然后可以使用仓库的更新源。

 

事实上,Oracle 9i的变更数据捕获是有限的,部分是因为它是一个新的功能,但主要是因为它的侵袭:DBA的人不愿意让OTLP应用触发器怕影响应用程序性能 。为了解决这个问题,甲骨文10克包括了变更数据捕获的新形式,由甲骨文称为“异步”(而不是“同步”),因为它使用的重做日志,连同流特性,检测和运输以异步方式的数据 。

 

甲骨文10克变更数据捕获使用Oracle RDBMS的先进的队列功能,通过邮件发送的数据。从理论上讲,这并没有在源系统上的影响,但缺点是,它需要源和目标数据库是甲骨文10克 。

 

Oracle 9i的变更数据捕获,挑选通过触发器最多改变的数据,被认为是“实时”的数据采集与很少或根本没有从源系统中的数据时产生的时间延迟,当它出现在变更表。异步变更数据捕获,因为它使用消息和先进的队列,数据生成和出现在变更集之间的内在的小延迟。因此,应考虑近实时数据采集。不管是否实现同步或异步变更数据捕获,它是基于对出版者/订阅模型,发布者(无论是对表,或一个过程挖掘重做日志,触发器)捕获变更数据,以及一个或多个用户阅读全部或部分从变更集的变化数据。

 

如果你感兴趣,例如变更数据捕获使用阅读一个良好的开端是桑杰米什拉的Oracle杂志的文章,“ 捕获变化,“看起来在Oracle 9i中的变更数据捕获。你可以也读赫尔曼巴尔的甲骨文白皮书,导通时间数据与Oracle10 -在您的企业的速度信息,“和迈克施密茨的,“经验与实时数据使用Oracle数据库10g仓储“打开世界介绍 。

 

在外部表,表函数,流水线,并合并命令

大多数DBA负责Oracle数据仓库将熟悉外部表,表的功能,和MERGE命令,Oracle 9i中引入支持ETL过程的三个新特点。

 

外部表功能允许你嵌入到一个表DDL脚本的SQL * Loader控制文件,文件就可以利用并行性,能够加入,并可以作为一个新的MERGE命令的输入,让您插入和更新到另一个表中的数据在单个原子DML语句。除了方便,不必单独运行SQL * Loader的过程,避免外部表需要暂存区域内的数据加载到接口表,因为外部表的接口表。

 

表函数是到PL / SQLJava程序例程用于清洗和转换数据,并转化为PL / SQL函数的方式非常有用。这些功能可以再取标量数据作为输入的数据或表,处理数据,并返回作为输出数据表 。可以使表的功能,特别有趣的是,输入表可以在外部表或更改表,让我们抵达实时数据应用转换。

 

此外,它是可能的“管道”这些表函数;流水线使得甲骨文开始从函数返回行处理之前已完成。流水线表函数,你可以串在一起,其中一些,并要求他们“通关”下一道工序的行尽快转化一批行,而不是每个分期的过程开始前等待,直到前一个已完成其处理。

 

一旦我们的源数据清洗和转换,它通常会被用来更新我们的维度和事实表。在过去,我们已经完成了通过使用INSERTUPDATE语句的组合 。随着Oracle 9i中,我们现在已经有了MERGE命令,而这一步。更重要的是,我们可以换到这一个MERGE命令整个改造过程中,引用外部表和合并数据源的一个命令的表函数。

 

rittman5 - 3.JPG

 

外部表,表的功能,并合并命令的详情,看看我的文章,“精简随着流水线表函数的Oracle 9i中的 ETL“或伯特Scalzo的书,数据仓库和明星架构的Oracle DBA指南,其中有在使用这三个新功能的一些很好的例子 。

 

这三个Oracle 9i的特点,给我们一个显著减少所花费的时间载入我们的数据仓库的方式,并有机会接收到我们的源文件中提取或更改的数据,并加载数据仓库的事实和维度之间的延迟,以减少表。

快速刷新物化视图

Oracle 9iOracle 10g中,支持实时和恰当的时间数据仓库的一个特点是快速刷新物化视图功能。在过去,数据库管理员创建独立的汇总表中常用的汇总数据,加快最终用户查询的响应时间。当新的数据加载到仓库,这些汇总表已被删除并重新创建,因此用户没有对他们的访问,而重建发生。

 

Oracle 9i中引入的物化视图,DBA可以创建快照表的基础上对仓库的详细信息表中的SQL查询,具有内在机制的基础数据发生了变化时刷新快照。当这些物化视图满足一些条件,你可以更新的快照,而不是完全重建的增量更改的数据。这极大地减少了刷新你的摘要所需的时间,使他们可为您的最终用户,远远早。

 

结合所有这些新的数据库的ETL功能,现在有可能以减少甚至消除源所需的时间,改造,并加载数据。但是,这是怎么所有同步和协调,并清洗和改造的需要,如果我们的是更复杂的呢?输入Oracle Warehouse Builder中的下一版本,代号为“巴黎”,其目的是从地上爬起来,以支持实时数据仓库。

 

Oracle Warehouse Builder10gR2中,代号为“巴黎”

Oracle Warehouse BuilderOracleETL工具,登上我最近的题为的文章。,  一个甲骨文仓库生成器10 简介克。“以前和当前版本的Oracle Warehouse Builder中被工具构建数据仓库批量加载过程的,完整的项目管理生命周期,并传播数据和元数据其他Oracle商业智能产品。然而,个别的Oracle Warehouse Builder中的工作是在批处理模式下运行,Oracle Warehouse Builder信息缺乏,特别是在比较高端的ETL工具,如Informatica PowerCenter,转换和加载数据的能力,因为它是产生 (即不在一个批处理中,但作为一个新的和更新的数据流 )。这是一个实时数据仓库的基本前提 。

 

这个问题正在解决,10为版本即将发布的Oracle Warehouse Builder克第2版或它的开发代号,巴黎。以前版本的Oracle Warehouse Builder中提供了访问外部表,表的功能,以及合并与Oracle 9i中引入的命令 。巴黎Oracle Warehouse Builder中,首次提供一个图形化前端变更数据捕获,同步和异步,并带有独特的Oracle Warehouse Builder中建立实时数据转换的附加 ​​功能

巴黎Oracle Warehouse Builder中使用熟悉的映射方法来转换数据,让您以图形源数据映射到目标表,事实,或尺寸,并采用任何个别的列和表转换,清洗和处理源数据。所有Oracle Warehouse Builder的映射一样,他们完全被存储在仓库Builder设计库的元数据记录,让充满变化的影响,在整个项目生命周期管理。

 

为了实现这些实时的数据仓库功能,Oracle Warehouse Builder中使用Oracle 9i10g特性,如异步变更数据捕获和近实时数据集成时需要的数据流。DBA可以使用这些功能,和巴黎Oracle Warehouse Builder中的新能力部署映射,以便它可以“听”,包含更改的数据信息,设立“推”,信息为主导的数据处理,数据处理到达时,直接送入数据仓库。然后,因为Warehouse Builder的映射部署PL / SQL代码,可以作为Web服务公开和PL / SQL,它可能发布Oracle Warehouse Builder中的映射,使他们能够为任何应用程序进行通信的数据源称为通过HTTP

 

使用Warehouse Builder巴黎的另一种方式映射是在实时的情况下,使用“虚拟目标。”通过使用映射,而不是加载一个表,但公布的数据到一个API(这可以是一个表函数,例如)然后发布它作为一个Web服务,您可以使用先进的数据清洗在任何应用程序的能力,无论是在实时数据清洗,或在一个实时的数据仓库场景,。

 

rittman5 - 4.JPG

最后,如​​前所述,当前版本的Oracle Warehouse Builder中已经支持表函数用于转换数据的使用;然而,这是一个不完整的实施。表函数只能用作输入到另一个表或改造,但本身不能作为输入的数据表;这个删除的能力作为外部表的表功能合并语句结合一部分使用。然而,在巴黎发行完成后执行表函数,现在被允许作为函数的输入的数据与标量的值或表,提供能力设计映射提取,转换和加载数据的执行时间,而不需要中间staging表。

 

 

结论

在过去,不是真正的要求,使数据仓库“实时”,甚至“近实时。”数据仓库的用户,主要是进行趋势分析和ad - hoc分析,并没有真正的需要到分钟的数据。然而,数据仓库的用户群,扩大内包含最新信息的商业情报机构的要求,已导致数据库供应商建立自己的数据库的真实,正确的时间数据仓库的功能和开发工具产品。甲骨文一直在逐步增加此类功能的Oracle数据库和Oracle Warehouse Builder中,这些新功能,它有可能减少,并在某些情况下甚至消除,时间要求源,转换和数据加载到数据仓库,并实现实时的数据仓库。

-

马克Rittman是一个认证的Oracle专业DBA,并在咨询 SolStonePlus,专门在发展中国家使用Oracle数据库,应用服务器,发现者,Warehouse Builder中,和Oracle OLAPBIDW应用。加顾问外,马克UKOUG BI和报表工具SIG主席,并专门到Oracle BI和数据仓库技术,运行 Weblog 。马克最近被评为Oracle开发人员社区的贡献OTN社区奖,并在Oracle用户的事件在英国和欧洲的定期演讲。

 

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24086378/viewspace-1120572/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-01-20