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.pswp.cn/news/542944.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542944.shtml
英文地址,請注明出處:http://en.pswp.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…