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

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)倉庫架構(gòu)設(shè)計的一點概念
數(shù)據(jù)倉庫架構(gòu)設(shè)計的一點概念
2018-08-16
收藏

數(shù)據(jù)倉庫架構(gòu)設(shè)計的一點概念

1、數(shù)據(jù)倉庫所處環(huán)節(jié)

在一個成體系、結(jié)構(gòu)化的數(shù)據(jù)應(yīng)用場景下,數(shù)據(jù)和處理有四個層次: 操作層、數(shù)據(jù)倉庫層、部門/數(shù)據(jù)集市層、個體層。

操作層

操作層是指為具體業(yè)務(wù)提供實時響應(yīng)的各個業(yè)務(wù)系統(tǒng),比如常見的訂單系統(tǒng)、ERP、用戶中心等等具體業(yè)務(wù)系統(tǒng),這些系統(tǒng)中的數(shù)據(jù)一般都是存入關(guān)系型數(shù)據(jù)庫。它們是數(shù)據(jù)的來源。

數(shù)據(jù)倉庫

數(shù)據(jù)倉庫收集操作層各個業(yè)務(wù)系統(tǒng)中的數(shù)據(jù),進行統(tǒng)一格式、統(tǒng)一計量單位,規(guī)整有序地組織在一起,為數(shù)據(jù)分析、數(shù)據(jù)挖掘等需求提供數(shù)據(jù)支持。

數(shù)據(jù)集市

部門/數(shù)據(jù)集市層是各個部門根據(jù)自己的數(shù)據(jù)分析需求,從數(shù)據(jù)倉庫中抽取自己部門所關(guān)心的數(shù)據(jù)報表。

個體層

個體層中的不同角色個體有讀取不同數(shù)據(jù)的權(quán)限。

2、數(shù)據(jù)倉庫概念

數(shù)據(jù)倉庫是一個面向主題的、集成的、非易失的、隨時間變化的,用來支持管理人員決策的數(shù)據(jù)集合,數(shù)據(jù)倉庫中包含了粒度化的企業(yè)數(shù)據(jù)。

面向主題的

數(shù)據(jù)倉庫不同于傳統(tǒng)的操作型系統(tǒng),傳統(tǒng)的操作型系統(tǒng)中的數(shù)據(jù)是圍繞功能進行組織的,而數(shù)據(jù)倉庫是針對于某一個主題進行分析數(shù)據(jù)用的,比如針對于銷售主題、針對于客戶主題等等。

集成的

不同產(chǎn)品或者系統(tǒng)中的數(shù)據(jù)是分散在各自系統(tǒng)中的,并且格式不一致、計量單位不一致。而數(shù)據(jù)倉庫必須將多個分散的數(shù)據(jù)統(tǒng)一為一致的、無歧義的數(shù)據(jù)格式后,并解決了命名沖突、計量單位不一致等問題,然后將數(shù)據(jù)整合在一起,才能稱這個數(shù)據(jù)倉庫是集成的。

隨時間變化的

數(shù)據(jù)倉庫要體現(xiàn)出數(shù)據(jù)隨時間變化的情況,并且可以反映在過去某一個時間點上數(shù)據(jù)是什么樣子的,也就是隨時間變化的含義。而傳統(tǒng)的操作型系統(tǒng),只能保存當(dāng)前數(shù)據(jù),體現(xiàn)當(dāng)前的情況。

非易失的

非易失是指:數(shù)據(jù)一旦進入數(shù)據(jù)倉庫,就不能再被改變了,當(dāng)在操作型系統(tǒng)中把數(shù)據(jù)改變后,再進入數(shù)據(jù)倉庫就會產(chǎn)生新的記錄。這樣數(shù)據(jù)倉庫就保留了數(shù)據(jù)變化的軌跡。

3、一般架構(gòu)

1、 STAGE層

業(yè)務(wù)系統(tǒng)的數(shù)據(jù)接入到數(shù)據(jù)倉庫時,首先將業(yè)務(wù)數(shù)據(jù)倉儲到STAGE層中,Stage層作為一個臨時緩沖區(qū),并屏蔽對業(yè)務(wù)系統(tǒng)的干擾。 
STAGE層中的表結(jié)構(gòu)和數(shù)據(jù)定義一般與業(yè)務(wù)系統(tǒng)保持一致。 
Stage中的數(shù)據(jù)可以每次全量接入也可以每次增量接入,一般都有會數(shù)據(jù)老化的機制,不用長期保存。 
Stage的數(shù)據(jù)不會對外部開放。

2、 ODS層

