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

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)倉庫在異構數(shù)據(jù)庫集成中的應用
數(shù)據(jù)倉庫在異構數(shù)據(jù)庫集成中的應用
2018-05-20
收藏

數(shù)據(jù)倉庫在異構數(shù)據(jù)庫集成中的應用

1、引言


由于企業(yè)信息系統(tǒng)是逐步建立起來的,因此基于不同時期的計算機技術而建立起來的各領域信息系統(tǒng)采用了不同的數(shù)據(jù)庫系統(tǒng),且自成一體。并以不同的數(shù)據(jù)模式描述數(shù)據(jù),使用不同的語言描述數(shù)據(jù)存儲和操縱事務,它們無法通過計算機網(wǎng)絡實現(xiàn)系統(tǒng)間的信息交換和結合,因此企業(yè)信息系統(tǒng)中形成了多個異構的、分散的數(shù)據(jù)庫系統(tǒng),并出現(xiàn)了大量的信息孤島。在現(xiàn)有的異構數(shù)據(jù)庫系統(tǒng)的基礎上,為了有效地實現(xiàn)各個數(shù)據(jù)庫系統(tǒng)之間的信息共享、傳遞和反饋,解決企業(yè)信息系統(tǒng)中的信息孤島現(xiàn)象,我們有必要對數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)進行再加工,集成異構數(shù)據(jù)庫系統(tǒng),形成綜合的、面向分析的操作平臺,從而更好地支持企業(yè)的決策分析。數(shù)據(jù)倉庫技術就是解決異構數(shù)據(jù)庫信息集成的有效方案,因為數(shù)據(jù)倉庫可以從異構的數(shù)據(jù)庫系統(tǒng)中使用統(tǒng)一的全局模式來描述數(shù)據(jù),并將這些數(shù)據(jù)集成在數(shù)據(jù)倉庫中,用戶可以通過數(shù)據(jù)倉庫提供的統(tǒng)一的數(shù)據(jù)接口進行統(tǒng)計分析,最終支持決策者的決策過程。


2、數(shù)據(jù)倉庫技術


數(shù)據(jù)倉庫是面向主題的、集成的、隨時間變化的、非易失性的數(shù)據(jù)集合,它用于支持管理層的決策過程。數(shù)據(jù)倉庫的創(chuàng)建和使用都是圍繞著主題的,數(shù)據(jù)倉庫中的數(shù)據(jù)不是將業(yè)務處理系統(tǒng)中的數(shù)據(jù)簡單集合,而是對各種源數(shù)據(jù)進行抽取、篩選、清理、綜合而得到的數(shù)據(jù)集合目。數(shù)據(jù)倉庫中所存儲的數(shù)據(jù)不經(jīng)常進行更新處理,它主要用于查詢和分析。與傳統(tǒng)的數(shù)據(jù)庫相比,數(shù)據(jù)倉庫的主要特點表現(xiàn)在:集成了面向主題的綜合數(shù)據(jù)、帶有數(shù)據(jù)集成性質、數(shù)據(jù)不常更新、數(shù)據(jù)是隨時間不斷加載的。


3、異構數(shù)據(jù)庫集成的實現(xiàn)方案


數(shù)據(jù)倉庫技術作為異構數(shù)據(jù)庫集成的解決方案,不僅可以通過數(shù)據(jù)抽取和轉移工具將位于不同地域、不同操作系統(tǒng)平臺、不同數(shù)據(jù)結構的數(shù)據(jù)按照一定的數(shù)據(jù)模式集成在一起,同時能夠保證數(shù)據(jù)的一致性。下面將給出異構數(shù)據(jù)庫集成的解決方案。


3.1異構數(shù)據(jù)庫的集成方法


該方法的基本思想是:在原有的不同領域信息系統(tǒng)的基礎上,按照決策者的決策需求確定查詢主題,定義基于數(shù)據(jù)倉庫的新的數(shù)據(jù)全局模式,從異構數(shù)據(jù)庫中通過數(shù)據(jù)抽取和轉換工具將數(shù)據(jù)抽取出來,以一定的格式裝載到數(shù)據(jù)倉庫中。同時按照決策者和用戶的查詢需求編寫應用程序,最后以查詢報告或表格形式反饋給決策者或用戶。


3.2定義新的數(shù)據(jù)模型


由于數(shù)據(jù)倉庫注重的是數(shù)據(jù)查詢,設計的目的是使用戶能夠盡可能地直接訪問到數(shù)據(jù),因此數(shù)據(jù)是按照決策分析的主題來組織的,每個主題對應一個宏觀的分析領域。因此數(shù)據(jù)的概念模型是多維數(shù)據(jù)模型,這樣可以用多維分析的方法從多角度、多層次對數(shù)據(jù)進行統(tǒng)計分析


