成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

快速理解HBase和BigTable-創(chuàng)新互聯(lián)

有關(guān)系行數(shù)據(jù)庫經(jīng)驗(yàn)的人(比如我),在最初接觸HBase這樣的數(shù)據(jù)庫時,對數(shù)據(jù)結(jié)構(gòu)的理解容易遇到障礙。會不自覺的將HBase的行、列等概念映射成關(guān)系型數(shù)據(jù)庫的行、列。為了加速理解HBase的一些概念,翻譯了這篇文章《Understanding HBase and BigTable》(HBase官方文檔推薦閱讀文章)。

站在用戶的角度思考問題,與客戶深入溝通,找到武安網(wǎng)站設(shè)計(jì)與武安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋武安地區(qū)。

學(xué)習(xí)Hbase(Google BigTable的開源實(shí)現(xiàn))最困難的是理解它的實(shí)際概念。

很不幸的是,這兩個偉大的系統(tǒng)在其概念中包含了table和base兩個詞,這往往會導(dǎo)致一些人(比如我) 把它們跟關(guān)系型數(shù)據(jù)庫的東西搞混淆。

本文旨在從概念的角度描述這些分布式數(shù)據(jù)存儲系統(tǒng)。閱讀之后,你應(yīng)該能夠更好地判斷,什么時候要使用Hbase,什么時候該更好地使用“傳統(tǒng)”數(shù)據(jù)庫。

一切都在術(shù)語中

幸運(yùn)的是,Google的BigTable論文清楚地解釋了BigTable究竟是什么。這是“數(shù)據(jù)模型”部分的第一句話: 

快速理解HBase和BigTable

注意:請牢記上邊這句話的每一個詞

BigTable論文繼續(xù)說明 

快速理解HBase和BigTable

Hadoop wiki的HbaseArchitecture頁面假設(shè):

快速理解HBase和BigTable

盡管所有這些看起來都相當(dāng)神秘,但是一旦你將它分解為單詞,它就變得容易明確了。我喜歡按照這個順序討論它們:map,持久化(persistent),分布式(distributed),有序(sorted),多維(multidimensional)和稀疏(sparse)。

我沒有嘗試一下子描繪完整的系統(tǒng),而是發(fā)現(xiàn)在腦海中構(gòu)建一個零碎的框架更容易理解HBase……

Map

Hbase / BigTable的核心是map,根據(jù)您的編程語言背景,您可能更熟悉這些術(shù)語,array (PHP), dictionary (Python), Hash (Ruby), or Object (JavaScript).

維基百科文章顯示,Map是“由一組鍵和一組值組成的抽象數(shù)據(jù)類型,其中每個鍵與一個值相關(guān)聯(lián)。”

用JSON來描述一個簡單Map的示例,其中所有值都只是字符串: 

快速理解HBase和BigTable

持久化

持久化僅僅意味著在創(chuàng)建或訪問數(shù)據(jù)的程序完成后,您放入此特殊Map的這些數(shù)據(jù)“會持久保存”。這在概念上與任何其他類型的持久存儲(例如文件系統(tǒng)上的文件)沒有什么不同。

有序

與大多數(shù)Map實(shí)現(xiàn)不同,在Hbase / BigTable中,鍵/值對按嚴(yán)格的字母順序保存。也就是說,鍵“aaaaa”的行應(yīng)該在具有鍵“aaaab”的行旁邊,并且與具有鍵“zzzzz”的行相距很遠(yuǎn)。

繼續(xù)我們的JSON示例,有序版本如下所示: 

快速理解HBase和BigTable

由于這些系統(tǒng)往往非常龐大且是分布式,因此這種有序的特性非常重要。具有相似鍵的行在空間上的鄰近性確保了當(dāng)您必須掃描表時,您最感興趣的條目彼此接近。

選擇行鍵的約定很重要。例如,考慮一個表,其鍵是域名。以反向表示法列出它們是最有意義的(所以“com.jimbojw.www”比“www.jimbojw.com”更好),這樣子域的行(存儲上)將靠近父域行。

值得注意的是,在Hbase / BigTable中,術(shù)語“有序”并不意味著“值(values)”已排序。除了鍵之外,沒有任何自動索引,就像在普通Map實(shí)現(xiàn)中一樣。

多維

到目前為止,我們還沒有提到任何“列(columns)”的概念,將“表(table)”視為概念中的常規(guī)哈希/映射(map)。這是有意為之。 “列(column)”這個詞是另一個加載的詞,如“table”和“base”,它傳承了多年關(guān)系型數(shù)據(jù)庫經(jīng)驗(yàn)的情感包袱。

相反,我發(fā)現(xiàn)(把HBase)看成一個多維Map更容易思考這個問題 - 如果你愿意的話,可以使用嵌套Map。在之前的JSON示例中添加一個維度: 

