ETL中的關鍵技術

2021-08-27 08:40:50 字數 3053 閱讀 8277

(extract-transfrom-load)資料倉儲技術,用來描述將資料從**端經過抽取(extract)、互動轉換(transfrom)、載入(load)到目的端的過程。

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

全量抽取

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

增量抽取

增量抽取只抽取自上次抽取以來資料庫中要抽取的表中新增或修改的資料。在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校驗碼,下次抽取時進行比對,如果相同則可忽略本次抽取。

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

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

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

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

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

在資料庫中進行資料加工

關聯式資料庫本身已經提供了強大的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引擎處理。

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

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

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

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

cookie關鍵技術

一 cookie是在服務端建立。二 cookie是儲存在瀏覽器端,存放路徑如下截圖。三 cookie的生命週期可以設定,如果不設定生命週期,當瀏覽器關閉時,cookie就消亡。四 cookie可以被同一臺機器的多個瀏覽器共享。五 可以把cookie看成一張表,表字段由 名字,值 組成。六 如果伺服器...

RTOS關鍵技術指標

評價乙個實時作業系統的優劣可以用一下幾個技術指標來衡量。1 任務排程演算法 乙個實時作業系統的任務排程演算法,在很大程度上決定了其系統實時性和其多任務排程能力。常用的任務排程演算法有優先順序排程策略和時間片輪轉排程策略 排程的方式可分為搶占式 不可搶占式和選擇可搶占式等 常用的排程演算法有rate ...

LTE關鍵技術介紹

我們來交流一下lte的關鍵技術。其實說到關鍵技術,主要還是物理層的關鍵技術,lte在物理層採用了ofdm和mimo等技術,極大地提高了系統的系統和吞吐量。1 網路架構 3gpp lte接入網在能夠有效支援新的物理層傳輸技術的同時,還需要滿足低時延 低複雜度 低成本的要求。原有的網路結構顯然已無法滿足...