




















在构建数据仓库的ETL过程中,增量数据抽取是一个比较关键的环节。一般情况下需要满足以下两点:
目前,实现增量数据抽取最常用的方式有三种:
上述三种方式各有优劣,用的比较多的可能是几种方式混合使用。
时间戳使用业务表中某一字段做为判断新旧数据的依据,该字段可以是时间类型,也可以是int型。使用该种方式存在以下问题:
2. 全表扫描
全表扫描是使用数据仓库中的当前表与业务系统表进行对比,取得变化了的数据,典型的是使用minus语句:
SELECT * FROM new_version MINUS SELECT * FROM old_version;
使用全表扫描存在以下问题:
3. Change Data Capture(CDC)
Oracle的CDC是在Oracle9i新特性中引入的,使用内部触发器或对日志文件的分析发现变化了的数据,并通过订阅/分发的形式(类似于SQL SERVER的分发/订阅)提供给使用者。这些变化了的数据包括insert、delete和update的数据。
CDC分同步和异步两种模式,同步是使用数据库内部的触发器捕捉变化数据,基本做到实时数据;异步是通过分析日志记录得到增量数据信息,有一定延迟,同时提供Stream技术。同步在企业版和标准版中都可以使用,而异步只能在企业版中使用。
CDC异步模式,根据实现机制的不同又可以分为Autolog和Hotlog模式,Autolog通过database's redo transport services传输日志redo log信息,然后在一个独立于source database的staging database内进行日志分析;而Hotlog是在source database进行日志分析的。看得出两者对source database所产生的压力差别。
异步Hotlog模式又可分为异步Hotlog CDC模式和异步分布式Hotlog CDC模式,二者的区别在于异步Hotlog CDC模式在source database建立change set、change tables和执行订阅;而异步分布式Hotlog CDC通过stream技术分发,在staging database建立change set、change tables和执行订阅。
下面列出上面讲到的几种CDC模式:
Synchronous CDC(同步CDC)
Asynchronous Autolog CDC(异步Autolog CDC)


Asynchronous Hotlog CDC(异步Hotlog CDC)

Asynchronous Distributed Hotlog CDC(异步分布式Hotlog CDC)

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。