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表。

图1

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

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

1.    创建数据源及目的表

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

图 2 DEPARTMENT_T1、DEPARTMENT_T2表结构

图3

图4

图 5 DEPARTMENT_T1表的MD5增量表DEPARTMENT_T1_MD5_CDC

2.    创建转换

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

图6

图7 转换流程图

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

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

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

图8

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

图9

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

图10

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

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

  1. [转载] python判断字符串中包含某个字符串_干货分享| Python中最常用的字符串方法

    参考链接: Python中字符串string capitalize 字符串是字符序列.Python中内置的string类代表基于Unicode国际字符集的字符串.除了Python中常见的操作外,字符串 ...

  2. sysdba 默认密码_干货分享|DM数据库密码策略和登录限制设置

    在数据库的用户安全中,口令复杂度策略和资源限制是用户安全重要的一部分.在DM数据库中,口令策略分为系统口令策略和用户口令策略.只有安全版本才支持对每个用户设置口令策略(即用户口令策略),非安全版本,只 ...

  3. 达梦数据库删除用户_干货分享丨DM8用户管理

    原标题:干货分享丨DM8用户管理 用户介绍 安装创建达梦企业版数据库后,系统会默认创建四类数据库账号,分别是: SYS:达梦数据库内置管理用户,不能登录,数据库使用的大部分的数据字典和动态性能视图. ...

  4. 位图排序 大数据_干货分享:大话12种排序算法

    干货分享:大话12种排序算法 常见的排序算法: 快速排序.堆排序.归并排序.选择排序 插入排序.二分插入排序 冒泡排序.鸡尾酒排序 桶排序.计数排序.基数排序.位图排序 技能点: 1.归并排序在O(N ...

  5. lwip协议栈优化_干货分享 | KNI性能优化实践

    友情提示:全文5000多文字,预计阅读时间15分钟 文章源自现网实践对支撑及用户态/内核态网络报文交换场景的认识,欢迎有Linux/FreeBSD内核.网络协议栈.DPDK优化实践经验的同学留言探讨- ...

  6. vs code vue插件_干货分享 | Vue框架常见问题浅谈

    友情提示:全文7800多文字,预计阅读时间10分钟 Vue是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手, ...

  7. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

  8. eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...

    友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...

  9. android分享文件分享结果_干货分享丨DM删除归档日志文件的多种方法

    上一期我们讲解了DM数据库归档日志的切换,本期我们讲解DM数据库归档日志文件的删除. 本章内容已在如下环境上测试: ①操作系统:中标麒麟7: ②数据库版本:达梦8: 相关关键字:DM数据库.归档日志文 ...

最新文章

  1. 概述Nod32的部署
  2. 网易模板html,163企业邮箱HTML网站模板
  3. Web 前端——项目文件夹命名规范
  4. idea配置tomcat以及环境变量
  5. 解析JavaScript中的字符串类型与字符编码支持
  6. AGC004E - Salvage Robots(dp,思维)
  7. C语言预处理命令总结
  8. android setprogress,progressDialog 为什么设置了setProgress()方法无反应?
  9. MXNet 的学习(一)—— MXNet Dependency Engine(依赖引擎)
  10. Java并发编程技术
  11. c语言程序设计爱心图片,c语言爱心图片表白程序源代码
  12. 一个局域网联机小游戏
  13. C语言利用指针实现字符串逆序输出
  14. 自动化运维工具-ansible入门(一)
  15. 计算机启动修复怎么还原,电脑开机出现系统恢复选项该怎么办
  16. 泰山OFFICE技术讲座:字体属性的上标研究1:上标是什么
  17. 大文件分块计算MD5值 C++实现
  18. 【NCNN解读】——benchmark部分
  19. 《Android源码设计模式解析与实战》读书笔记(十四)
  20. 计算机基础知识图谱,基于知识图谱的大学计算机基础习题推荐方法技术

热门文章

  1. stm32外部中断_STM32学习笔记 | 电源管理及低功耗设计要点
  2. 检测到目标url存在内部ip地址泄露_Cendertron,动态爬虫与敏感信息泄露检测
  3. linux修改栈指针x86,为什么x86-64 Linux系统调用会修改RCX,这个值意味着什么?
  4. restfull加签_SpringBoot RestFull API签名
  5. 使用python读取iphone文件_如何在连接的iPhone上用Python从windows7访问照片?
  6. Latex 生成的PDF增加行号 左右两边
  7. Latex 中插入超链接 插入网址
  8. WordPress 首页显示摘要
  9. 步步为营 SharePoint 开发学习笔记系列 七、SharePoint Timer Job 开发
  10. python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用