oracle 增量_【干货分享】DMETL中的增量抽取初识

683be9c04618ec85ead4f204fe77a6c4.gif

DMETL实现了增量数据的同步。在源表上进行的增删改操作,可以通过增量数据抽取,同步到目的表中。在第一次将源表数据全量抽取到目的表中后,可以通过重复地执行增量数据抽取,将源表上的增删改操作产生的变化数据,无遗漏地同步到目的表中,从而实现源表和目的表的长期同步。由于不需要每次都同步全量数据,当全量数据巨大,而每次变化数据较少时,可以大幅提升数据同步的效率。

DMETL中“增量表读取“提供对已建立好的数据库数据源中增量表的数据读取功能,并且可以对数据读取列、数据行、缓存以及并发等选项的设置。

DMETL支持的增量有:

  • 触发器增量:是通过在基表上建立触发器,捕捉基表上发生的增删改操作,从而产生增量数据。触发器方式可以捕捉到插入和修改的大对象数据。

  • 影子表增量:是在数据源中,建立一张和基表结构相同的影子表。当基表上发生了增删改操作后,在增量数据集进行刷新操作时,通过比较基表和影子表的数据,从而获得增量数据。

  • MD5增量:通过将变化前后的数据进行MD5 散列处理,然后比对MD5 的散列值是否相同来实现。

  • 时间戳增量:通过一条记录修改的时间戳值或生成的时时间戳值来决定是否迁移。

  • Oracle CDC 增量方式:是“Oracle变化数据捕捉”(Changed Data Capture)的简称,利用了Oracle内建的存储函数和过程捕捉和发布变化数据,本质是分析日志的方式,获得Oracle 数据库中某张表上的数据变化,从而实现增量数据的抽取。

  • DMHS 增量:DMHS是“DM异构同步”的简称。DMHS工具通过解析数据库日志,在不同的数据库之间实现数据同步。

各种增量方式的比较和使用建议

增量方式

效率

通用性

使用建议

触发器

在表上进行增量抽取

一般情况下建议使用

影子表

较高

在表或视图上进行增量抽取

一般情况下建议使用,但比较列包含大对象类型时,效率较低

MD5

在表或视图上进行增量抽取

需要在大对象类型列上进行比较时可使用

时间戳

较高

在表或视图上进行增量抽取

需要修改时间戳列,因此需要数据库支持时间戳自动更新,或手工更新时间戳列

DMHS

DM数据库中,在表上进行增量抽取

需要安装DMHS工具。当对性能要求较高时建议使用

Oracle   CDC

Oracle数据库中,在表上进行增量抽取

sync方式不支持大对象类型列的比较。当对实时性要求较高时建议使用sync方式 ,hotlog方式可能有延时,但是对数据源的影响较小

表格 1

使用建议:

源库权限

是否要同步update和delete操作

数据量

建议(按优先级排列)

只读

1.   如果目的表上有主键或者唯一索引,可以使用全量抽取,然后在表目的上使用插入更新选项。

2.  每次同步前先删除目的表的数据,然后在进行全量同步。

1.  如果源表上有序列或者自增列可以使用带参数的sql查询进行同步,参见典型示例《基于变量实现断点续传和增量抽取》

2. 如果源是dmhs支持的数据库,则可以通过dmhs进行

1.  每次同步前先删除目的表的数据,然后在进行全量同步。

1. 如果源是dmhs支持的数据库,则可以通过dmhs进行

2. Oracle CDC (需要在源库上有oracle cdc的相关权限)

读写

不限

1. Oracle CDC

2.  触发器增量

3.  DMHS

1. 影子表增量

2. MD5增量

表格 2

注:数据量在100w以内的都可以认为是小表,超过100w的为大表。

添加增量表方式

通过工具栏的“数据读取“中的“增量表”选择的数据集,就可以在普通表上添加增量表。比如下图,是在普通表DEPARTMENT_T1上添加的MD5_CDC表。

8e2dc24415d7a973152b3deb0706f1eb.png

图1

表/视图选择的数据集是普通表,增量表比普通表多两列CDC_ID和CDC_OPT(图4),用来记录对源表的操作。当对源表进行插入、更新、删除时,目的表中记录会相应地更改。