為實現(xiàn)異構數(shù)據(jù)庫的數(shù)據(jù)集成, 須首先通過數(shù)據(jù)的抽取和轉換工具將位于不同操作系統(tǒng)平臺、不同數(shù)據(jù)組織形式的數(shù)據(jù)按照 定的數(shù)據(jù)模型集成到數(shù)據(jù)倉庫中,其目的就是保證數(shù)據(jù)倉庫中數(shù)據(jù)的一致性。


[page]    (1)抽取


為了將來自不同數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)集成到數(shù)據(jù)倉庫中,必須首先從外部數(shù)據(jù)庫將有關數(shù)據(jù)抽取出來。數(shù)據(jù)的抽取是數(shù)據(jù)倉庫成功的關鍵。為了將數(shù)據(jù)抽取出來,我們必須按照已確定的新的數(shù)據(jù)模型來抽取數(shù)據(jù),因為在新的數(shù)據(jù)模型中描述了哪些數(shù)據(jù)需要抽取。


在此基礎上我們需要編寫數(shù)據(jù)的抽取程序。該抽取程序的基本功能就是利用OBDC技術訪問異構數(shù)據(jù)庫并將不同數(shù)據(jù)結構的數(shù)據(jù)抽取出來。具體的實現(xiàn)方法是:


① 利用ODBC數(shù)據(jù)源管理器根據(jù)不同的數(shù)據(jù)庫系統(tǒng)創(chuàng)建相應的數(shù)據(jù)源;


② 在相應的抽取程序中根據(jù)該數(shù)據(jù)源讀取源數(shù)據(jù)庫中的數(shù)據(jù)。


(2)轉換


從源數(shù)據(jù)庫中抽取出來的數(shù)據(jù)必須依據(jù)事先定義好的標準數(shù)據(jù)格式進行數(shù)據(jù)的轉換。由于企業(yè)信息系統(tǒng)中同一個數(shù)據(jù)可能存放在不同子系統(tǒng)的數(shù)據(jù)庫中,這些數(shù)據(jù)庫之間是分散和異構的,因此就會出現(xiàn)數(shù)據(jù)名稱、數(shù)據(jù)單位、數(shù)據(jù)類型甚至數(shù)據(jù)值不一致的情況,如果這些數(shù)據(jù)被抽取到數(shù)據(jù)倉庫中,必然會造成數(shù)據(jù)的不真實性,為此有必要對這些抽取的數(shù)據(jù)進行徹底地轉換。


數(shù)據(jù)轉換的基本思想是:首先建立數(shù)據(jù)轉換規(guī)則集和元數(shù)據(jù)庫。抽取出來的數(shù)據(jù)必須按照數(shù)據(jù)轉換規(guī)則集和元數(shù)據(jù)庫中定義的標準對數(shù)據(jù)進行轉換或修補以適應新標準,然后才能將數(shù)據(jù)裝載到數(shù)據(jù)倉庫中。數(shù)據(jù)轉換規(guī)則集的表結構見表1。


元數(shù)據(jù)庫存放的是關于數(shù)據(jù)的數(shù)據(jù),即對抽取出來的數(shù)據(jù)的描述與說明,是數(shù)據(jù)轉換的一個重要依據(jù),數(shù)據(jù)被抽取出來后,如果在元數(shù)據(jù)庫中存在該數(shù)據(jù),則要按照元數(shù)據(jù)中定義的標準數(shù)據(jù)格式處理數(shù)據(jù)。否則就要籌建新的數(shù)據(jù)標準并存儲到元數(shù)據(jù)庫中。


4、結束語


采用數(shù)據(jù)倉庫技術解決異構數(shù)據(jù)庫的集成問題應該是一個好的解決方案。因為ODBC技術為訪問異構數(shù)據(jù)庫提供了統(tǒng)一的方式。同時也為各異構數(shù)據(jù)庫之間的協(xié)作和多個異構數(shù)據(jù)庫之間的操作提供了系統(tǒng)平臺;而數(shù)據(jù)倉庫的建立,不僅實現(xiàn)了企業(yè)信息系統(tǒng)中信息的集成,同時為充分利用這些綜合數(shù)據(jù)、歷史數(shù)據(jù),為企業(yè)決策系統(tǒng)提供信息源打下了良好的基礎。


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

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師考試動態(tài)
數(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(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產品形式,包括: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); }