ODS才是數(shù)據(jù)倉庫真正意義上的基礎(chǔ)數(shù)據(jù),數(shù)據(jù)是被清洗過的,ODS層的數(shù)據(jù)是定義統(tǒng)一的、可以體現(xiàn)歷史的、被長期保存的數(shù)據(jù)。 
ODS層的數(shù)據(jù)粒度與Stage層數(shù)據(jù)粒度是一致的。 
Stage層中的數(shù)據(jù)是完全形式的源數(shù)據(jù),需要進行清洗才能進入ODS層,所以說ODS層是數(shù)據(jù)倉庫格式規(guī)整的基礎(chǔ)數(shù)據(jù),為上層服務(wù)。

3、 MDS層

MDS是數(shù)據(jù)倉庫中間層,數(shù)據(jù)是以主題域劃分的,并根據(jù)業(yè)務(wù)進行數(shù)據(jù)關(guān)聯(lián)形成寬表,但是不對數(shù)據(jù)進行聚合處理,MDS層數(shù)據(jù)為數(shù)據(jù)倉庫的上層的統(tǒng)計、分析、挖掘和應(yīng)用提供直接支持。 
MDS層的數(shù)據(jù)也可以執(zhí)行一定的老化策略。

4、 ADS層

ADS層是數(shù)據(jù)倉庫的應(yīng)用層,一般以業(yè)務(wù)線或者部門劃分庫。這一層可以為各個業(yè)務(wù)線創(chuàng)建一個數(shù)據(jù)庫。 
ADS層的數(shù)據(jù)是基于MDS層數(shù)據(jù)生成的業(yè)務(wù)報表數(shù)據(jù),可以直接作為數(shù)據(jù)倉庫的輸出導(dǎo)出到外部的操作型系統(tǒng)中(MySQL、MSSQL、Hbase、Elasticsearch等)。

5、 DIM層

DIM層是數(shù)據(jù)倉庫數(shù)據(jù)中,各層公用的維度數(shù)據(jù)。比如:省市縣數(shù)據(jù)。

6、 ETL調(diào)度系統(tǒng)

對接入數(shù)據(jù)倉庫的數(shù)據(jù)進行清洗、數(shù)據(jù)倉庫各層間數(shù)據(jù)流轉(zhuǎn)都需要大量的程序任務(wù)來操作,這些任務(wù)一般都是定時的,并且之間都是有前后依賴關(guān)系的,為了能保證任務(wù)的有序執(zhí)行,就需要一個ETL調(diào)度系統(tǒng)來管理。

7、 元數(shù)據(jù)管理系統(tǒng)

描述數(shù)據(jù)的數(shù)據(jù)叫做元數(shù)據(jù),元數(shù)據(jù)信息一般包括表名、表描述信息、所在數(shù)據(jù)庫、表結(jié)構(gòu)、存儲位置等基本信息,另外還有表之間的血緣關(guān)系信息、每天的增量信息、表結(jié)構(gòu)修改記錄信息等等。 
數(shù)據(jù)倉庫中有大量的表,元數(shù)據(jù)管理系統(tǒng)就是用來收集、存儲、查詢數(shù)據(jù)倉庫中元數(shù)據(jù)的工具,這個系統(tǒng)為數(shù)據(jù)使用方提供了極大的便利。

4、設(shè)計的兩個重要問題1、 粒度

粒度是指數(shù)據(jù)倉庫中數(shù)據(jù)單元的細節(jié)程度或綜合程度的級別。粒度會深刻地影響數(shù)據(jù)量的大小以及數(shù)據(jù)倉庫的查詢能力。 
細節(jié)程度越高,粒度級別就越低,查詢就越靈活;相反,細節(jié)程度越低,粒度級別就越高。 
雙重粒度: 
雙重粒度是存儲兩個粒度下的數(shù)據(jù):一個是全量的細節(jié)數(shù)據(jù);另一個是輕度綜合的數(shù)據(jù)。

2、 分區(qū)

數(shù)據(jù)分區(qū)是指把數(shù)據(jù)分散到可獨立處理的分離物理單元中去。恰當(dāng)?shù)剡M行分區(qū)可以給數(shù)據(jù)倉庫帶來多個方面的好處: 
(1) 數(shù)據(jù)裝載 (2) 數(shù)據(jù)訪問 (3) 數(shù)據(jù)存檔 (4) 數(shù)據(jù)刪除 (5) 數(shù)據(jù)監(jiān)控 (6) 數(shù)據(jù)存儲


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

若不方便掃碼,搜微信號: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(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 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){ //倒計時完成 $(".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); }