【寫給大忙人看】一文掌握運營環(huán)境與數(shù)據(jù)倉庫之間的接口

導讀:盡管大數(shù)據(jù)和系統(tǒng)接口很有趣,但這并不是數(shù)據(jù)架構(gòu)師需要了解的唯一接口。企業(yè)系統(tǒng)環(huán)境中另一個值得關(guān)注的接口是運營環(huán)境與數(shù)據(jù)倉庫之間的接口。
1
運營環(huán)境和數(shù)據(jù)倉庫接口
下圖是運營環(huán)境和數(shù)據(jù)倉庫之間的接口示意圖。運營環(huán)境是詳細地做出企業(yè)日常決策的地方,數(shù)據(jù)倉庫環(huán)境則是存儲企業(yè)決策基礎的地方。

圖1 將應用數(shù)據(jù)轉(zhuǎn)換為企業(yè)數(shù)據(jù)
2
經(jīng)典ETL接口
在運營環(huán)境和數(shù)據(jù)倉庫環(huán)境之間的接口被稱為“ETL”層,ETL是提取/轉(zhuǎn)換/存儲(extract/transform/load)的縮寫。在ETL接口中,應用數(shù)據(jù)被轉(zhuǎn)換為企業(yè)數(shù)據(jù)。這其中的轉(zhuǎn)換是企業(yè)最重要的數(shù)據(jù)轉(zhuǎn)換之一。圖2是經(jīng)典的ETL接口。

圖2 通過ETL將應用數(shù)據(jù)轉(zhuǎn)換為企業(yè)數(shù)據(jù)
這個接口的轉(zhuǎn)換工作是將應用數(shù)據(jù)轉(zhuǎn)換為企業(yè)數(shù)據(jù)。運營數(shù)據(jù)是由每個應用來定義的。因此,會存在數(shù)據(jù)的定義不一致、公式不一致、數(shù)據(jù)結(jié)構(gòu)也不一致等問題。但當數(shù)據(jù)經(jīng)過ETL層后,這些不一致性就可以得到解決。
3
ODS和ETL接口
然而,運營環(huán)境和數(shù)據(jù)倉庫環(huán)境之間的傳統(tǒng)ETL接口存在很多不同的變種。其中的一個變種是將運營數(shù)據(jù)存儲(Operational Data Store,ODS)納入接口中,如圖3所示。

圖3 ODS
流向ODS的數(shù)據(jù)可以直接從運營環(huán)境中流入ODS,也可以通過ETL轉(zhuǎn)換層流向ODS。無論數(shù)據(jù)是否通過,ETL層完全取決于ODS的類別。若為I類ODS,數(shù)據(jù)可以直接從運營環(huán)境中輸入ODS,若是II類或III類ODS,數(shù)據(jù)則需要通過ETL接口。
并非每個公司都有或需要ODS。通常,只有那些在線事務處理程度較高的公司才有ODS。
4
暫緩區(qū)
在運營環(huán)境和數(shù)據(jù)倉庫環(huán)境之間的經(jīng)典ETL接口的另一個變體是存在暫存區(qū)的情況,如圖4所示。

