面向資料整合的ETL技術研究

2021-08-30 07:29:11 字數 4778 閱讀 7201

2.etl中的關鍵技術

etl過程中的主要環節就是資料抽取、資料轉換和加工、資料裝載。為了實現這些功能,各個etl工具一般會進行一些功能上的擴充,例如工作流、排程引擎、規則引擎、指令碼支援、統計資訊等。

2.1 資料抽取

資料抽取是從資料來源中抽取資料的過程。實際應用中,資料來源較多採用的是關聯式資料庫。從資料庫中抽取資料一般有以下幾種方式。

(1)全量抽取

全量抽取類似於資料遷移或資料複製,它將資料來源中的表或檢視的資料原封不動的從資料庫中抽取出來,並轉換成自己的etl工具可以識別的格式。全量抽取比較簡單。

(2)增量抽取

增量抽取只抽取自上次抽取以來資料庫中要抽取的表中新增或修改的資料。在etl使用過程中。增量抽取較全量抽取應用更廣。如何捕獲 變化的資料是增量抽取的關鍵。對捕獲方法一般有兩點要求:準確性,能夠將業務系統中的變化資料按一定的頻率準確地捕獲到;效能,不能對業務系統造成太大的 壓力,影響現有業務。目前增量資料抽取中常用的捕獲變化資料的方法有:

a.觸發器:在要抽取的表上建立需要的觸發器,一般要建立插入、修改、刪除三個觸發器,每當源表中的資料發生變化,就被相應的觸發器將變化的資料寫 入乙個臨時表,抽取執行緒從臨時表中抽取資料,臨時表中抽取過的資料被標記或刪除。觸發器方式的優點是資料抽取的效能較高,缺點是要求業務表建立觸發器,對 業務系統有一定的影響。

b.時間戳:它是一種基於快照比較的變化資料捕獲方式,在源表上增加乙個時間戳字段,系統中更新修改表資料的時候,同時修改時間戳字段的值。當進 行資料抽取時,通過比較系統時間與時間戳字段的值來決定抽取哪些資料。有的資料庫的時間戳支援自動更新,即表的其它欄位的資料發生改變時,自動更新時間戳 欄位的值。有的資料庫不支援時間戳的自動更新,這就要求業務系統在更新業務資料時,手工更新時間戳字段。同觸發器方式一樣,時間戳方式的效能也比較好,數 據抽取相對清楚簡單,但對業務系統也有很大的傾入性(加入額外的時間戳字段),特別是對不支援時間戳的自動更新的資料庫,還要求業務系統進行額外的更新時 間戳操作。另外,無法捕獲對時間戳以前資料的delete和update操作,在資料準確性上受到了一定的限制。

c.全表比對:典型的全表比對的方式是採用md5校驗碼。etl工具事先為要抽取的表建立乙個結構類似的md5臨時表,該臨時表記錄源表主鍵以及根 據所有欄位的資料計算出來的md5校驗碼。每次進行資料抽取時,對源表和md5臨時表進行md5校驗碼的比對,從而決定源表中的資料是新增、修改還是刪 除,同時更新md5校驗碼。md5方式的優點是對源系統的傾入性較小(僅需要建立乙個md5臨時表),但缺點也是顯而易見的,與觸發器和時間戳方式中的主 動通知不同,md5方式是被動的進行全表資料的比對,效能較差。當表中沒有主鍵或唯一列且含有重覆記錄時,md5方式的準確性較差。

