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

熱線電話:13121318867

登錄
首頁精彩閱讀大數(shù)據(jù)時(shí)代中我們是否應(yīng)該重新設(shè)計(jì)數(shù)據(jù)庫?
大數(shù)據(jù)時(shí)代中我們是否應(yīng)該重新設(shè)計(jì)數(shù)據(jù)庫?
2016-04-17
收藏
大數(shù)據(jù)時(shí)代中我們是否應(yīng)該重新設(shè)計(jì)數(shù)據(jù)庫?


很多大數(shù)據(jù)應(yīng)用的實(shí)施似乎都是在一個(gè)現(xiàn)有的數(shù)據(jù)倉庫上,添加一個(gè)或多個(gè)新的大容量數(shù)據(jù)流,還有一些支持?jǐn)?shù)據(jù)存儲和業(yè)務(wù)分析的專業(yè)軟硬件。數(shù)據(jù)存儲問題通常是通過部署一個(gè)專門的硬件一體機(jī)來協(xié)調(diào),這樣就可以在存儲大量數(shù)據(jù)的同時(shí)還能夠提供超快的數(shù)據(jù)訪問。

在這樣的情況下,我們還需要考慮數(shù)據(jù)庫設(shè)計(jì)的問題么?

大數(shù)據(jù)環(huán)境下的數(shù)據(jù)建模

大多數(shù)DBA認(rèn)為:良好的數(shù)據(jù)庫設(shè)計(jì)是系統(tǒng)和應(yīng)用程序設(shè)計(jì)的一部分。很多的業(yè)務(wù)需求,如數(shù)據(jù)可用性,清理處理,還有應(yīng)用性能都可以利用特定的數(shù)據(jù)庫設(shè)計(jì)加以解決。

那么對于大數(shù)據(jù)又如何呢?有趣的是,為大數(shù)據(jù)業(yè)務(wù)分析提供軟硬件解決方案的供應(yīng)商總是宣稱數(shù)據(jù)庫設(shè)計(jì)并不是那么重要。他們認(rèn)為,由于數(shù)據(jù)是以專門的格式進(jìn)行存儲的,所以大多數(shù)數(shù)據(jù)庫設(shè)計(jì)便沒有了用武之地。

在這個(gè)問題上的困惑通常是源于對解決方案要以何種特殊的方式執(zhí)行大數(shù)據(jù)查詢的誤解。簡單來說就是,在大多數(shù)情況下,數(shù)據(jù)會存儲在兩個(gè) 地方:你當(dāng)前的生產(chǎn)數(shù)據(jù)庫管理系統(tǒng)(DBMS)和新型專用的一體機(jī)。當(dāng)前的生產(chǎn)流程是提取,轉(zhuǎn)換并加載數(shù)據(jù)到當(dāng)前DBMS,繼續(xù)按原樣操作,還有一個(gè)額外 步驟:每當(dāng)你加載數(shù)據(jù)到一個(gè)表的時(shí)候,你還要確保新數(shù)據(jù)也能被加載到新一體機(jī)中去。

在DBMS加載成功后,便可以馬上把數(shù)據(jù)加載到一體機(jī),或者可以供后續(xù)執(zhí)行分批處理。而重要的是,在任何大數(shù)據(jù)查詢使用已加載數(shù)據(jù)來獲得性能改善之前,必須先把數(shù)據(jù)加載到一體機(jī)。

數(shù)據(jù)庫設(shè)計(jì)是質(zhì)量的保證

有質(zhì)量的數(shù)據(jù)庫設(shè)計(jì)意味著什么呢?一般來說,數(shù)據(jù)庫設(shè)計(jì)開始于數(shù)據(jù)模型和定義之間關(guān)系的業(yè)務(wù)規(guī)則。例如,訂單總是與客戶相關(guān)的,并且客戶可能沒有訂單或者有多個(gè)訂單。有了這些東西以及數(shù)據(jù)元素定義和屬性,數(shù)據(jù)庫設(shè)計(jì)就可以在以下領(lǐng)域解決,處理或是降低風(fēng)險(xiǎn):