本文以增加MD5增量表为例,进行增量演示(该示例可在DMETL示例库中找到,或按如下步骤创建):

1.    创建数据源及目的表

在数据集DMETL_SAMPLE 库下添加表DEPARTMENT_T1、DEPARTMENT_T2(图2),在表DEPARTMENT_T1 处添加MD5 增量表(图3~5):

e5b436706ba77cd37eab5d44f672a018.png

图 2 DEPARTMENT_T1、DEPARTMENT_T2表结构

0c6e7cfc264f00b8222be533b74f2b75.png

图3

1599ca3c554d79670ed209729a9a5597.png

图4

c17c0cce942b790d14eeafd9c7fd1fd7.png

图 5 DEPARTMENT_T1表的MD5增量表DEPARTMENT_T1_MD5_CDC

2.    创建转换

转换名称:“增量表演示”

b7f7a022dfbf0945a062de05c24b48de.png

图6

10714eb4b475fecba4f8f2e232dd72b3.png

图7 转换流程图

图7中源表及目的表分别选择第一步中创建的MD5_CDC表及T2表。

3.    往源表插入、更新数据,执行转换

第一步中创建表后,并没有往表里添加记录

58437bd763fa48ae80e369fff8d6deee.png

图8

接下来,往T1表中增加、更新记录:

c6dfaca730f8742339ade58e77714b9d.png

图9

执行图7所示的转换后,浏览三张表分别得到如图所示结果:

450b819e317699d9fd0db21f7fa3b389.png

图10

增量表:为了方便做增量抽取。增量抽取只抽取自上次抽取以来数据库中要抽取的表中变化的数据,将捕获的变化数据写入到对应的CDC表(增量表)中。在ETL 使用过程中,增量抽取较全量抽取应用更广。如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:①准确性,能够将业务系统中的变化数据按一定的频率准确地捕获到;②性能,不能对业务系统造成太大的压力,影响现有业务。本文以MD5增量为例,对增量抽取流程做了简单介绍,实际使用中请考虑系统特性,选择合适的增量抽取方式。

1f2f3c943cfbd19cfb3a5d39d14a33e5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中ord函数_ord()函数以及Python中的示例

python中ord函数Python ord()函数 (Python ord() function) ord() function is a library function in Python, it is used to get number value from given character value, it accepts a character and returns an integer i.e. it is used to convert a character to an in…

364. Nested List Weight SumII

题目:Given a nested list of integers, return the sum of all integers in the list weighted by their depth. Each element is either an integer, or a list -- whose elements may also be integers or other lists. Different from the previous question wh…

计算机英语论文摘要,求英语高手翻译论文摘要,非常感谢!

彭洁回答:Thispaperdescribesacomputerlinecuttingtechnologyandcomputeranimationtechnology.Computertechnologyiscuttingwillbedesignatedasagraphicswindowborder,fromalargescreentoextracttherequiredspecificinformation,toshowapartialpictureorView.Comput…

python 示例_在Python中带有示例的while关键字

python 示例关键字的Python (Python for keyword) while is a keyword (case-sensitive) in python, it is used to create a while loop. while是python中的一个关键字(区分大小写),用于创建while循环。 Syntax of while keyword while关键字的语法 while condit…

向量表示 运动抛物线_初学讲义之高中物理(四)常见运动类型

本章主要介绍几种较为常见的运动模型以及处理思路一、抛物运动抛物运动是一种较为简单的运动模型,在现实生活中非常常见,比如向空中抛球、向河里丢石子,等等。根据抛出方向的不同,抛物运动可以分为竖抛运动、平抛运动和斜抛运动。…

[Array]Majority Element

Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times. You may assume that the array is non-empty and the majority element always exist in the array. 方法:充分利用主元素出…

python true_True关键字,带Python示例

