99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁職業(yè)發(fā)展北美數(shù)據(jù)倉庫的常用技術(shù)_數(shù)據(jù)分析師
北美數(shù)據(jù)倉庫的常用技術(shù)_數(shù)據(jù)分析師
2015-03-11
收藏

北美數(shù)據(jù)倉庫的常用技術(shù)_數(shù)據(jù)分析師


數(shù)據(jù)挖掘、數(shù)據(jù)倉庫,近些年在國內(nèi)越來越熱、越來越流行,需求比較多,應(yīng)用也比較廣泛,它們常服務(wù)于商務(wù)智能活動(dòng)。通俗地概括來講,我們可將它們統(tǒng)稱作數(shù)據(jù)分析、數(shù)據(jù)計(jì)算。

我們介紹數(shù)據(jù)倉庫在商業(yè)應(yīng)用,主要涉及有兩個(gè)方面,一個(gè)是有關(guān)數(shù)據(jù)倉庫的常用技術(shù),另一個(gè)是有關(guān)數(shù)據(jù)倉庫的應(yīng)用案例。同時(shí)也涉及數(shù)據(jù)倉庫的兩個(gè)背景,在我們經(jīng)歷的北美項(xiàng)目中,一個(gè)主要方面屬于實(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)存在比較大的價(jià)值。

數(shù)據(jù)倉庫的商業(yè)應(yīng)用技術(shù)之一:異構(gòu)數(shù)據(jù)集成技術(shù)

數(shù)據(jù)倉庫是集成的,數(shù)據(jù)倉庫的要素包括本身是集成的、面向主題的、只讀的、歷史變化的。

如下圖1:

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

例如,應(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ù)倉庫的商業(yè)應(yīng)用技術(shù)之二:數(shù)據(jù)的ETL抽取、變換、載入技術(shù)

1. 三層ETL體系

我們將數(shù)據(jù)的抽取、變換、載入技術(shù)稱為ETL技術(shù)。ETL技術(shù)中,按要素分為三層,即元數(shù)據(jù)層、數(shù)據(jù)操縱層、數(shù)據(jù)存儲(chǔ)層,三層交互作用。ETL工作首先需要在元數(shù)據(jù)層定義和構(gòu)建,同時(shí)也涉及到有關(guān)數(shù)據(jù)存儲(chǔ)的方式定義;基于元數(shù)據(jù)層的對(duì)象,ETL工作在數(shù)據(jù)操縱層對(duì)數(shù)據(jù)進(jìn)行實(shí)際操作,并把數(shù)據(jù)載入到數(shù)據(jù)存儲(chǔ)層;ETL工作還需要在數(shù)據(jù)存儲(chǔ)層做一些必要的數(shù)據(jù)管理和優(yōu)化工作。這就形成了ETL數(shù)據(jù)操縱的三層體系,如下圖。

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

元數(shù)據(jù) -> 數(shù)據(jù)操作層 -> 數(shù)據(jù)存儲(chǔ)層。

2. ETL遞進(jìn)式數(shù)據(jù)演變

ETL數(shù)據(jù)變換在實(shí)際項(xiàng)目中有很多的方法,很多階段,在此我們根據(jù)經(jīng)驗(yàn)分為4個(gè)階段為:

LANDING:抽取數(shù)據(jù)到Landing層中。

STAGING:根據(jù)我們業(yè)務(wù)的要求進(jìn)行數(shù)據(jù)變換到Staging層中。

DATA CENTER:再根據(jù)需求設(shè)計(jì)放在Data Center層(也是EDW企業(yè)級(jí)數(shù)據(jù)倉庫)中。

DATA MART:最后根據(jù)主題存放在Data Mart層中,如下圖。

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

3. 并行ETL架構(gòu)

并行處理技術(shù)也是數(shù)據(jù)庫的一項(xiàng)核心技術(shù),它可以提高ETL過程中在數(shù)據(jù)層處理的執(zhí)行效率,將大量的查詢過程分布到多個(gè)節(jié)點(diǎn)上同時(shí)執(zhí)行。一個(gè)并行處理體系結(jié)構(gòu)的數(shù)據(jù)倉庫系統(tǒng),不僅應(yīng)該確保底層硬件平臺(tái)的所有資源都得充分利用,而且應(yīng)該能夠?qū)⑦@些資源適當(dāng)分配給多個(gè)并發(fā)請求,以提高數(shù)據(jù)層的并發(fā)處理能力,如下圖。

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