通過自動數(shù)據(jù)元素有效值檢查來協(xié)助避免缺陷;

在應(yīng)用構(gòu)建和測試期間允許缺陷檢測和修復(fù);

盡可能讓數(shù)據(jù)驗(yàn)證接近其源頭;

提供穩(wěn)定性,可靠性,數(shù)據(jù)可訪問性和系統(tǒng)擴(kuò)展性。

數(shù)據(jù)庫設(shè)計(jì)人員的做法有什么差別?

糟糕的數(shù)據(jù)庫設(shè)計(jì)對技術(shù)支持的影響非常之大,他們必須實(shí)時(shí)處理系統(tǒng)問題,這樣就會抬升定位和解決問題的成本。其在產(chǎn)品行為上還會體現(xiàn)為惹惱或是趕走客戶。而與糟糕設(shè)計(jì)相關(guān)的最常見的問題就是非常差得應(yīng)用性能和數(shù)據(jù)沖突。

典型的修復(fù)方法包括數(shù)據(jù)庫重組或重新設(shè)計(jì),如添加表索引和改變表分區(qū)和聚簇。然而,在大數(shù)據(jù)環(huán)境中,這些方法在專用一體機(jī)中通常是行 不通的。它們只會存在 于數(shù)據(jù)庫的基本表中。這是問題的癥結(jié)所在:盡管供應(yīng)商聲稱你所有的數(shù)據(jù)都可以遷移至專用一體機(jī),但這絕不是最佳的解決方案。

讓數(shù)據(jù)在主數(shù)據(jù)庫管理系統(tǒng)和一體機(jī)之間共存是最好的方法,其原因如下:

避免單點(diǎn)故障。專 用一體機(jī)往往存折一個(gè)單點(diǎn)故障。雖然有供應(yīng)商和支持人員的努力,但是一體機(jī)中的軟硬件,網(wǎng)絡(luò)連接和流程都可能會發(fā)生故障。如果是這樣,如何才能進(jìn)行滿意的 查詢呢?數(shù)據(jù)協(xié)同定位在數(shù)據(jù)庫管理系統(tǒng)中,查詢結(jié)果可以通過訪問基本表得以滿足。當(dāng)然,性能肯定會受到影響;但是,如果不這樣做的話,在有人修復(fù)這一問題 之前,你的大數(shù)據(jù)應(yīng)用都會是不可用的。

提供數(shù)據(jù)卸載。查詢并非是數(shù)據(jù)的唯一消費(fèi)方。一種常見的用法是將生產(chǎn)數(shù)據(jù)卸載到測試環(huán)境。此外,某些第三方供應(yīng)商軟件工具會直接訪問本地?cái)?shù)據(jù)庫中的數(shù)據(jù),而這在一體機(jī)中是不可用的,因?yàn)閿?shù)據(jù)是以專門的格式進(jìn)行存儲的。

備份和恢復(fù)。最常見的備份和恢復(fù)工具都是以那些駐留在數(shù)據(jù)庫中的數(shù)據(jù)為基礎(chǔ)的。而第三方供應(yīng)商工具通常用于高性能備份和恢復(fù),包括索引恢復(fù)。這些備份是針對基本表和表空間執(zhí)行的,而非一體機(jī)。

某些性能狀況。在某些情況下,SQL查詢在一體機(jī)中無法執(zhí)行。這些限制都是定義在手冊中的,并且隨著供應(yīng)商一體機(jī)和版本的不同而不同。在這些情況下,你別無選擇;你必須訪 問基本表并接受性能的下降。其中一些限制包含了特定的SQL語法,例如可滾動游標(biāo),動態(tài)SQL,使用多個(gè)字符編碼方案,某些相關(guān)表表達(dá)式,以及使用某些內(nèi) 置函數(shù)。