python truePython True关键字 (Python True keyword) True is a keyword (case-sensitive) in python, it is a Boolean value (a value of class type bool). True is the result of a comparison operation. True是python中的关键字(区分大小写),它是一个布尔值(…

zeros什么意思_ma=zeros(n);是什么意思'

x[1 zeros(1,N-1)];这句matlab语句的意思是x[1zeros(1,N-1)];表示第一个位置是1,另N-1个0的行向量.y[a,b]如果a,b为行向量,那么y就是把a,b行向量拼接成另一个新的行向量u [zeros(1,10) 1 zeros(1,生成一个矩阵,其实是一个长度为31的行向量,里面的元素是10个0,一个1,后面还有20…

湖南工业大学在线计算机作业答案,湖南工业大学《计算机组成原理》试题集,共7份,有部分答案...

内容简介:湖南工业大学《计算机组成原理》试题集,共7份,有部分答案一、填空题(每空1分,共25分)1、码值80H:若表示真值0,则为------码;若表示-128,则为------码;若表示-127,则为------码&#xf…

python字母变成数字怎么办_在Python中将字母转换为数字

14 个答案:答案 0 :(得分:71)这样的事情:print [ord(char) - 96 for char in raw_input(Write Text: ).lower()]修改强>既然你让我解释我会...虽然已经在[?]的评论中得到了很好的解释。让我们在更多的一行开始。input raw_input(Write Te…

生产领料、退料频繁_领料号码

生产领料、退料频繁Problem statement: 问题陈述: Given an array of integers, find and print the maximum number of integers you can select from the array such that the absolute difference between any two of the chosen integers is less than or equa…

iOS设备、Icon、LaunchImage、图片分辨率

iOS设备 iOS设备的屏幕的大小、分辨率以及比例因数(Scale Factor)[1]。 iPhone 设备宽(inch)高(inch)对角线(inch)逻辑分辨率(point)Scale Factor设备分辨率(pixel)PPI3GS2.44.53.5320X4801x320X4801634/4s2.314.53.5320X4802x640X9603265c2.334.904320X…

计算机应用基础2010版知识点,2010计算机应用基础选择题(含答案版)重点.doc

2010计算机应用基础选择题(含答案版)重点第1部分1、C根据计算机使用的电信号来分类,电子计算机分为数字计算机和模拟计算机,其中,数字计算机是以( )为处理对象。A.字符数字量 B.物理量 &#…

mysql如何植入到oracle_分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节...

1:MSSQLSQL语法篇:BULK INSERT[ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]FROM data_file[ WITH([ [ , ] BATCHSIZE batch_size ][ [ , ] CHECK_CONSTRAINTS ][ [ , ] CODEPAGE { ACP | OEM | RAW | code_page…

Java文件类String [] list(FilenameFilter fnf)方法,带示例

File Class String []列表(FilenameFilter fnf) (File Class String[] list(FilenameFilter fnf)) This method is available in package java.io.File.list(FilenameFilter fnf). 软件包java.io.File.list(FilenameFilter fnf)中提供了此方法。 This method is used to return…

求最大公因数

while 1:s input(请输入一个数:)e input(请输入一个数:)s int(s)e int(e)if s 0 or e 0:print(错误)continueif s > e:f eelse:f swhile f:if s % f 0 and e % f 0:print(f)breakelse:f f - 1 转载于:https://www.cnblogs.com/wumac/p/567…

窦学计算机基础期末考试,关于新生开学考计算机基础

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼单选题练习1.完整的计算机系统由( c )组成。A.运算器、控制器、存储器、输入设备和输出设备B.主机和外部设备C.硬件系统和软件系统D.主机箱、显示器、键盘、鼠标、打印机…

AIX配置Volumn

我们知道,现在操作系统都具有默认的卷管理系统来管理磁盘。详见存储技术之卷管理和文件系统。总体来说,从下向上分为物理磁盘(PV)、逻辑卷组(VG)、逻辑卷(LV),用户可以直接mount的是逻辑卷。本文记录一些AIX下的卷管理和配置方法。 AIX下的Vo…

高并发内存占用持续下降_师兄,为什么删除数据后,Redis内存占用依然很高?...

前言上周刚来了个应届小师弟,组长说让我带着,周二问了我这样一个问题:师兄啊,我用top命令看了下服务器的内存占用情况,发现Redis内存占用严重,于是我就删除了大部分不用的keys,为什么内存占用还…

如何打印出给定尺寸的方格_打印给定号码的表格| 8085微处理器

如何打印出给定尺寸的方格Problem statement: 问题陈述: Write an assembly language program in 8085 to print the table of input integer. 在8085中编写汇编语言程序以打印输入整数表。 Assumptions: Suppose the inputted number is at memory location 2050…