oracle 增量_【干货分享】DMETL中的增量抽取初识
DMETL實(shí)現(xiàn)了增量數(shù)據(jù)的同步。在源表上進(jìn)行的增刪改操作,可以通過增量數(shù)據(jù)抽取,同步到目的表中。在第一次將源表數(shù)據(jù)全量抽取到目的表中后,可以通過重復(fù)地執(zhí)行增量數(shù)據(jù)抽取,將源表上的增刪改操作產(chǎn)生的變化數(shù)據(jù),無遺漏地同步到目的表中,從而實(shí)現(xiàn)源表和目的表的長期同步。由于不需要每次都同步全量數(shù)據(jù),當(dāng)全量數(shù)據(jù)巨大,而每次變化數(shù)據(jù)較少時(shí),可以大幅提升數(shù)據(jù)同步的效率。
DMETL中“增量表讀取“提供對(duì)已建立好的數(shù)據(jù)庫數(shù)據(jù)源中增量表的數(shù)據(jù)讀取功能,并且可以對(duì)數(shù)據(jù)讀取列、數(shù)據(jù)行、緩存以及并發(fā)等選項(xiàng)的設(shè)置。
DMETL支持的增量有:
觸發(fā)器增量:是通過在基表上建立觸發(fā)器,捕捉基表上發(fā)生的增刪改操作,從而產(chǎn)生增量數(shù)據(jù)。觸發(fā)器方式可以捕捉到插入和修改的大對(duì)象數(shù)據(jù)。
影子表增量:是在數(shù)據(jù)源中,建立一張和基表結(jié)構(gòu)相同的影子表。當(dāng)基表上發(fā)生了增刪改操作后,在增量數(shù)據(jù)集進(jìn)行刷新操作時(shí),通過比較基表和影子表的數(shù)據(jù),從而獲得增量數(shù)據(jù)。
MD5增量:通過將變化前后的數(shù)據(jù)進(jìn)行MD5 散列處理,然后比對(duì)MD5 的散列值是否相同來實(shí)現(xiàn)。
時(shí)間戳增量:通過一條記錄修改的時(shí)間戳值或生成的時(shí)時(shí)間戳值來決定是否遷移。
Oracle CDC 增量方式:是“Oracle變化數(shù)據(jù)捕捉”(Changed Data Capture)的簡稱,利用了Oracle內(nèi)建的存儲(chǔ)函數(shù)和過程捕捉和發(fā)布變化數(shù)據(jù),本質(zhì)是分析日志的方式,獲得Oracle 數(shù)據(jù)庫中某張表上的數(shù)據(jù)變化,從而實(shí)現(xiàn)增量數(shù)據(jù)的抽取。
DMHS 增量:DMHS是“DM異構(gòu)同步”的簡稱。DMHS工具通過解析數(shù)據(jù)庫日志,在不同的數(shù)據(jù)庫之間實(shí)現(xiàn)數(shù)據(jù)同步。
各種增量方式的比較和使用建議
增量方式 | 效率 | 通用性 | 使用建議 |
觸發(fā)器 | 高 | 在表上進(jìn)行增量抽取 | 一般情況下建議使用 |
影子表 | 較高 | 在表或視圖上進(jìn)行增量抽取 | 一般情況下建議使用,但比較列包含大對(duì)象類型時(shí),效率較低 |
MD5 | 低 | 在表或視圖上進(jìn)行增量抽取 | 需要在大對(duì)象類型列上進(jìn)行比較時(shí)可使用 |
時(shí)間戳 | 較高 | 在表或視圖上進(jìn)行增量抽取 | 需要修改時(shí)間戳列,因此需要數(shù)據(jù)庫支持時(shí)間戳自動(dòng)更新,或手工更新時(shí)間戳列 |
DMHS | 高 | DM數(shù)據(jù)庫中,在表上進(jìn)行增量抽取 | 需要安裝DMHS工具。當(dāng)對(duì)性能要求較高時(shí)建議使用 |
Oracle ? CDC | 高 | Oracle數(shù)據(jù)庫中,在表上進(jìn)行增量抽取 | sync方式不支持大對(duì)象類型列的比較。當(dāng)對(duì)實(shí)時(shí)性要求較高時(shí)建議使用sync方式 ,hotlog方式可能有延時(shí),但是對(duì)數(shù)據(jù)源的影響較小 |
表格 1
使用建議:
源庫權(quán)限 | 是否要同步update和delete操作 | 數(shù)據(jù)量 | 建議(按優(yōu)先級(jí)排列) |
只讀 | 否 | 小 | 1. ? 如果目的表上有主鍵或者唯一索引,可以使用全量抽取,然后在表目的上使用插入更新選項(xiàng)。 2. ?每次同步前先刪除目的表的數(shù)據(jù),然后在進(jìn)行全量同步。 |
大 | 1. ?如果源表上有序列或者自增列可以使用帶參數(shù)的sql查詢進(jìn)行同步,參見典型示例《基于變量實(shí)現(xiàn)斷點(diǎn)續(xù)傳和增量抽取》 2. 如果源是dmhs支持的數(shù)據(jù)庫,則可以通過dmhs進(jìn)行 | ||
是 | 小 | 1. ?每次同步前先刪除目的表的數(shù)據(jù),然后在進(jìn)行全量同步。 | |
1. 如果源是dmhs支持的數(shù)據(jù)庫,則可以通過dmhs進(jìn)行 2. Oracle CDC (需要在源庫上有oracle cdc的相關(guān)權(quán)限) | |||
讀寫 | 不限 | 大 | 1. Oracle CDC 2. ?觸發(fā)器增量 3. ?DMHS |
小 | 1. 影子表增量 2. MD5增量 |
表格 2
注:數(shù)據(jù)量在100w以內(nèi)的都可以認(rèn)為是小表,超過100w的為大表。
添加增量表方式
通過工具欄的“數(shù)據(jù)讀取“中的“增量表”選擇的數(shù)據(jù)集,就可以在普通表上添加增量表。比如下圖,是在普通表DEPARTMENT_T1上添加的MD5_CDC表。
圖1
表/視圖選擇的數(shù)據(jù)集是普通表,增量表比普通表多兩列CDC_ID和CDC_OPT(圖4),用來記錄對(duì)源表的操作。當(dāng)對(duì)源表進(jìn)行插入、更新、刪除時(shí),目的表中記錄會(huì)相應(yīng)地更改。
本文以增加MD5增量表為例,進(jìn)行增量演示(該示例可在DMETL示例庫中找到,或按如下步驟創(chuàng)建):
1.??? 創(chuàng)建數(shù)據(jù)源及目的表
在數(shù)據(jù)集DMETL_SAMPLE 庫下添加表DEPARTMENT_T1、DEPARTMENT_T2(圖2),在表DEPARTMENT_T1 處添加MD5 增量表(圖3~5):
圖 2 DEPARTMENT_T1、DEPARTMENT_T2表結(jié)構(gòu)
圖3
圖4
圖 5 DEPARTMENT_T1表的MD5增量表DEPARTMENT_T1_MD5_CDC
2.??? 創(chuàng)建轉(zhuǎn)換
轉(zhuǎn)換名稱:“增量表演示”
圖6
圖7 轉(zhuǎn)換流程圖
圖7中源表及目的表分別選擇第一步中創(chuàng)建的MD5_CDC表及T2表。
3.??? 往源表插入、更新數(shù)據(jù),執(zhí)行轉(zhuǎn)換
第一步中創(chuàng)建表后,并沒有往表里添加記錄
圖8
接下來,往T1表中增加、更新記錄:
圖9
執(zhí)行圖7所示的轉(zhuǎn)換后,瀏覽三張表分別得到如圖所示結(jié)果:
圖10
增量表:為了方便做增量抽取。增量抽取只抽取自上次抽取以來數(shù)據(jù)庫中要抽取的表中變化的數(shù)據(jù),將捕獲的變化數(shù)據(jù)寫入到對(duì)應(yīng)的CDC表(增量表)中。在ETL 使用過程中,增量抽取較全量抽取應(yīng)用更廣。如何捕獲變化的數(shù)據(jù)是增量抽取的關(guān)鍵。對(duì)捕獲方法一般有兩點(diǎn)要求:①準(zhǔn)確性,能夠?qū)I(yè)務(wù)系統(tǒng)中的變化數(shù)據(jù)按一定的頻率準(zhǔn)確地捕獲到;②性能,不能對(duì)業(yè)務(wù)系統(tǒng)造成太大的壓力,影響現(xiàn)有業(yè)務(wù)。本文以MD5增量為例,對(duì)增量抽取流程做了簡單介紹,實(shí)際使用中請(qǐng)考慮系統(tǒng)特性,選擇合適的增量抽取方式。
總結(jié)
以上是生活随笔為你收集整理的oracle 增量_【干货分享】DMETL中的增量抽取初识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: t580 thinkpad_聊聊Thin
- 下一篇: 计算机英语论文摘要,求英语高手翻译论文摘