`

ETL -- ORACLE -- CDC技术

阅读更多

ETL: 

Extract(抽取)-Transform(清洗转换)-Load(加载,常用于数据仓库,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。

ETL增量抽取: 要实现增量抽取,关键是如何准确快速的捕获变化的数据。优秀的增量抽取机制要求ETL能够将业务系统中的变化数据按一定的频率准确地捕获到,同时不能对业务系统造成 太大的压力,影响现有业务。相对全量抽取而言,增量抽取的设计更复杂.

 

CDC

Change Data Capture(改变数据捕获)是oracle在数据库级别实现的增量抽取解决方案之一。

CDC能够帮助你识别从上次提取之后发生变化的数据。

利用CDC,在对源表进行INSERT、UPDATE或 DELETE等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。

 

目前ETL增量数据处理方式有:

1.触发器方式

是普遍采取的一种增量抽取机制。该方式是根据抽取要求,在要被抽取的源表上建立插入、修改、删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将

变化的数据写入一个增量日志表,ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据,同时增量日志表中抽取过的数据要及时被标记或删除。为了简单起见,增量日志表一般不存储增量数据的所有字段信息,而只是存储源表名称、更新的关键字值和更新操作

类型(knsenupdatedelete)ETL增量抽取进程首先根据源表名称和更新的关键字值,从源表中提取对应的完整记录,再根据更新操作类型,对目标表进行相应的处理。

 

2.时间戳方式

时间戳方式是指增量抽取时,抽取进程通过比较系统时间与抽取源表的时间戳字段的值来决定抽取哪些数据。这种方式需要在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。有的数据库(例如Sql Server)的时间戳支持自动更新,即表的其它字段的数据发生改变时,时间戳字段的值会被自动更新为记录改变的时刻。在这种情下,进行ETL实施时就只需要在源表加上时间戳字段就可以了。对于不支持时间戳自动更新的数据库,这就要求业务系统在更新业务数据时,通过编程的方式手工更新时间戳字段。使用时间戳方式可以正常捕获源表的插入和更新操作,但对于删除操作则无能为力,需要结合其它机制才能完成。

更新时间戳。

 

3.全表删除插入方式

全表删除插入方式是指每次抽取前先删除目标表数据,抽取时全新加载数据。该方式实际上将增量抽取等同于全量抽取。对于数据量不大,全量抽取的时间代价小于执行增量抽取的算法和条件代价时,可以采用该方式。

 

4.全表比对方式                                                                

全表比对即在增量抽取时,ETL进程逐条比较源表和目标表的记录,将新增和修改的记录读取出来。优化之后的全部比对方式是采用MD5校验码,需要事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表的主键值以及根据源表所有字段的数据计算出来的。

MD5校验码,每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,如有不同,进行update操作:如目标表没有存在该主键值,表示该记录还没有,则进行insert操作。

然后,还需要对在源表中已不存在而目标表仍保留的主键值,执行delete操作。

 

5.日志表方式

对于建立了业务系统的生产数据库,可以在数据库中创建业务日志表,当特定需要监控的业务数据发生变化时,由相应的业务系统程序模块来更新维护日志表内容。增量抽取时,

通过读日志表数据决定加载哪些数据及如何加载。日志表的维护需要由业务系统程序用代码来完成。

 

6.系统日志分析方式

该方式通过分析数据库自身的日志来判断变化的数据。关系犁数据库系统都会将所有的DML操作存储在日志文件中,以实现数据库的备份和还原功能。ETL增晕抽取进程通过对数据库的日志进行分析,提取对相关源表在特定时间后发生的DML操作信息,就可以得知自上次抽取时刻以来该表的数据变化情况,从而指导增量抽取动作。有些数据库系统提供了访问日志的专用的程序包(例如OracleLogMinder),使数据库日志的分析工作得到大大简化。

 

7.特定数据库方式(Oracle
以下介绍常见的针对特有数据库系统的增景抽取方式。
7.1 Oracle
改变数据捕获(changeddatacaptureCDC)方式:OracleCDC特性是在Oraele9i数据库中引入的。CDC能够帮助识别从上次抽取之后发生变化的数据。
利用CDC,在对源表进行insertupclatedelete等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给ETL抽取进程,作为增量抽取的依据。CDC方式对源表数据变化情况的捕获有两种方式:同步CDC和异步CDC。同步CDC使用源数据库触发器来捕获变更的数据。这种方式是实时的,没有任何延迟。当DML操作提交后,变更表中就产生了变更数据。异步CDC使用数据库重做日志(redolog)文件,在源数据库发生变更以后,才进行数据捕获。
7.2 Oracle
闪回查询方式:Oracle9i以上版本的数据库系统提供了闪回查询机制,允许用户查询过去某个时刻的数据库状态。这样,抽取进程可以将源数据库的(BI)
当前状态和上次抽取时刻的状态进行对比,快速得出源表数据记录的变化情况。

 

8.比较和分析

可见,ETL在进行增量抽取操作时,有以上各种机制可以选择。现从兼容性、完备性、性能和侵入性3个方面对这些机制的优劣进行比较分析。数据抽取需要面对的源系统,并不一定都是关系型数据库系统。某个ETL过程需要从若干年前的遗留系统中抽取Excel或者CSV文本数据的情形是经常发牛的。这时,所有基于关系型数据库产品的增量机制都无法工作,时间戳方式和全表比对方式可能有一定的利用价值,在最坏的情况下,只有放弃增量抽取的思路,转而采用全表删除插入方式。完备性方面,时间戳方式不能捕获delete操作,需要结合其它方式一起使用。增量抽取的性能因素表现在两个方面,一是抽取进程本身的性能,二是对源系统性能的负面影响。触发器方式、日志表方式以及系统日志分析方式由于不需要在抽取过程中执行比对步骤,所以增量抽取的性能较佳。全表比对方式需要经过复杂的比对过程才能识别出更改的记录,抽取性能最差。在对源系统的性能影响方面,触发器方式由于是直接在源系统业务表上建立触发器,同时写临时表,对于频繁操作的业务系统可能会有一定的性能损失,尤其是当业务表上执行批量操作时,行级触发器将会对性能产生严重的影响;同步CDC方式内部采用触发器的方式实现,也同样存在性能影响的问题;全表比对方式和日志表方式对数据源系统数据库的性能没有任何影响,只是它们需要业务系统进行额外的运算和数据库操作,会有少许的时间损耗;时间戳方式、系统日志分析方式以及基于系统日志分析的方式(异步CDC和闪回查询)对数据库性能的影响也是非常小的。对数据源系统的侵入性是指业务系统是否要为实现增抽取机制做功能修改和额外操作,在这一点上,时间戳方式值得特别关注该方式除了要修改数据源系统表结构外,对于不支持时间戳字段自动更新的关系型数据库产品,还必须要修改业务系统的功能,让它在源表t执行每次操作时都要显式的更新表的时间戳字段,这在ETL实施过程中必须得到数据源系统高度的配合才能达到,并且在多数情况下这种要求在数据源系统看来是比较过分的,这也是时间戳方式无法得到广泛运用的主要原因。另外,触发器方式需要在源表上建立触发器,这种在某些场合中也遭到拒绝。还有一些需要建立临时表的方式,例如全表比对和日志表方式。可能因为开放给ETL进程的数据库权限的限制而无法实施。同样的情况也可能发生在基于系统日志分析的方式上,因为大多数的数据库产品只允许特定组的用户甚至只有DBA才能执行日志分析。闪回杏询在侵入性方面的影响是最小的。

 

最为常用的ETL增量数据处理方式有四种:

1.时间戳(弱点:要求业务系统的表必须一个可以标识新旧数据的字段)

2.日志对比

3.全面数据对比(弱点:高网络负载、性能代价高、无法反映数据的历史状态

4.触发器(优点:抽取性能高。缺点:需要业务表建立触发器,对业务系统有一定的影响。)

 

CDC的两个模式:

同步:同步CDC主要是采用触发器记录新增数据,基本能够做到实时增量抽取。

异步:异步CDC通过分析已经commit的日志记录来得到增量数据信息,有一定的时间延迟,并且提供了到Oracle Streams的接口。

同步CDC在企业版或者标准版中都可以使用,异步CDC则只包含在企业版中。

 

CDC的发布订立模型:

CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。

 

CDC几个概念:

源表(Source Table),业务数据库的需要捕获数据的源表

变化表(Change Table)  ,保存从源表捕获的变化数据(包括各种DML产生的数据)

变化集(Change Set),是保证事务一致性的数据集合。一个变化集对应多个变化表

订阅视图(Subscription View),提供给读取变化表数据的视图

订阅窗口(Subscription Window) ,定义了查看变化数据的时间范围.就象一个观察变化数据的滑动窗口。变化数据处理完成后,可以对清除订阅窗口。

 

 各种数据增量抽取机制的优劣性综合分析如表所示:                                                               

增量机制

兼容性

完备性

抽取性能

对源系统性能影响

对源系统倾入性

实现难度

触发器方式

关系型数据库

一般

较容易

时间戳方式

关系型数据库,具有字段结构的其它数据格式

较优

很小

较容易

全表删除插入方式

任何数据格式

极差

容易

全表比对方式

关系型数据库、文本格式

一般

一般

日志表方式

关系型数据库

较大

较容易

系统日志分析方式

关系型数据库

很小

较大

同步CDC方式

Oracle数据库9i以上

一般

较难

异步CDC方式

Oracle数据库9i以上

很小

一般

较难

闪回查询方式

Oracle数据库9i以上

较优

很小

较容易

 

转载:http://m.blog.csdn.net/blog/peterwc/40957159

分享到:
评论

相关推荐

    Oracle-CDC for SSIS

    《Oracle-CDC for SSIS用户指南》是一份详尽的技术文档,主要介绍了如何使用Attunity Oracle-CDC插件来实现对Oracle数据库的数据捕获与同步。该文档版本为2.0,发布于2009年1月,由David Goldman担任主要作者,Gadi ...

    使用 PDI 和 Oracle CDC 来实现Oracle 数据库向其他数据库的数据同步

    Oracle CDC(Change Data Capture)是一种数据捕获技术,用于实时捕获和发布数据库中的变更数据。 使用 PDI 和 Oracle CDC 可以实现 Oracle 数据库向其他数据库的数据同步。下面是相关知识点: 1. Oracle CDC 介绍...

    基于flink-cdc实现监控数据源的实时变更数据捕获

    随着实时性需求的增长,基于日志的CDC技术如Flink-CDC可以实现实时消费数据库日志,保证数据一致性,适用于需要实时数据的业务。而基于查询的工具如Kettle、DataX更适合数据抽取、转换和历史数据同步。 **三、为何...

    oracle cdc教程

    ### Oracle CDC 教程 ...通过以上介绍可以看出,Oracle 的 CDC 技术为数据仓库系统提供了一种高效、准确的增量数据处理方式,尤其是在处理大量数据时能够显著降低系统的资源消耗,提高数据处理的效率和质量。

    oracle_cdc

    ### Oracle CDC 技术详解:实现数据库级别的增量数据同步 #### 概述 Oracle CDC(Change Data Capture)技术,作为Oracle数据库的一项核心功能,旨在提供一种高效的数据同步方案,尤其适用于处理增量数据的抽取与...

    oracle cdc操作手册

    Oracle CDC(Change Data Capture)是一种高效的数据增量处理技术,尤其适用于构建数据仓库系统的ETL(提取、转换、加载)过程。在数据仓库中,确保数据的准确性和性能至关重要。CDC能够在不影响业务系统运行的情况...

    ORACLE CDC.pdf

    Oracle CDC(Change Data Capture)是Oracle数据库提供的一种增量数据处理技术,主要应用于构建数据仓库系统的ETL(提取、转换、加载)过程中。在ETL流程中,准确且高效地抽取业务系统中的增量数据至关重要,以免对...

    ORACLE CDC.docx

    【Oracle CDC】是一种在Oracle数据库中实现增量数据处理的技术,主要应用于数据仓库系统的ETL(抽取、转换、加载)过程。在构建数据仓库时,确保数据的准确性与处理性能至关重要。Oracle提供了多种方法来处理增量...

    CDC(Change Data Capture)增量抽取

    这种技术广泛应用于ETL(Extract, Transform, Load,提取、转换、加载)过程、数据仓库更新以及实时数据分析等多个场景。 在Oracle数据库中,CDC是一种重要的增量数据捕获机制。通过Oracle提供的CDC功能,可以在...

    ODI-CDC实现接口实时同步数据

    本篇文章将详细介绍如何利用Oracle Data Integrator (ODI) 实现Change Data Capture (CDC) 功能,来实现实时的数据同步。该场景下,源表为`table_01`,目标表为`table_02`,目标是在`table_01`发生任何增删改操作时...

    flink1.14.3 cdc jar包

    - **Oracle**:Oracle CDC 允许用户跟踪并捕获 Oracle 数据库中的更改事件,这对于构建实时 ETL(提取、转换、加载)流程至关重要。 - **MySQL**:Flink 提供了 MySQL CDC 支持,可以无缝地从 MySQL 数据库获取...

    Oracle Data Integrator CDC的使用

    Oracle Data Integrator (ODI) 是Oracle公司提供的一款强大的数据集成工具,它支持多种数据集成技术,其中包括Change Data Capture(CDC)。CDC是一种高效的数据迁移策略,用于捕获和传输数据库中的变化数据,而不是...

    ODI工具CDC增量数据抽取

    - **ODI (Oracle Data Integrator)**:是一种企业级的数据集成工具,由Oracle公司提供,主要用于ETL(Extract, Transform, Load)操作,即数据的提取、转换与加载。ODI支持多种异构数据源之间的数据迁移及处理任务。 -...

    ETL中E-L-T架构特点、局限与缺陷.pdf

    ETL(Extract-Transform-Load)技术是数据仓库领域的重要组成部分,其核心作用是将分散、零乱、标准不统一的业务数据抽取出来,经过清洗和转换后,加载到数据仓库中,为企业的决策分析提供统一的数据基础。ETL过程...

    Oracle ODI 11G安装与技术文档

    ### Oracle ODI 11G 安装与关键技术解析 #### 一、Oracle ODI 11G 简介及环境配置 Oracle Data Integrator (ODI) 是一款强大的企业级数据集成工具,用于实现数据抽取、转换、加载(ETL)等功能。Oracle ODI 11G 相比...

    Oracle的增量数据处理方案

    Oracle CDC(Change Data Capture)是一种数据增量处理技术,在构建数据仓库系统的 ETL 过程中,增量数据的抽取是一个非常关键的环节。CDC 能够帮助识别从上次提取之后发生变化的数据,并将变化的数据保存在数据库的...

    ETL详解.docx

    市面上有许多成熟的 ETL 工具,如 Informatica PowerCenter、IBM DataStage、Microsoft SQL Server Integration Services (SSIS)、Talend、Oracle Data Integrator (ODI) 等。这些工具提供了图形化的工作流设计、...

Global site tag (gtag.js) - Google Analytics