d.日誌對比:通過分析資料庫自身的日誌來判斷變化的資料。oracle的改變資料捕獲(cdc,changed data capture)技術是這方面的代表。cdc 特性是在oracle9i資料庫中引入的。cdc能夠幫助你識別從上次抽取之後發生變化的資料。利用cdc,在對源表進行insert、update或 delete等操作的同時就可以提取資料,並且變化的資料被儲存在資料庫的變化表中。這樣就可以捕獲發生變化的資料,然後利用資料庫檢視以一種可控的方式 提供給目標系統。cdc體系結構基於發布者/訂閱者模型。發布者捕捉變化資料並提供給訂閱者。訂閱者使用從發布者那裡獲得的變化資料。通常,cdc系統擁 有乙個發布者和多個訂閱者。發布者首先需要識別捕獲變化資料所需的源表。然後,它捕捉變化的資料並將其儲存在特別建立的變化表中。它還使訂閱者能夠控制對 變化資料的訪問。訂閱者需要清楚自己感興趣的是哪些變化資料。乙個訂閱者可能不會對發布者發布的所有資料都感興趣。訂閱者需要建立乙個訂閱者檢視來訪問經 發布者授權可以訪問的變化資料。cdc分為同步模式和非同步模式,同步模式實時的捕獲變化資料並儲存到變化表中,發布者與訂閱都位於同一資料庫中。非同步模式 則是基於oracle的流複製技術。

etl處理的資料來源除了關聯式資料庫外,還可能是檔案,例如txt檔案、excel檔案、xml檔案等。對檔案資料的抽取一般是進行全量抽取,一次抽取前可儲存檔案的時間戳或計算檔案的md5校驗碼,下次抽取時進行比對,如果相同則可忽略本次抽取。

2.2 資料轉換和加工

從資料來源中抽取的資料不一定完全滿足目的庫的要求,例如資料格式的不一致、資料輸入錯誤、資料不完整等等,因此有必要對抽取出的資料進行資料轉換和加工。

資料的轉換和加工可以在etl引擎中進行,也可以在資料抽取過程中利用關聯式資料庫的特性同時進行。

(1)etl引擎中的資料轉換和加工

etl引擎中一般以元件化的方式實現資料轉換。常用的資料轉換元件有欄位對映、資料過濾、資料清洗、資料替換、資料計算、資料驗證、資料加解密、資料 合併、資料拆分等。這些元件如同一條流水線上的一道道工序,它們是可插拔的,且可以任意組裝,各元件之間通過資料匯流排共享資料。

有些etl工具還提供了指令碼支援,使得使用者可以以一種程式設計的方式定製資料的轉換和加工行為。

(2)在資料庫中進行資料加工

關聯式資料庫本身已經提供了強大的sql、函式來支援資料的加工,如在sql查詢語句中新增where條件進行過濾,查詢中重新命名欄位名與目的表進行對映,substr函式,case條件判斷等等。下面是乙個sql查詢的例子。

select id as userid, substr(title, 1, 20) as title, case when remark is null then ' ' else remark end as content from tb_remark where id > 100;

相比在etl引擎中進行資料轉換和加工,直接在sql語句中進行轉換和加工更加簡單清晰,效能更高。對於sql語句無法處理的可以交由etl引擎處理。

2.3 資料裝載

將轉換和加工後的資料裝載到目的庫中通常是etl過程的最後步驟。裝載資料的最佳方法取決於所執行操作的型別以及需要裝入多少資料。當目的庫是關聯式資料庫時,一般來說有兩種裝載方式:

(1)直接sql語句進行insert、update、delete操作。

(2)採用批量裝載方法,如bcp、bulk、關聯式資料庫特有的批量裝載工具或api。

大多數情況下會使用第一種方法,因為它們進行了日誌記錄並且是可恢復的。但是,批量裝載操作易於使用,並且在裝入大量資料時效率較高。使用哪種資料裝載方法取決於業務系統的需要。

3.主流etl工具

etl工具從廠商來看分為兩種,一種是資料庫廠商自帶的etl工具,如oracle warehouse builder、oracle data integrator。另外一種是第三方工具提供商,如kettle。開源世界也有很多的etl工具,功能各異,強弱不一。

(1)oracle data integrator(odi)

