增量抽取 增量抽取只抽取自上次抽取以來(lái)數(shù)據(jù)庫(kù)中要抽取的表中新增或修改的數(shù)據(jù)。在ETL使用過(guò)程中。增量抽取較全量抽取應(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ù)。目前增量數(shù)據(jù)抽取中常用的捕獲變化數(shù)據(jù)的方法有:
a.觸發(fā)器
:在要抽取的表上建立需要的觸發(fā)器,一般要建立插入、修改、刪除三個(gè)觸發(fā)器,每當(dāng)源表中的數(shù)據(jù)發(fā)生變化,就被相應(yīng)的觸發(fā)器將變化的數(shù)據(jù)寫入一個(gè)臨時(shí)表,抽取線程從臨時(shí)表中抽取數(shù)據(jù),臨時(shí)表中抽取過(guò)的數(shù)據(jù)被標(biāo)記或刪除。觸發(fā)器方式的優(yōu)點(diǎn)是數(shù)據(jù)抽取的性能較高,缺點(diǎn)是要求業(yè)務(wù)表建立觸發(fā)器,對(duì)業(yè)務(wù)系統(tǒng)有一定的影響。
b.時(shí)間戳 :它是一種基于快照比較的變化數(shù)據(jù)捕獲方式,在源表上增加一個(gè)時(shí)間戳字段,系統(tǒng)中更新修改表數(shù)據(jù)的時(shí)候,同時(shí)修改時(shí)間戳字段的值。當(dāng)進(jìn)行數(shù)據(jù)抽取時(shí),通過(guò)比較系統(tǒng)時(shí)間與時(shí)間戳字段的值來(lái)決定抽取哪些數(shù)據(jù)。有的數(shù)據(jù)庫(kù)的時(shí)間戳支持自動(dòng)更新,即表的其它字段的數(shù)據(jù)發(fā)生改變時(shí),自動(dòng)更新時(shí)間戳字段的值。有的數(shù)據(jù)庫(kù)不支持時(shí)間戳的自動(dòng)更新,這就要求業(yè)務(wù)系統(tǒng)在更新業(yè)務(wù)數(shù)據(jù)時(shí),手工更新時(shí)間戳字段。同觸發(fā)器方式一樣,時(shí)間戳方式的性能也比較好,數(shù)據(jù)抽取相對(duì)清楚簡(jiǎn)單,但對(duì)業(yè)務(wù)系統(tǒng)也有很大的傾入性(加入額外的時(shí)間戳字段),特別是對(duì)不支持時(shí)間戳的自動(dòng)更新的數(shù)據(jù)庫(kù),還要求業(yè)務(wù)系統(tǒng)進(jìn)行額外的更新時(shí)間戳操作。另外,無(wú)法捕獲對(duì)時(shí)間戳以前數(shù)據(jù)的delete和update操作,在數(shù)據(jù)準(zhǔn)確性上受到了一定的限制。
c.全表比對(duì) :典型的全表比對(duì)的方式是采用MD5校驗(yàn)碼。ETL工具事先為要抽取的表建立一個(gè)結(jié)構(gòu)類似的MD5臨時(shí)表,該臨時(shí)表記錄源表主鍵以及根據(jù)所有字段的數(shù)據(jù)計(jì)算出來(lái)的MD5校驗(yàn)碼。每次進(jìn)行數(shù)據(jù)抽取時(shí),對(duì)源表和MD5臨時(shí)表進(jìn)行MD5校驗(yàn)碼的比對(duì),從而決定源表中的數(shù)據(jù)是新增、修改還是刪除,同時(shí)更新MD5校驗(yàn)碼。MD5方式的優(yōu)點(diǎn)是對(duì)源系統(tǒng)的傾入性較小(僅需要建立一個(gè)MD5臨時(shí)表),但缺點(diǎn)也是顯而易見的,與觸發(fā)器和時(shí)間戳方式中的主動(dòng)通知不同,MD5方式是被動(dòng)的進(jìn)行全表數(shù)據(jù)的比對(duì),性能較差。當(dāng)表中沒(méi)有主鍵或唯一列且含有重復(fù)記錄時(shí),MD5方式的準(zhǔn)確性較差。
d.日志對(duì)比 :通過(guò)分析數(shù)據(jù)庫(kù)自身的日志來(lái)判斷變化的數(shù)據(jù)。Oracle的改變數(shù)據(jù)捕獲(CDC,ChangedDataCapture)技術(shù)是這方面的代表。CDC特性是在Oracle9i數(shù)據(jù)庫(kù)中引入的。CDC能夠幫助你識(shí)別從上次抽取之后發(fā)生變化的數(shù)據(jù)。利用CDC,在對(duì)源表進(jìn)行insert、update或delete等操作的同時(shí)就可以提取數(shù)據(jù),并且變化的數(shù)據(jù)被保存在數(shù)據(jù)庫(kù)的變化表中。這樣就可以捕獲發(fā)生變化的數(shù)據(jù),然后利用數(shù)據(jù)庫(kù)視圖以一種可控的方式提供給目標(biāo)系統(tǒng)。CDC體系結(jié)構(gòu)基于發(fā)布者/訂閱者模型。發(fā)布者捕捉變化數(shù)據(jù)并提供給訂閱者。訂閱者使用從發(fā)布者那里獲得的變化數(shù)據(jù)。通常,CDC系統(tǒng)擁有一個(gè)發(fā)布者和多個(gè)訂閱者。發(fā)布者首先需要識(shí)別捕獲變化數(shù)據(jù)所需的源表。然后,它捕捉變化的數(shù)據(jù)并將其保存在特別創(chuàng)建的變化表中。它還使訂閱者能夠控制對(duì)變化數(shù)據(jù)的訪問(wèn)。訂閱者需要清楚自己感興趣的是哪些變化數(shù)據(jù)。一個(gè)訂閱者可能不會(huì)對(duì)發(fā)布者發(fā)布的所有數(shù)據(jù)都感興趣。訂閱者需要?jiǎng)?chuàng)建一個(gè)訂閱者視圖來(lái)訪問(wèn)經(jīng)發(fā)布者授權(quán)可以訪問(wèn)的變化數(shù)據(jù)。CDC分為同步模式和異步模式,同步模式實(shí)時(shí)的捕獲變化數(shù)據(jù)并存儲(chǔ)到變化表中,發(fā)布者與訂閱都位于同一數(shù)據(jù)庫(kù)中。異步模式則是基于Oracle的流復(fù)制技術(shù)。
綜上所述:本BI項(xiàng)目中采取時(shí)間戳方式.
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