大數(shù)據(jù)的數(shù)據(jù)庫設(shè)計(jì)

因?yàn)槟阋瑫r(shí)在DBMS和專用一體機(jī)中保存數(shù)據(jù),所以標(biāo)準(zhǔn)數(shù)據(jù)庫設(shè)計(jì)規(guī)則對你來說仍然適用。有趣的是,由于一體機(jī)的存在,如今某些規(guī)則得以擴(kuò)展或是變得更加復(fù)雜。下面是一些注意事項(xiàng):

對索引的需求。索 引服務(wù)于 多種需求:它們可以賦予數(shù)據(jù)元素唯一性,它們可以賦予參照完整性關(guān)系,它們可以定義主鍵,并且它們可以定義額外訪問路徑。最后一項(xiàng)是十分重要的。 在大數(shù)據(jù)環(huán)境中,我們的想法是把長時(shí)間運(yùn)行的查詢放進(jìn)一體機(jī)中以進(jìn)行高速處理。如果某些存在的索引僅僅是提供可選訪問路徑,那么可能就不再需要它們了。數(shù) 據(jù)庫設(shè)計(jì)或是重新設(shè)計(jì)應(yīng)該包括對所謂性能索引的檢查。如果此索引不再被查詢所用,那么就可以刪除它們,從而節(jié)省表數(shù)據(jù)恢復(fù)所需要的磁盤空間,處理時(shí)間和恢 復(fù)時(shí)間。

刪除一體機(jī)的SQL限制。通常來說,數(shù)據(jù)的業(yè)務(wù)規(guī)則決定著數(shù)據(jù)庫設(shè)計(jì)的部分內(nèi)容。這包括進(jìn)行物理分區(qū)以允許更快 的查詢和更簡便的數(shù)據(jù)清理,諸如字段約束在內(nèi)的數(shù)據(jù)元素域檢查,以及用于支持參照完整性規(guī)則的主鍵和外鍵定義。接著,應(yīng)用程序開發(fā)人員會編寫SQL查詢來 訪問數(shù)據(jù)。此外,用戶可能擁有的報(bào)告工具會自動為查詢和報(bào)告生成SQL代碼。因?yàn)?a href='/map/sql/' style='color:#000;font-size:inherit;'>SQL查詢語法和功能取決于數(shù)據(jù)庫設(shè)計(jì),所以設(shè)計(jì)人員需要對一體機(jī)限制熟 稔于胸。

為高速一體機(jī)的數(shù)據(jù)加載進(jìn)行設(shè)計(jì)。現(xiàn)在正常的數(shù)據(jù)庫加載過程包含一個(gè)額外步驟:將數(shù)據(jù)加載進(jìn)一體機(jī)。如何才能對此以最佳的方式實(shí)現(xiàn)呢?這主要取決于你的應(yīng)用和數(shù)據(jù)波動程度,因此要考慮以下變量:

定期批量加載(每天,每小時(shí))一體機(jī),但要明白其中的數(shù)據(jù)并不完全是最新的。

細(xì)流加載,基本表中的記錄有過更新的地方會同步傳送至一體機(jī)。這樣就會保持一體機(jī)數(shù)據(jù)最新,但是記錄的處理要比批量加載緩慢許多。.

總結(jié)

雖然數(shù)據(jù)庫軟硬件方面的進(jìn)步可以將數(shù)據(jù)查詢的速度提升一個(gè)檔次,但大數(shù)據(jù)和一體機(jī)并沒有把對良好數(shù)據(jù)庫設(shè)計(jì)的需求棄之不用。實(shí)際上,設(shè)計(jì)人員有更多的事情需要去考慮:備份和恢復(fù),索引管理,多途徑數(shù)據(jù)訪問,以及SQL限制。

數(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(), // 加隨機(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)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(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); }