圖4 暫存區(qū)
在一些非常特殊的情況下,是需要暫存區(qū)的。其中一種情況是來自兩個或多個文件的數(shù)據(jù)需要合并時,存在時間問題。來自應用A的數(shù)據(jù)在上午九時已經(jīng)準備好進行合并,但來自應用B的數(shù)據(jù)在下午五時才能準備好進行合并。在這種情況下,來自應用A的數(shù)據(jù)必須被“暫存”,直到合并準備就緒。
需要用到暫存區(qū)的第二種情況是數(shù)據(jù)量很大,必須將數(shù)據(jù)分散到不同的工作負載中,以適應ETL處理中的并行化。在這種情況下,需要一個暫存區(qū)來分離數(shù)據(jù)。
第三種情況是來自運營環(huán)境的數(shù)據(jù)必須經(jīng)過預處理步驟。在預處理步驟中,數(shù)據(jù)需要經(jīng)過編輯和修正。
暫存區(qū)的問題之一是能否針對在暫存區(qū)中發(fā)現(xiàn)的數(shù)據(jù)進行分析處理。通常情況下,暫存區(qū)中的數(shù)據(jù)是不能用來進行分析處理的。因為暫存區(qū)中的數(shù)據(jù)還沒有進行過轉(zhuǎn)換,故對暫存區(qū)中的數(shù)據(jù)進行任何的分析處理都是沒有意義的。
值得注意的是,暫存區(qū)是可選的,大多數(shù)公司都不需要暫存區(qū)。
5
變動數(shù)據(jù)捕獲
運營系統(tǒng)和數(shù)據(jù)倉庫系統(tǒng)間經(jīng)典接口的另一個變體被稱為CDC方案,“CDC”代表“變動數(shù)據(jù)捕獲”。對于高性能的在線事務環(huán)境,每次需要刷新數(shù)據(jù)倉庫環(huán)境中的數(shù)據(jù)時,掃描整個數(shù)據(jù)庫是非常困難的,或者說效率很低。在這些環(huán)境中,通過檢查日志磁帶來確定哪些數(shù)據(jù)需要更新到數(shù)據(jù)倉庫是有意義的。創(chuàng)建日志磁帶是為了當在線事務處理過程中發(fā)生故障時,可以進行在線備份和恢復。但日志磁帶包含了所有需要更新到數(shù)據(jù)倉庫的數(shù)據(jù)。日志磁帶是離線讀取的,用來收集需要被更新到數(shù)據(jù)倉庫的數(shù)據(jù)。圖5描述了CDC方案。

圖5 事務處理系統(tǒng)的CDC方案
6
內(nèi)嵌轉(zhuǎn)化
傳統(tǒng)運營系統(tǒng)到數(shù)據(jù)倉庫接口的另一種選擇是內(nèi)嵌轉(zhuǎn)換。在內(nèi)嵌轉(zhuǎn)換中,需要流向數(shù)據(jù)倉庫的數(shù)據(jù)是作為在線事務處理的一部分來進行采集和處理的。
由于編碼需要成為原始編碼規(guī)范的一部分,而且高性能的在線事務處理過程需要消耗資源,因此內(nèi)嵌轉(zhuǎn)換并不常用。事實上,在線事務處理代碼是在人們意識到在線事務處理的結(jié)果需要被反映在數(shù)據(jù)倉庫環(huán)境中之前創(chuàng)建的。不過,偶爾也會需要使用內(nèi)嵌轉(zhuǎn)換。圖6展示了內(nèi)嵌轉(zhuǎn)換的示意圖。

圖6 文本數(shù)據(jù)的內(nèi)嵌語境方案
7
ELT處理
經(jīng)典ETL接口的最后一個變體,我們可以直接稱之為ELT接口。ELT接口是將數(shù)據(jù)直接從運營環(huán)境加載到數(shù)據(jù)倉庫中。進入數(shù)據(jù)倉庫后,就會對數(shù)據(jù)進行轉(zhuǎn)換。
選擇ELT方案的問題在于,有一種誘惑是干脆不執(zhí)行“T”(轉(zhuǎn)化)這一步。在這種情況下,數(shù)據(jù)倉庫就會變成一個“垃圾堆”。而一旦數(shù)據(jù)倉庫中裝滿了垃圾,作為決策的基
礎,它就會變得毫無價值。
如果不忽略掉“T”這一步,那么采用ELT方法是沒有問題的。但很少有企業(yè)能夠堅持正確使用ELT方法的毅力。圖7說明了將運營系統(tǒng)和數(shù)據(jù)倉庫連接起來的ELT方法。

圖7 ETL的一個變體是ELT

●手把手教你追蹤數(shù)據(jù)倉庫中的數(shù)據(jù)流
●學會這7個繪圖工具包,Matplotlib可視化也沒那么難
●當數(shù)據(jù)倉庫內(nèi)的資源競爭成為一個問題,該如何解決?
●詳解數(shù)據(jù)倉庫的數(shù)據(jù)維——上下文
●數(shù)據(jù)倉庫環(huán)境中元數(shù)據(jù)的角色