odi前身是sunopsis active integration platform,在2023年底被oracle收購,重新命名為oracle data integrator,主要定位於在etl和資料整合的場景裡使用。odi和oracle原來的etl工具owb相比有一些顯著的特點,比如和owb一樣 是elt架構,但是比owb支援更多的異構的資料來源,odi提供了call web service的機制,並且odi的介面也可以暴露為web service,從而可以和soa環境進行互動。odi能夠檢測事件,乙個事件可以觸發odi的乙個介面流程,從而完成近乎實時的資料整合。

odi的主要功能特點有:

a.使用cdc作為變更資料捕獲的捕獲方式。

b.**支援並行處理和負載均衡。

c.完善的許可權控制、版本管理功能。

d.支援資料質量檢查,清洗和**髒資料。

e.支援與jms訊息中介軟體整合。

f.支援web service。

(2)sql server integration services(ssis)

ssis是sql server 2005的新成員,在sql server的早期版本中,其實就已經有了它的雛形,那時的名稱叫做資料轉換服務(dts)。在sql server 2005的前兩個版本sql server 7.0和sql server 2000中,dts主要集中於提取和載入。通過使用dts,可以從任何資料來源中提取資料以及將資料載入到任何資料來源中。在sql server 2005中,對dts進行了重新設計和改進形成了ssis。ssis提供了資料相關的控制流、資料流、日誌、變數、event、連線管理等基礎設施。控制 流也稱為工作流或者任務流,它更像工作流,在工作流中每個元件都是乙個任務。這些任務是按預定義的順序執行的。在任務流中可能有分支。當前任務的執行結果 決定沿哪條分支前進。資料流是新的概念。資料流也稱為流水線,主要解決資料轉換的問題。資料流由一組預定義的轉換操作組成。資料流的起點通常是資料來源(源 表);資料流的終點通常是資料的目的地(目標表)。可以將資料流的執行認為是乙個流水線的過程,在該過程中,每一行資料都是裝配線中需要處理的零件,而每 乙個轉換都是裝配線中的處理單元。ssis的體系結構如圖3.1所示。

4.etl工具的選擇

在資料整合中該如何選擇etl工具呢?一般來說需要考慮以下幾個方面:

(1)對平台的支援程度。

(2)對資料來源的支援程度。

(3)抽取和裝載的效能是不是較高,且對業務系統的效能影響大不大,傾入性高不高。

(4)資料轉換和加工的功能強不強。

(5)是否具有管理和排程功能。

(6)是否具有良好的整合性和開放性。

參考文獻

[1]張寧,賈自豔,史忠植。資料倉儲中etl 技術的研究。計算機工程與應用,2002(24)。

[2]王詠梅。etl及其在資料倉儲建立中的重要作用。

[3] kamal hathi。sql server 2005整合服務簡介。

基於MBOM的工藝資料管理及整合技術研究

基於mbom的工藝資料管理及整合技術研究 引言 本文針對企業產品製造過程中的工藝資料管理問題,提出了乙個數位化整合平台,整合pdm mpm erp系統,實現完整的覆蓋產品全生命週期的工藝資料管理,保證產品設計資料 工藝資料 生產資料等資料間的一致性,注重對工藝資料的組織和管理,有利於生產部門 採購部...

《面向隱私保護的資料探勘技術研究》一文的筆記

名稱 面向隱私保護的資料探勘技術研究。呂品 湖北師範學院計算機系 陳年生 董武世。推薦文章理由 對命名實體識別技術有全面 系統而有條理的介紹。三顆星 中間等級 我的摘要筆記 1.資料探勘中隱私保護包括兩方面 1 敏感的原始資料。2 從資料庫中提取的敏感知識應當刪除。2.隱私保護挖掘的目的 用某種技術...

C OSII中的時鐘中斷技術研究

1 系統中斷與時鐘節拍 1.1 系統中斷 中斷是一種硬體機制,用於通知cpu有個非同步事件發生了。中斷一旦被系統識別,cpu則儲存部分 或全部 現場 context 即部分 或全部 暫存器的值,跳轉到專門的子程式,稱為中斷服務子程式 isr 中斷服務子程式做事件處理,處理完成後執行任務排程,程式回到...