惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
T
Threatpost
T
Tor Project blog
S
Schneier on Security
Project Zero
Project Zero
Know Your Adversary
Know Your Adversary
P
Proofpoint News Feed
K
Kaspersky official blog
P
Privacy International News Feed
Latest news
Latest news
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
The Hacker News
The Hacker News
D
Docker
aimingoo的专栏
aimingoo的专栏
S
Securelist
C
Cyber Attacks, Cyber Crime and Cyber Security
Spread Privacy
Spread Privacy
TaoSecurity Blog
TaoSecurity Blog
T
The Blog of Author Tim Ferriss
T
Threat Research - Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
Security Latest
Security Latest
V
Visual Studio Blog
WordPress大学
WordPress大学
J
Java Code Geeks
O
OpenAI News
T
Tailwind CSS Blog
S
Secure Thoughts
G
Google Developers Blog
博客园_首页
The Cloudflare Blog
The Register - Security
The Register - Security
A
Arctic Wolf
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
B
Blog RSS Feed
IT之家
IT之家
美团技术团队
D
Darknet – Hacking Tools, Hacker News & Cyber Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
G
GRAHAM CLULEY
S
Security Affairs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Palo Alto Networks Blog
C
CERT Recently Published Vulnerability Notes
W
WeLiveSecurity

博客园 - 森林坛子

2010新会计准则 打发时光的102个网站 适合女生玩的29个有意思的网站 某强人手机里保存的五十条牛B短信 2008年10大牛语 新巴塞尔资本协议(中英文) 26个英文字母中蕴涵的管理学 买土豆的故事(转中外管理) Assessing Your Project's ROI Potential Maximizing Your BI Return-On-Investment 软件开发项目过程中的风险管理研究 Ad Hoc: The Way We Live. The Way We Work? Testing for DW/BI - Current State and a Peep into the Future 漫谈售前必须具备的能力和素质(转) 爆笑,美貌女大学生们的文雅性暗示! 一段好玩的JavaScript代码 Master Data Management: Creating a Single View of the Business 07年1季度 Gartner商业智能平台魔法四分区 请个CIO 踏平商业智能坎坷路
Oracle Change Data Capture 变化数据捕捉
森林坛子 · 2007-08-28 · via 博客园 - 森林坛子

 在构建数据仓库的ETL过程中,增量数据抽取是一个比较关键的环节。一般情况下需要满足以下两点:

  • 数据的准确性,能够将业务系统中的数据按一定的频率准确的抽取到数据仓库中;
  • 性能要求,不能对业务系统造成太大的压力,影响现有业务。

  目前,实现增量数据抽取最常用的方式有三种:

  • 时间戳;
  • 变化数据捕捉,Change Data Capture(CDC);
  • 全表扫描

  上述三种方式各有优劣,用的比较多的可能是几种方式混合使用。

  1. 时间戳

  时间戳使用业务表中某一字段做为判断新旧数据的依据,该字段可以是时间类型,也可以是int型。使用该种方式存在以下问题:

  • 无法捕获对时间戳以前数据的deleteupdate操作,在数据准确性上受到了一定的限制,而实际业务中delete和update的操作还比较普遍;
  • 要求业务系统的表必须有一个可以标识新旧数据的列,而某些表没有设置这种列。

  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)

  Synchronous CDC(同步CDC)

同步CDC

  Asynchronous Autolog CDC(异步Autolog CDC)

异步Autolog

异步Autolog

  Asynchronous Hotlog CDC(异步Hotlog CDC)

异步Hotlog

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

异步分布式Hotlog