登錄

數(shù)據(jù)抽取

百科 > 信息管理術(shù)語 > 數(shù)據(jù)抽取

1.什么是數(shù)據(jù)抽取

  數(shù)據(jù)抽取是指從源數(shù)據(jù)源系統(tǒng)抽取目的數(shù)據(jù)源系統(tǒng)需要的數(shù)據(jù)。實(shí)際應(yīng)用中,數(shù)據(jù)源較多采用的是關(guān)系數(shù)據(jù)庫。

2.數(shù)據(jù)抽取的方式

  (一) 全量抽取

  全量抽取類似于數(shù)據(jù)遷移或數(shù)據(jù)復(fù)制,它將數(shù)據(jù)源中的表或視圖的數(shù)據(jù)原封不動(dòng)的從數(shù) 據(jù)庫中抽取出來,并轉(zhuǎn)換成自己的ETL 工具可以識(shí)別的格式。全量抽取比較簡(jiǎn)單。

  (二) 增量抽取

  增量抽取只抽取自上次抽取以來數(shù)據(jù)庫中要抽取的表中新增或修改的數(shù)據(jù)。在ETL 使用過程中,增量抽取較全量抽取應(yīng)用更廣。如何捕獲變化的數(shù)據(jù)是增量抽取的關(guān)鍵。對(duì)捕獲方法一般有兩點(diǎn)要求:準(zhǔn)確性,能夠?qū)?a href="/wiki/%E4%B8%9A%E5%8A%A1%E7%B3%BB%E7%BB%9F" title="業(yè)務(wù)系統(tǒng)">業(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í)表中抽取過的數(shù)據(jù)被標(biāo)記或刪除。 優(yōu)點(diǎn):數(shù)據(jù)抽取的性能高,ETL 加載規(guī)則簡(jiǎn)單,速度快,不需要修改業(yè)務(wù)系統(tǒng)表結(jié)構(gòu),可以實(shí)現(xiàn)數(shù)據(jù)的遞增加載。 缺點(diǎn):要求業(yè)務(wù)表建立觸發(fā)器,對(duì)業(yè)務(wù)系統(tǒng)有一定的影響,容易對(duì)源數(shù)據(jù)庫構(gòu)成威脅。

  (b) 時(shí)間戳方式

  它是一種基于快照比較的變化數(shù)據(jù)捕獲方式,在源表上增加一個(gè)時(shí)間戳字段,系統(tǒng)中更新修改表數(shù)據(jù)的時(shí)候,同時(shí)修改時(shí)間戳字段的值。當(dāng)進(jìn)行數(shù)據(jù)抽取時(shí),通過比較上次抽取時(shí)間與時(shí)間戳字段的值來決定抽取哪些數(shù)據(jù)。有的數(shù)據(jù)庫的時(shí)間戳支持自動(dòng)更新,即表的其它字段的數(shù)據(jù)發(fā)生改變時(shí),自動(dòng)更新時(shí)間戳字段的值。有的數(shù)據(jù)庫不支持時(shí)間戳的自動(dòng)更新,這就要求業(yè)務(wù)系統(tǒng)在更新業(yè)務(wù)數(shù)據(jù)時(shí),手工更新時(shí)間戳字段。

  優(yōu)點(diǎn):同觸發(fā)器方式一樣,時(shí)間戳方式的性能也比較好,ETL 系統(tǒng)設(shè)計(jì)清晰,源數(shù)據(jù)抽取相對(duì)清楚簡(jiǎn)單,可以實(shí)現(xiàn)數(shù)據(jù)的遞增加載。

  缺點(diǎn):時(shí)間戳維護(hù)需要由業(yè)務(wù)系統(tǒng)完成,對(duì)業(yè)務(wù)系統(tǒng)也有很大的傾

  入性(加入額外的時(shí)間戳字段),特別是對(duì)不支持時(shí)間戳的自動(dòng)更新的數(shù)據(jù)庫,還要求業(yè)務(wù)系統(tǒng)進(jìn)行額外的更新時(shí)間戳操作;另外,無法捕獲對(duì)時(shí)間戳以前數(shù)據(jù)的delete和update 操作,在數(shù)據(jù)準(zhǔn)確性上受到了一定的限制。

  (c) 全表刪除插入方式

  每次ETL 操作均刪除目標(biāo)表數(shù)據(jù),由ETL 全新加載數(shù)據(jù)。

  優(yōu)點(diǎn):ETL 加載規(guī)則簡(jiǎn)單,速度快。

  缺點(diǎn):對(duì)于維表加外鍵不適應(yīng),當(dāng)業(yè)務(wù)系統(tǒng)產(chǎn)生刪除數(shù)據(jù)操作時(shí),綜合數(shù)據(jù)庫將不會(huì)記錄到所刪除的歷史數(shù)據(jù),不可以實(shí)現(xiàn)數(shù)據(jù)的遞增加載;同時(shí)對(duì)于目標(biāo)表所建立的關(guān)聯(lián)關(guān)系,需要重新進(jìn)行創(chuàng)建。

  (d) 全表比對(duì)方式

  全表比對(duì)的方式是ETL 工具事先為要抽取的表建立一個(gè)結(jié)構(gòu)類似的臨時(shí)表,該臨時(shí)表記錄源表主鍵以及根據(jù)所有字段的數(shù)據(jù)計(jì)算出來,每次進(jìn)行數(shù)據(jù)抽取時(shí),對(duì)源表和臨時(shí)表進(jìn)行的比對(duì),如有不同,進(jìn)行Update 操作,如目標(biāo)表沒有存在該主鍵值,表示該記錄還沒有,即進(jìn)行Insert 操作。

  優(yōu)點(diǎn):對(duì)已有系統(tǒng)表結(jié)構(gòu)不產(chǎn)生影響,不需要修改業(yè)務(wù)操作程序,所有抽取規(guī)則由ETL完成,管理維護(hù)統(tǒng)一,可以實(shí)現(xiàn)數(shù)據(jù)的遞增加載,沒有風(fēng)險(xiǎn)。

  缺點(diǎn):ETL 比對(duì)較復(fù)雜,設(shè)計(jì)較為復(fù)雜,速度較慢。與觸發(fā)器和時(shí)間戳方式中的主動(dòng)通知不同,全表比對(duì)方式是被動(dòng)的進(jìn)行全表數(shù)據(jù)的比對(duì),性能較差。當(dāng)表中沒有主鍵或唯一列且含有重復(fù)記錄時(shí),全表比對(duì)方式的準(zhǔn)確性較差。

  (e)日志表方式

  在業(yè)務(wù)系統(tǒng)中添加系統(tǒng)日志表,當(dāng)業(yè)務(wù)數(shù)據(jù)發(fā)生變化時(shí),更新維護(hù)日志表內(nèi)容,當(dāng)作ETL 加載時(shí),通過讀日志表數(shù)據(jù)決定加載那些數(shù)據(jù)及如何加載。 優(yōu)點(diǎn):不需要修改業(yè)務(wù)系統(tǒng)表結(jié)構(gòu),源數(shù)據(jù)抽取清楚,速度較快??梢詫?shí)現(xiàn)數(shù)據(jù)的遞增加載。 缺點(diǎn):日志表維護(hù)需要由業(yè)務(wù)系統(tǒng)完成,需要對(duì)業(yè)務(wù)系統(tǒng)業(yè)務(wù)操作程序作修改,記錄日志信息。日志表維護(hù)較為麻煩,對(duì)原有系統(tǒng)有較大影響。工作量較大,改動(dòng)較大,有一定風(fēng)險(xiǎn)。

  (f) Oracle 變化數(shù)據(jù)捕捉(CDC 方式)

  通過分析數(shù)據(jù)庫自身的日志來判斷變化的數(shù)據(jù)。Oracle 的改變數(shù)據(jù)捕獲(CDC,Changed Data Capture)技術(shù)是這方面的代表。CDC 特性是在Oracle9i 數(shù)據(jù)庫中引入的。CDC 能夠幫助你識(shí)別從上次抽取之后發(fā)生變化的數(shù)據(jù)。利用CDC,在對(duì)源表進(jìn)行insert、update 或 delete 等操作的同時(shí)就可以提取數(shù)據(jù),并且變化的數(shù)據(jù)被保存在數(shù)據(jù)庫的變化表中。這樣就可以捕獲發(fā)生變化的數(shù)據(jù),然后利用數(shù)據(jù)庫視圖以一種可控的方式提供給目標(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ù)的訪問。訂閱者需要清楚自己感興趣的是哪些變化數(shù)據(jù)。一個(gè)訂閱者可能不會(huì)對(duì)發(fā)布者發(fā)布的所有數(shù)據(jù)都感興趣。訂閱者需要?jiǎng)?chuàng)建一個(gè)訂閱者視圖來訪問經(jīng)發(fā)布者授權(quán)可以訪問的變化數(shù)據(jù)。CDC 分為同步模式和異步模式,同步模式實(shí)時(shí)的捕獲變化數(shù)據(jù)并存儲(chǔ)到變化表中,發(fā)布者與訂閱都位于同一數(shù)據(jù)庫中;異步模式則是基于Oracle 的流復(fù)制技術(shù)。

  優(yōu)點(diǎn):提供了易于使用的API 來設(shè)置CDC 環(huán)境,縮短ETL 的時(shí)間。不需要修改業(yè)務(wù)系統(tǒng)表結(jié)構(gòu),可以實(shí)現(xiàn)數(shù)據(jù)的遞增加載。

  缺點(diǎn):業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫版本與產(chǎn)品不統(tǒng)一,難以統(tǒng)一實(shí)現(xiàn),實(shí)現(xiàn)過程相對(duì)復(fù)雜,并且需深入研究方能實(shí)現(xiàn)?;蛘咄ㄟ^第三方工具實(shí)現(xiàn),價(jià)格昂貴。

評(píng)論  |   0條評(píng)論