數(shù)據(jù)挖掘、數(shù)據(jù)倉庫,近些年在國內(nèi)越來越熱、越來越流行,需求比較多,應(yīng)用也比較廣泛,它們常服務(wù)于商務(wù)智能活動。通俗地概括來講,我們可將它們統(tǒng)稱作數(shù)據(jù)分析、數(shù)據(jù)計算。
數(shù)據(jù)挖掘、數(shù)據(jù)倉庫,近些年在國內(nèi)越來越熱、越來越流行,需求比較多,應(yīng)用也比較廣泛,它們常服務(wù)于商務(wù)智能活動。通俗地概括來講,我們可將它們統(tǒng)稱作數(shù)據(jù)分析、數(shù)據(jù)計算。
我們介紹數(shù)據(jù)倉庫在商業(yè)應(yīng)用,主要涉及有兩個方面,一個是有關(guān)數(shù)據(jù)倉庫的常用技術(shù),另一個是有關(guān)數(shù)據(jù)倉庫的應(yīng)用案例。同時也涉及數(shù)據(jù)倉庫的兩個背景,在我們經(jīng)歷的北美項(xiàng)目中,一個主要方面屬于實(shí)際的商業(yè)應(yīng)用項(xiàng)目,另一方面屬于高校的學(xué)術(shù)研究領(lǐng)域的項(xiàng)目。兩者在很多方面有明顯的區(qū)別。我們這里主要介紹數(shù)據(jù)倉庫的商業(yè)應(yīng)用,因?yàn)樯虡I(yè)應(yīng)用經(jīng)驗(yàn)存在比較大的價值。
數(shù)據(jù)倉庫的商業(yè)應(yīng)用技術(shù)之一:異構(gòu)數(shù)據(jù)集成技術(shù)
數(shù)據(jù)倉庫是集成的,數(shù)據(jù)倉庫的要素包括本身是集成的、面向主題的、只讀的、歷史變化的。
如下圖1:
例如,應(yīng)用Oracle作為數(shù)據(jù)倉庫的支撐環(huán)境,它有很多數(shù)據(jù)源,是由業(yè)務(wù)生產(chǎn)系統(tǒng)源源不斷產(chǎn)生的,可能包括DB2、SQL Server、MY SQL等等不同的源數(shù)據(jù)。
異構(gòu)數(shù)據(jù)集成的方法有很多,主要包括:
1. 如果Oracle作為數(shù)據(jù)倉庫是基于Windows環(huán)境的,通過MS ODBC開放數(shù)據(jù)庫互聯(lián);第三方ODBC開放數(shù)據(jù)庫互聯(lián),如Data Direct Connect for ODBC;專用數(shù)據(jù)網(wǎng)關(guān),如Transpatent Gateway;
2. 如果Oracle作為數(shù)據(jù)倉庫是基于Unix或Linux環(huán)境的,通過Unix ODBC開放數(shù)據(jù)庫互聯(lián);專用數(shù)據(jù)網(wǎng)關(guān)等。
3. 通過外部文件到數(shù)據(jù)庫的導(dǎo)出和導(dǎo)入。
數(shù)據(jù)挖掘、數(shù)據(jù)倉庫,近些年在國內(nèi)越來越熱、越來越流行,需求比較多,應(yīng)用也比較廣泛,它們常服務(wù)于商務(wù)智能活動。通俗地概括來講,我們可將它們統(tǒng)稱作數(shù)據(jù)分析、數(shù)據(jù)計算。
數(shù)據(jù)倉庫的商業(yè)應(yīng)用技術(shù)之二:數(shù)據(jù)的ETL抽取、變換、載入技術(shù)
1. 三層ETL體系
我們將數(shù)據(jù)的抽取、變換、載入技術(shù)稱為ETL技術(shù)。ETL技術(shù)中,按要素分為三層,即元數(shù)據(jù)層、數(shù)據(jù)操縱層、數(shù)據(jù)存儲層,三層交互作用。ETL工作首先需要在元數(shù)據(jù)層定義和構(gòu)建,同時也涉及到有關(guān)數(shù)據(jù)存儲的方式定義;基于元數(shù)據(jù)層的對象,ETL工作在數(shù)據(jù)操縱層對數(shù)據(jù)進(jìn)行實(shí)際操作,并把數(shù)據(jù)載入到數(shù)據(jù)存儲層;ETL工作還需要在數(shù)據(jù)存儲層做一些必要的數(shù)據(jù)管理和優(yōu)化工作。這就形成了ETL數(shù)據(jù)操縱的三層體系,如下圖。
元數(shù)據(jù) -> 數(shù)據(jù)操作層 -> 數(shù)據(jù)存儲層。
2. ETL遞進(jìn)式數(shù)據(jù)演變
ETL數(shù)據(jù)變換在實(shí)際項(xiàng)目中有很多的方法,很多階段,在此我們根據(jù)經(jīng)驗(yàn)分為4個階段為:
LANDING:抽取數(shù)據(jù)到Landing層中。
STAGING:根據(jù)我們業(yè)務(wù)的要求進(jìn)行數(shù)據(jù)變換到Staging層中。
DATA CENTER:再根據(jù)需求設(shè)計放在Data Center層(也是EDW企業(yè)級數(shù)據(jù)倉庫)中。
DATA MART:最后根據(jù)主題存放在Data Mart層中,如下圖。
3. 并行ETL架構(gòu)
并行處理技術(shù)也是數(shù)據(jù)庫的一項(xiàng)核心技術(shù),它可以提高ETL過程中在數(shù)據(jù)層處理的執(zhí)行效率,將大量的查詢過程分布到多個節(jié)點(diǎn)上同時執(zhí)行。一個并行處理體系結(jié)構(gòu)的數(shù)據(jù)倉庫系統(tǒng),不僅應(yīng)該確保底層硬件平臺的所有資源都得充分利用,而且應(yīng)該能夠?qū)⑦@些資源適當(dāng)分配給多個并發(fā)請求,以提高數(shù)據(jù)層的并發(fā)處理能力,如下圖。
4. ETL任務(wù)調(diào)度及備份
ETL任務(wù)調(diào)度(Scheduling Tasks)很重要,需要實(shí)時的備份。常用的ETL任務(wù)調(diào)度工具(Scheduling Tools)有:
Unix scripts:Corn有比較穩(wěn)定的可靠性。
Database Management Tool:Oracle Enterprise Manager
Third Party Tool:Control-M專用工具,專門為數(shù)據(jù)倉庫完成任務(wù),主要做ETL的Scheduling。
ETL任務(wù)調(diào)度備份方法有很多,如:
Scheduling Backup:Control-M as Master,
Unix Corn as Backup.
這樣,相當(dāng)于做了兩個Scheduling設(shè)計,互為備份。
數(shù)據(jù)挖掘、數(shù)據(jù)倉庫,近些年在國內(nèi)越來越熱、越來越流行,需求比較多,應(yīng)用也比較廣泛,它們常服務(wù)于商務(wù)智能活動。通俗地概括來講,我們可將它們統(tǒng)稱作數(shù)據(jù)分析、數(shù)據(jù)計算。
數(shù)據(jù)倉庫的商業(yè)應(yīng)用技術(shù)之三:數(shù)據(jù)倉庫的架構(gòu)技術(shù)
1. 多層次企業(yè)級數(shù)據(jù)倉庫:DataMart-> EDW
在這個數(shù)據(jù)倉庫架構(gòu)的模型中,左邊的是數(shù)據(jù)源通過變換到數(shù)據(jù)集市中,然后從數(shù)據(jù)集市再到企業(yè)級數(shù)據(jù)倉庫(EDW)中,最后直接給終端用戶使用。多層次主要體現(xiàn)在ETL和數(shù)據(jù)集成上,這個方法的優(yōu)點(diǎn)在于建立了多個數(shù)據(jù)集市,它體現(xiàn)了一個分布式集成的概念,很大程度降低了企業(yè)級數(shù)據(jù)倉庫建設(shè)的風(fēng)險,更減少了資源投入,如下圖。
2. 多層次企業(yè)級數(shù)據(jù)倉庫: EDW -> DataMart
這個模型一開始就設(shè)計它的企業(yè)級數(shù)據(jù)倉庫(EDW),這種方法針對于一些涵蓋了多個業(yè)務(wù)系統(tǒng)、面向不同用戶的需求、針對數(shù)據(jù)平臺也不一樣的企業(yè),例如:銀行。用這個方法,把所有的業(yè)務(wù)系統(tǒng)考慮入內(nèi),通??紤]整體設(shè)計,然后再分發(fā)出去。DataMart劃分方法有很多種。它的優(yōu)點(diǎn)是集成度比較好,總體設(shè)計一開始就把所有的數(shù)據(jù)源都放到企業(yè)級數(shù)據(jù)倉庫。缺點(diǎn)是風(fēng)險高,投入也相對很高,如下圖。
通常來說,實(shí)際項(xiàng)目中采用第一種方法的比較多。
3. 近實(shí)時的數(shù)據(jù)倉庫
數(shù)據(jù)倉庫是動態(tài)的,是隨時間變化的。應(yīng)用數(shù)據(jù)倉庫,我們可以每天、每個月、每年分段來調(diào)取數(shù)據(jù),如下圖。
近實(shí)時(Near Real Time)的要求是比較高的,例如我們建立了一個數(shù)據(jù)倉庫是全球性的,數(shù)據(jù)倉庫中心在多倫多,數(shù)據(jù)源分布在很多地方如北美、歐洲,它需要一個近實(shí)時的操作系統(tǒng)。近實(shí)時的概念是操作系統(tǒng)和業(yè)務(wù)系統(tǒng)產(chǎn)生的數(shù)據(jù),在一小時之內(nèi)完成所有ETL任務(wù),最后進(jìn)入數(shù)據(jù)倉庫。它對數(shù)據(jù)源的業(yè)務(wù)系統(tǒng)有比較高的要求,如數(shù)據(jù)的穩(wěn)定性、可靠性、網(wǎng)絡(luò)傳輸速率等,同時也涵蓋了很多方面的專門技術(shù)來解決實(shí)時性。
4. 后復(fù)合數(shù)據(jù)集市
由于業(yè)務(wù)的擴(kuò)展,企業(yè)增加了一個新的生產(chǎn)系統(tǒng),從而誕生了新的數(shù)據(jù)源。我們需要建立一個新的數(shù)據(jù)源(New Data Source)通過ETL工作集成到數(shù)據(jù)集市(DMART)中,并與企業(yè)級數(shù)據(jù)倉庫(EDW)結(jié)合到一起,最后提供給終端用戶,如下圖。
內(nèi)容導(dǎo)航
數(shù)據(jù)倉庫的商業(yè)應(yīng)用技術(shù)之四:數(shù)據(jù)倉庫的優(yōu)化技術(shù)
數(shù)據(jù)倉庫優(yōu)化包括很多內(nèi)容,包括數(shù)據(jù)庫實(shí)例優(yōu)化、數(shù)據(jù)庫的設(shè)計優(yōu)化、數(shù)據(jù)倉庫設(shè)計(建模)優(yōu)化、數(shù)據(jù)存儲優(yōu)化、存儲過程優(yōu)化、中間層支持優(yōu)化、應(yīng)用支持優(yōu)化(智能報表、即時查詢、數(shù)據(jù)挖掘等應(yīng)用)。
數(shù)據(jù)倉庫的客戶有兩個常見要求,一個要求是快,還有一個要求是穩(wěn)定??煊泻芏喾矫?,在核心的數(shù)據(jù)庫,有太多的因素影響速度,所以優(yōu)化時要各個方面都要考慮。
1. 數(shù)據(jù)倉庫設(shè)計(建模)優(yōu)化
在設(shè)計的時候有很多的情況發(fā)生,在這里重點(diǎn)提一點(diǎn),數(shù)據(jù)倉庫還要考慮一個時間的因素,有的時候開始設(shè)計的時候性能非常好,但隨著系統(tǒng)長時間的運(yùn)行,發(fā)生了很多無法解決的、由設(shè)計造成的問題,如性能問題。曾經(jīng)有歐洲的一家汽車企業(yè),設(shè)計師對數(shù)據(jù)倉庫的模型設(shè)計想法非常好,但是不適宜一個長時間的運(yùn)行,數(shù)據(jù)增長以后性能大幅下降,數(shù)據(jù)運(yùn)行可能會非常的慢,到了無法容忍的地步,結(jié)果導(dǎo)致運(yùn)行兩年以后就不行了。想要再進(jìn)行結(jié)構(gòu)修改也不可行了,必須要全部重來。
2. 數(shù)據(jù)存儲優(yōu)化
數(shù)據(jù)存儲優(yōu)化主要是如何盡量減小存儲空間和提升性能。這點(diǎn)很重要,數(shù)據(jù)倉庫往往都是犧牲空間來提升速度。但是也需要優(yōu)化,很多問題在一些小的數(shù)據(jù)倉庫系統(tǒng)可能都不存在,但是在比較大型的數(shù)據(jù)倉庫系統(tǒng)中就會出現(xiàn)了。數(shù)據(jù)倉庫數(shù)據(jù)不斷增加,當(dāng)使用時間比較長之后就會造成數(shù)據(jù)量過大、性能會大幅下降,為了避免這樣的情況,我們在開始設(shè)計時,就要考慮到后續(xù)的使用,需要進(jìn)行數(shù)據(jù)存儲優(yōu)化,主要包括:
Data Block Design:基本存儲單位的設(shè)計。
Table Spacing:表空間的設(shè)計。
Table Partitioning:表空間的優(yōu)化。
Indexing:索引的設(shè)計。
Index Partitioning:索引優(yōu)化。
Data Compressing:數(shù)據(jù)壓縮(同時會犧牲一些性能)。
3. 存儲過程優(yōu)化:就是后臺的一些存儲過程的優(yōu)化。
4. 中間層支持優(yōu)化:WEB SERVER之類的系統(tǒng)優(yōu)化。
5. 應(yīng)用支持優(yōu)化:主要有智能報表、即時查詢、數(shù)據(jù)挖掘等應(yīng)用,也就是前臺的一些應(yīng)用也是需要優(yōu)化的。一個REQUEST發(fā)出去,返回的RESULT,這個過程是有很多的步驟,也是需要進(jìn)行優(yōu)化處理的。
另外,還需要在一些方面對數(shù)據(jù)倉庫進(jìn)行優(yōu)化,如:異構(gòu)數(shù)據(jù)庫互聯(lián)優(yōu)化。異構(gòu)數(shù)據(jù)庫互聯(lián),做數(shù)據(jù)倉庫第一步就會碰到,數(shù)據(jù)倉庫肯定有很多不同的數(shù)據(jù)源。具體如下圖所示。
上述例子就比較復(fù)雜,既有不同數(shù)據(jù)庫,又有不同操作系統(tǒng)。異構(gòu)數(shù)據(jù)庫互聯(lián)優(yōu)化的案例:
A、文件導(dǎo)出導(dǎo)入 -〉開放數(shù)據(jù)庫互聯(lián)
由文件導(dǎo)出導(dǎo)入方案改為開放數(shù)據(jù)庫互聯(lián)方案,可優(yōu)化異構(gòu)數(shù)據(jù)庫互聯(lián)的性能。例如:Windows ODBC, Unix ODBC,性能和可控性上肯定會比較好一點(diǎn),但是有的時候并不是這樣簡單的要求,還需要考慮數(shù)據(jù)安全性的要求。例如某些情況下,條件不允許做數(shù)據(jù)庫的互聯(lián)。還有業(yè)務(wù)系統(tǒng)的健壯性能也要考慮。
B、通用ODBC -〉第三方專用ODBC
由ODBC方案改為第三方專用ODBC方案,可優(yōu)化異構(gòu)數(shù)據(jù)庫互聯(lián)的性能。例如: MS ODBC -> Data Direct ODBC。
C、開放數(shù)據(jù)庫互聯(lián)-〉專用數(shù)據(jù)網(wǎng)關(guān)
由ODBC方案改為專用數(shù)據(jù)網(wǎng)關(guān)方案,可優(yōu)化異構(gòu)數(shù)據(jù)庫互聯(lián)的性能。例如: MS ODBC -> Transparent Gateway。