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

熱線電話:13121318867

登錄
首頁精彩閱讀谷歌的數(shù)據(jù)分析怎么它就這么快?_數(shù)據(jù)分析師
谷歌的數(shù)據(jù)分析怎么它就這么快?_數(shù)據(jù)分析師
2014-11-11
收藏

谷歌的數(shù)據(jù)分析怎么它就這么快_數(shù)據(jù)分析師


       谷歌分析存儲了大量統(tǒng)計數(shù)據(jù),包括來自世界各地的互聯(lián)網(wǎng)網(wǎng)站統(tǒng)計數(shù)據(jù)。檢索功能可以從如此巨量的數(shù)據(jù)中快速返回要求谷歌具備特殊的解決方案,必須要滿足在任何時候有更多數(shù)據(jù)需要存儲時能很容易地擴展。
      在谷歌,任何時候都要能給基礎設施中添加任意數(shù)量的應用,每個應用都可能帶來極其繁重的負載。這類請求的資源很難被滿足,尤其是在有限時間內(nèi)要把必要的更新做完。
      如果谷歌在單個服務器節(jié)點上使用經(jīng)典的關系型數(shù)據(jù)庫,那么每次容量達到極限,他們都需要升級硬件??紤]到待創(chuàng)建應用程序和數(shù)據(jù)的量是被谷歌使用的,這類更新可能很有必要成為一項每天都做的日常工作。
      負載也可以在多個服務器節(jié)點共享,但是一旦需要更多節(jié)點,系統(tǒng)會變得非常復雜而極其難以維護。
      考慮到這些因素,標準的關系數(shù)據(jù)庫配置就不再是特別適合的選擇,因為對系統(tǒng)這么大規(guī)模的升級和維護太困難了。
尋找可擴展解決方案
      為保證速度和可靠性,這種快速應急升級的做法是不必要的。谷歌使用自己的數(shù)據(jù)存儲解決方案,叫做“BigTable”。與存儲在關系型表中的數(shù)據(jù)不同,數(shù)據(jù)是以多維排序映射存儲的。
      這種類型的實現(xiàn)立足于廣為人知的一種存儲方式,就是“key-value”(鍵值)存儲方式。這種存儲方式可以提供一些性能優(yōu)勢,是擴展過程更容易。
      關系型數(shù)據(jù)庫中的信息存儲
      關系型數(shù)據(jù)庫在一個地方存儲每一條信息,通常稱為表中的列。對于關系型數(shù)據(jù)庫,保證數(shù)據(jù)規(guī)范化非常重要。這個過程可以確保在其它表或者列中沒有重復數(shù)據(jù)。
      例如,客戶的名字總是應該存儲在特定表的特定列中。如果客戶名字在數(shù)據(jù)庫的另一個表或另一列中出現(xiàn)了,那么它應該刪除掉,應該引用從原來的表和列中提取信息。
      這種結構的缺點是數(shù)據(jù)庫內(nèi)部會變得十分復雜。甚至相對簡單的查詢也會經(jīng)過許多路徑才能執(zhí)行,在運行時候必須找到所有這些路徑評估其運行時間才能知道如何做性能最優(yōu)。數(shù)據(jù)庫變得越復雜,運行時需要判斷查詢路徑就會需要越多的資源。
      以key/Value(鍵值)形式存儲的信息
      在key/Value鍵值形式的存儲結構中,復制數(shù)據(jù)是可以接受的。主要思路是利用磁盤空間而不是其它硬件資源,磁盤空間相對容易獲取,成本效率更容易升級(尤其是在云環(huán)境中),其它硬件資源要提速代價更昂貴。
      從簡化查詢方面考慮,數(shù)據(jù)復制是非常有益的,因為相關信息可以存儲在一起,避免查詢數(shù)據(jù)時需要經(jīng)過許多路徑。
      與關系型數(shù)據(jù)庫使用表結構不同,鍵值存儲方式使用域的概念。域是一個存放數(shù)據(jù)的存儲區(qū),它不需要預定義結構。域內(nèi)的數(shù)據(jù)片段是通過“鍵”定義的,這些“鍵”可以有任意數(shù)量的屬性與它們相關聯(lián)。
      屬性可以是簡單的字符串值,也可以是更復雜的結構,可以與流行編程語言中的數(shù)據(jù)類型相匹配。包括數(shù)組,對象,整數(shù),浮點數(shù),布爾型值,以及編程中的其它基本數(shù)據(jù)類型。
      在鍵值存儲方式中,數(shù)據(jù)完整性和邏輯在應用程序代碼中處理(需要使用一個或者多個API),而不是通過數(shù)據(jù)庫本身的結構來處理。這樣一來,數(shù)據(jù)提取就變成了使用正確的編程邏輯的事,而不是依賴于數(shù)據(jù)庫優(yōu)化器基于需要訪問的關系從大量可能路徑中選擇查詢路徑。

關系型數(shù)據(jù)庫和鍵值數(shù)據(jù)庫訪問數(shù)據(jù)的差異。
      獲得結果
      谷歌需要存儲和提取許多應用程序的大量數(shù)據(jù),包括谷歌分析、谷歌地圖、Gmail和熱門搜索的web索引數(shù)據(jù)。此外,在任何時候都要添加更多應用和數(shù)據(jù)存儲,這個因素就使得BigTable的鍵值存儲成為可擴容性的理想方案。
      BigTable是谷歌自己的定制解決方案,那么企業(yè)如何獲得類似性能和擴展性使其用戶獲得更好的體驗呢?好消息是還有其它鍵值存儲方案可用,有的可以在云服務中作為服務運行。這類服務很容易擴展,因為在云環(huán)境中更多數(shù)據(jù)存儲很容易購買獲得。
      鍵值存儲方案
      有幾種鍵值存儲數(shù)據(jù)庫可供選擇。其中之一就是Mongo,它是以對象數(shù)據(jù)庫形式設計的,以JSON格式存儲信息。這種格式在web應用中很理想,因為JSON數(shù)據(jù)很容易作為一種標注格式在各種需要的應用之間傳遞數(shù)據(jù)。
      例如,Mongo是MEAN堆棧的一部分:Mongo,Express,AngularJS和NodeJS是程序員們開發(fā)應用的一套流行搭配。每一部分都 需要與其它部分發(fā)送交互數(shù)據(jù)。所有的一切,包括數(shù)據(jù)庫,都可以使用JSON格式,在各部分之間傳遞數(shù)據(jù)變得更加容易和規(guī)范統(tǒng)一。

MySQL與Mongo執(zhí)行相同任務代碼比較圖
如何使用Mongo
      Mongo可以在各種操作系統(tǒng)上安裝使用,包括Windows,Linux和OSX。這樣,數(shù)據(jù)庫的擴展就簡單了,只要在所安裝的服務器上添加存儲空間就行了。
      另一種方案是在云環(huán)境中把Mongo用作服務。這樣便于擴展,任何時候都可以向服務同樣是發(fā)起請求要求必要的存儲空間。這樣一來,新的應用和更多數(shù)據(jù)存儲需求就可以快速高效地處理了。
      Morpheus就是這種服務中的出色候選者,它在云環(huán)境中提供Mongo服務高擴展性:Morpheus的用戶可以有三個共享的節(jié)點,完整數(shù)據(jù)集,可以 無縫提供MongoDB實例。此外,所有服務都運行在高性能固態(tài)硬盤(SSD)基礎設施上,這是非常可靠的數(shù)據(jù)存儲介質(zhì)。使用Morpheus高擴展性數(shù) 據(jù)庫即服務可以在任何時候保持運行狀態(tài)。(文章來源:CDA數(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)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 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); }