4. ETL任務(wù)調(diào)度及備份

ETL任務(wù)調(diào)度(Scheduling Tasks)很重要,需要實(shí)時(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)于做了兩個(gè)Scheduling設(shè)計(jì),互為備份。

數(shù)據(jù)倉庫的商業(yè)應(yīng)用技術(shù)之三:數(shù)據(jù)倉庫的架構(gòu)技術(shù)

1. 多層次企業(yè)級(jí)數(shù)據(jù)倉庫:DataMart-> EDW

在這個(gè)數(shù)據(jù)倉庫架構(gòu)的模型中,左邊的是數(shù)據(jù)源通過變換到數(shù)據(jù)集市中,然后從數(shù)據(jù)集市再到企業(yè)級(jí)數(shù)據(jù)倉庫(EDW)中,最后直接給終端用戶使用。多層次主要體現(xiàn)在ETL和數(shù)據(jù)集成上,這個(gè)方法的優(yōu)點(diǎn)在于建立了多個(gè)數(shù)據(jù)集市,它體現(xiàn)了一個(gè)分布式集成的概念,很大程度降低了企業(yè)級(jí)數(shù)據(jù)倉庫建設(shè)的風(fēng)險(xiǎn),更減少了資源投入,如下圖。

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

2. 多層次企業(yè)級(jí)數(shù)據(jù)倉庫: EDW -> DataMart

這個(gè)模型一開始就設(shè)計(jì)它的企業(yè)級(jí)數(shù)據(jù)倉庫(EDW),這種方法針對(duì)于一些涵蓋了多個(gè)業(yè)務(wù)系統(tǒng)、面向不同用戶的需求、針對(duì)數(shù)據(jù)平臺(tái)也不一樣的企業(yè),例如:銀行。用這個(gè)方法,把所有的業(yè)務(wù)系統(tǒng)考慮入內(nèi),通常考慮整體設(shè)計(jì),然后再分發(fā)出去。DataMart劃分方法有很多種。它的優(yōu)點(diǎn)是集成度比較好,總體設(shè)計(jì)一開始就把所有的數(shù)據(jù)源都放到企業(yè)級(jí)數(shù)據(jù)倉庫。缺點(diǎn)是風(fēng)險(xiǎn)高,投入也相對(duì)很高,如下圖。

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

通常來說,實(shí)際項(xiàng)目中采用第一種方法的比較多。

3. 近實(shí)時(shí)的數(shù)據(jù)倉庫

數(shù)據(jù)倉庫是動(dòng)態(tài)的,是隨時(shí)間變化的。應(yīng)用數(shù)據(jù)倉庫,我們可以每天、每個(gè)月、每年分段來調(diào)取數(shù)據(jù),如下圖。

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

近實(shí)時(shí)(Near Real Time)的要求是比較高的,例如我們建立了一個(gè)數(shù)據(jù)倉庫是全球性的,數(shù)據(jù)倉庫中心在多倫多,數(shù)據(jù)源分布在很多地方如北美、歐洲,它需要一個(gè)近實(shí)時(shí)的操作系統(tǒng)。近實(shí)時(shí)的概念是操作系統(tǒng)和業(yè)務(wù)系統(tǒng)產(chǎn)生的數(shù)據(jù),在一小時(shí)之內(nèi)完成所有ETL任務(wù),最后進(jìn)入數(shù)據(jù)倉庫。它對(duì)數(shù)據(jù)源的業(yè)務(wù)系統(tǒng)有比較高的要求,如數(shù)據(jù)的穩(wěn)定性、可靠性、網(wǎng)絡(luò)傳輸速率等,同時(shí)也涵蓋了很多方面的專門技術(shù)來解決實(shí)時(shí)性。

4. 后復(fù)合數(shù)據(jù)集市

由于業(yè)務(wù)的擴(kuò)展,企業(yè)增加了一個(gè)新的生產(chǎn)系統(tǒng),從而誕生了新的數(shù)據(jù)源。我們需要建立一個(gè)新的數(shù)據(jù)源(New Data Source)通過ETL工作集成到數(shù)據(jù)集市(DMART)中,并與企業(yè)級(jí)數(shù)據(jù)倉庫(EDW)結(jié)合到一起,最后提供給終端用戶,如下圖。

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