快速理解HBase和BigTable

在上面的例子中,您現(xiàn)在會注意到每個鍵都指向一個有兩個鍵的Map:“A”和“B”。從此處開始,我們將頂層鍵/映射(key/map)稱為“行”。此外,在BigTable / Hbase命名法中,“A”和“B”映射(mappings)將被稱為“列族”。

創(chuàng)建表時會指定表的列族,以后很難或無法修改。添加新列族代價也很大,因此好的做法是從一開始就指定您需要的所有列族。

幸運(yùn)的是,列族可以具有任意數(shù)量的列,由列“限定符(qualifier)”或“標(biāo)簽(label)”表示。以下是我們的JSON示例的子集,內(nèi)置了列限定符維度(qualifier dimension): 

快速理解HBase和BigTable

請注意,在顯示的兩行中,“A”列族有兩列:“foo”和“bar”,“B”列族只有一列,其限定符為空字符串(“”)。

在向Hbase / BigTable詢問數(shù)據(jù)時,必須以“<family>:<qualifier>”的形式提供完整的列名稱。因此,例如,上例中的兩行都有三列:“A:foo”,“A:bar”和“B:”。

請注意,雖然列族是靜態(tài)的,但列本身不是??紤]這個擴(kuò)展的行: 

快速理解HBase和BigTable

在這種情況下,“zzzzz”行只有一列,“A:catch_phrase”。由于每行可能包含任意數(shù)量的不同列,因此沒有內(nèi)置方法可以查詢所有行中所有列的數(shù)據(jù)(list)。要獲取該信息,您必須進(jìn)行全表掃描。但是,您可以查詢所有列族的數(shù)據(jù),因?yàn)樗鼈兪遣豢勺兊模ɑ蚨嗷蛏伲?/p>

Hbase / BigTable中最后一個維度是時間。所有數(shù)據(jù)都使用整數(shù)時間戳(seconds since the epoch)或您選擇的另一個整數(shù)進(jìn)行版本控制??蛻舳丝梢栽诓迦霐?shù)據(jù)時指定時間戳。

看一下使用任意整數(shù)時間戳的示例: 

快速理解HBase和BigTable

每個列族可能有自己的規(guī)則,確定保留的給定單元格的版本數(shù)量(單元格由其rowkey / column鍵值對標(biāo)識)在大多數(shù)情況下,應(yīng)用程序?qū)⒅辉儐柦o定單元格的數(shù)據(jù),而不指定時間戳。在這種常見情況下,Hbase / BigTable將返回最新版本(具有最高時間戳的版本),因?yàn)樗詴r間逆序存儲這些版本數(shù)據(jù)。

如果應(yīng)用程序指定時間戳,Hbase將返回時間戳小于或等于所提供時間戳的單元數(shù)據(jù)。

使用我們想象中的Hbase表,查詢“aaaaa”/“A:foo”的行/列(row/column)將返回“y”,同時查詢“aaaaa”/“A:foo”/ 10的 行/列/時間戳 將返回“M”。查詢“aaaaa”/“A:foo”/ 2的 行/列/時間戳 將返回空結(jié)果。

稀疏

最后一個關(guān)鍵字是稀疏。如前所述,給定行在每個列族中可以包含任意數(shù)量的列,或者根本不包含任何列。另一種類型的稀疏性是基于行的間隙(row-based gaps),這僅僅意味著鍵(key)之間可能存在間隙。

如果您已經(jīng)按照本文的基于映射(map-based)的術(shù)語來思考Hbase / BigTable,而不是用關(guān)系型數(shù)據(jù)庫中的相似概念去思考,那么本文的目的就達(dá)到了。

就這樣(And that's about it)

好吧,我希望這有助于您從概念上理解Hbase數(shù)據(jù)模型的含義。

一如既往,我期待著您的想法,意見和建議。 

新聞名稱:快速理解HBase和BigTable-創(chuàng)新互聯(lián)
鏈接分享:http://jinyejixie.com/article38/ghcsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、響應(yīng)式網(wǎng)站Google、網(wǎng)站維護(hù)自適應(yīng)網(wǎng)站、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
馆陶县| 旬阳县| 松潘县| 威宁| 金山区| 奉贤区| 观塘区| 彭水| 株洲市| 南陵县| 唐山市| 汪清县| 吴江市| 永德县| 三亚市| 蓬莱市| 雅江县| 观塘区| 邢台县| 锦屏县| 玉龙| 仙居县| 通城县| 巩留县| 黄山市| 四川省| 平山县| 育儿| 双城市| 桓台县| 邹城市| 改则县| 泾川县| 石棉县| 六盘水市| 齐齐哈尔市| 永德县| 长顺县| 鱼台县| 即墨市| 芮城县|