溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

HBase表的數(shù)據(jù)模型是什么

發(fā)布時(shí)間:2022-05-18 09:18:25 來源:億速云 閱讀:110 作者:zzz 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“HBase表的數(shù)據(jù)模型是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“HBase表的數(shù)據(jù)模型是什么”吧!

HBase是運(yùn)行在Hadoop集群上的一個(gè)數(shù)據(jù)庫,與傳統(tǒng)的數(shù)據(jù)庫有嚴(yán)格的ACID(原子性、一致性、隔離性、持久性)要求不一樣,HBase降低了這些要求從而獲得更好的擴(kuò)展性,它更適合存儲(chǔ)一些非結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)。

表(Table)

HBase 中的數(shù)據(jù)以表的形式存儲(chǔ)。同一個(gè)表中的數(shù)據(jù)通常是相關(guān)的,使用表主要是可以把某些列組織起來一起訪問。表名作為 HDFS 存儲(chǔ)路徑的一部分來使用,在 HDFS 中可以看到每個(gè)表名都作為獨(dú)立的目錄結(jié)構(gòu)。

HBase表的數(shù)據(jù)模型主要概念包括rowkey、Column Family、Column、cell、Timestamp。

1. rowkey行鍵

  • table的主鍵,table中的記錄==按照rowkey 的字典序進(jìn)行排序==

  • rowkey行鍵可以是任意字符串(最大長(zhǎng)度是 64KB,實(shí)際應(yīng)用中長(zhǎng)度一般為 10-100bytes)

2. Column Family列族

  • 被稱為列族或列簇

  • HBase表中的每個(gè)列,都?xì)w屬與某個(gè)列族

  • 列族是表的schema的一部分(而列不是),即建表時(shí)至少指定一個(gè)列族

  • 比如創(chuàng)建一張表,名為user,有兩個(gè)列族,分別是userInfoaddressInfo,建表語句create 'user', 'userInfo', 'addressInfo'

3. Column列

  • 列肯定是表的某一列族下的一個(gè)列,用列族名:列名表示,如userInfo列族下的name列,表示為userInfo:name

  • 它屬于某一個(gè)ColumnFamily,類似于我們mysql當(dāng)中創(chuàng)建的具體的列

4. cell單元格

  • 知道row key行鍵、列族、列,可以確定的一個(gè)cell單元格

  • cell中的數(shù)據(jù)是沒有類型的,全部是以字節(jié)數(shù)組進(jìn)行存儲(chǔ)

5. Timestamp時(shí)間戳

  • 可以對(duì)表中的Cell多次賦值,每次賦值操作時(shí)的時(shí)間戳timestamp,可看成Cell值的版本號(hào)version number

  • 即一個(gè)Cell可以有多個(gè)版本的值

理解數(shù)據(jù)模型各概念的圖

HBase表的數(shù)據(jù)模型是什么

上表展示的是 HBase 中的用戶信息表 user,有三行記錄和兩個(gè)列族(不考慮空白的列族,代表可以有很多列族),行鍵分別為 1、2 和 3,兩個(gè)列族分別為 userInfo 和 addressInfo,每個(gè)列族中含有若干列,如列族 userInfo 包括 name、age、sex 3列,列族 addressInfo 包括 address、from、phone、email、ralary 5列。

在 HBase 中,列不是固定的表結(jié)構(gòu),在創(chuàng)建表時(shí),不需要預(yù)先定義列名,可以在插入數(shù)據(jù)時(shí)臨時(shí)創(chuàng)建。

從表的邏輯模型來看,HBase 表與關(guān)系型數(shù)據(jù)庫中的表結(jié)構(gòu)之間好像沒什么差別,只不過多了列族的概念。但實(shí)際上是有很大差別的,關(guān)系型數(shù)據(jù)庫中表的結(jié)構(gòu)需要預(yù)先定義,如:列名及其數(shù)據(jù)類型和值域等內(nèi)容。

當(dāng)需要添加新列,則需要修改表結(jié)構(gòu),這會(huì)對(duì)已有的數(shù)據(jù)產(chǎn)生很大影響。同時(shí),關(guān)系型數(shù)據(jù)庫中的表為每個(gè)列預(yù)留了存儲(chǔ)空間,即表中的空白 Cell 數(shù)據(jù)在關(guān)系型數(shù)據(jù)庫中以“NULL”值占用存儲(chǔ)空間。因此,對(duì)稀疏數(shù)據(jù)來說,關(guān)系型數(shù)據(jù)庫表中就會(huì)產(chǎn)生很多“NULL”值,消耗大量的存儲(chǔ)空間。

與面向行存儲(chǔ)的關(guān)系型數(shù)據(jù)庫不同,HBase 是面向列存儲(chǔ)的,且在實(shí)際的物理存儲(chǔ)中,列族是分開存儲(chǔ)的,即表中的用戶信息表將被存儲(chǔ)為 userInfo 和 addressInfo 兩個(gè)部分。

同時(shí)HBase存在時(shí)間戳,可以多次對(duì)一個(gè)cell賦值,可以存儲(chǔ)多個(gè)版本的值,如上表中rowkey為1的數(shù)據(jù)存儲(chǔ)了2個(gè)時(shí)間版本的數(shù)據(jù)。

到此,相信大家對(duì)“HBase表的數(shù)據(jù)模型是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI