使用变化数据捕捉特性可以简化数据仓库应用中的ETL过程。
数据提取是所有数据仓储的一个完整组成部分。数据通常是在晚上从事务处理系统中被提取出来并被传输到数据仓库。一般情况下,数据仓库中的所有数据都是由从源系统中提取出的数据来更新。但是在提取和传输海量数据时,资源和时间的消耗都是巨大的。
由于数据提取每日都在进行,因此如果只是提取和加载自上次提取之后发生变化的数据,那么效率就会大大提高。但是,在大多数源系统中,识别并提取最新变化的数据即使是可能的,也非常困难。
除了识别最新变化数据的挑战之外,许多提取、转换和加载(ETL)环境都包含一个源系统,为多个目标系统提供数据。另外,从一个源系统到多个目标系统同步改变数据也是一个挑战。
Oracle变化数据捕捉(Change Data Capture,CDC)特性简化了识别自上次提取后发生变化的数据的过程。CDC提供了易于使用的API来设置CDC环境。 如果你是参与数据集成项目的DBA或开发人员,需要定期从一个系统提取大量数据并将其传输到另一个系统或多个系统,那就赶快考虑使用CDC来缩短ETL的时间吧。
本文将为你提供一种设置CDC环境的循序渐进的方法,概述设置CDC环境的先决条件,并讨论为你的应用程序设置CDC时需要掌握的API。
概述
CDC特性是在Oracle9i数据库中引入的。CDC能够帮助你识别从上次提取之后发生变化的数据。利用CDC,在对源表进行INSERT、UPDATE或DELETE等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。
图 1 给出了CDC环境的基本体系结构。
CDC建立订阅者视图来控制目标系统对变化数据的获取。目标系统是任何需要使用从源系统中捕获的数据的应用程序。
发布者和订阅者
CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常,CDC系统拥有一个发布者和多个订阅者。
发布者首先需要识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其保存在特别创建的变化表中。它还使订阅者能够控制对变化数据的访问。
订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。 订阅者需要创建一个订阅者视图来访问经发布者授权可以访问的变化数据。