數(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è)計(jì)優(yōu)化、數(shù)據(jù)倉庫設(shè)計(jì)(建模)優(yōu)化、數(shù)據(jù)存儲(chǔ)優(yōu)化、存儲(chǔ)過程優(yōu)化、中間層支持優(yōu)化、應(yīng)用支持優(yōu)化(智能報(bào)表、即時(shí)查詢、數(shù)據(jù)挖掘等應(yīng)用)。

數(shù)據(jù)倉庫的客戶有兩個(gè)常見要求,一個(gè)要求是快,還有一個(gè)要求是穩(wěn)定。快有很多方面,在核心的數(shù)據(jù)庫,有太多的因素影響速度,所以優(yōu)化時(shí)要各個(gè)方面都要考慮。

1. 數(shù)據(jù)倉庫設(shè)計(jì)(建模)優(yōu)化

在設(shè)計(jì)的時(shí)候有很多的情況發(fā)生,在這里重點(diǎn)提一點(diǎn),數(shù)據(jù)倉庫還要考慮一個(gè)時(shí)間的因素,有的時(shí)候開始設(shè)計(jì)的時(shí)候性能非常好,但隨著系統(tǒng)長時(shí)間的運(yùn)行,發(fā)生了很多無法解決的、由設(shè)計(jì)造成的問題,如性能問題。曾經(jīng)有歐洲的一家汽車企業(yè),設(shè)計(jì)師對(duì)數(shù)據(jù)倉庫的模型設(shè)計(jì)想法非常好,但是不適宜一個(gè)長時(shí)間的運(yùn)行,數(shù)據(jù)增長以后性能大幅下降,數(shù)據(jù)運(yùn)行可能會(huì)非常的慢,到了無法容忍的地步,結(jié)果導(dǎo)致運(yùn)行兩年以后就不行了。想要再進(jìn)行結(jié)構(gòu)修改也不可行了,必須要全部重來。

2. 數(shù)據(jù)存儲(chǔ)優(yōu)化

數(shù)據(jù)存儲(chǔ)優(yōu)化主要是如何盡量減小存儲(chǔ)空間和提升性能。這點(diǎn)很重要,數(shù)據(jù)倉庫往往都是犧牲空間來提升速度。但是也需要優(yōu)化,很多問題在一些小的數(shù)據(jù)倉庫系統(tǒng)可能都不存在,但是在比較大型的數(shù)據(jù)倉庫系統(tǒng)中就會(huì)出現(xiàn)了。數(shù)據(jù)倉庫數(shù)據(jù)不斷增加,當(dāng)使用時(shí)間比較長之后就會(huì)造成數(shù)據(jù)量過大、性能會(huì)大幅下降,為了避免這樣的情況,我們在開始設(shè)計(jì)時(shí),就要考慮到后續(xù)的使用,需要進(jìn)行數(shù)據(jù)存儲(chǔ)優(yōu)化,主要包括:

Data Block Design:基本存儲(chǔ)單位的設(shè)計(jì)。

Table Spacing:表空間的設(shè)計(jì)。

Table Partitioning:表空間的優(yōu)化。

Indexing:索引的設(shè)計(jì)。

Index Partitioning:索引優(yōu)化。

Data Compressing:數(shù)據(jù)壓縮(同時(shí)會(huì)犧牲一些性能)。

3. 存儲(chǔ)過程優(yōu)化:就是后臺(tái)的一些存儲(chǔ)過程的優(yōu)化。

4. 中間層支持優(yōu)化:WEB SERVER之類的系統(tǒng)優(yōu)化。

5. 應(yīng)用支持優(yōu)化:主要有智能報(bào)表、即時(shí)查詢、數(shù)據(jù)挖掘等應(yīng)用,也就是前臺(tái)的一些應(yīng)用也是需要優(yōu)化的。一個(gè)REQUEST發(fā)出去,返回的RESULT,這個(gè)過程是有很多的步驟,也是需要進(jìn)行優(yōu)化處理的。

另外,還需要在一些方面對(duì)數(shù)據(jù)倉庫進(jìn)行優(yōu)化,如:異構(gòu)數(shù)據(jù)庫互聯(lián)優(yōu)化。異構(gòu)數(shù)據(jù)庫互聯(lián),做數(shù)據(jù)倉庫第一步就會(huì)碰到,數(shù)據(jù)倉庫肯定有很多不同的數(shù)據(jù)源。具體如下圖所示。

<a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫</a>

上述例子就比較復(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,性能和可控性上肯定會(huì)比較好一點(diǎn),但是有的時(shí)候并不是這樣簡單的要求,還需要考慮數(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。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }