HBase之資料模型 DataModel

2021-08-26 14:07:08 字數 1475 閱讀 9728

hbase基於google的bigtable構建,是一種column-orientednosql資料庫

1.1概念檢視

從概念模型上看,hbase的儲存邏輯同關聯式資料庫類似,是基於table的儲存,儲存檢視如圖所示:

圖中列出了**的一條記錄,com.cnn.www是該記錄的主鍵,contents:、anchor:cnnsi.com和anchor:my.look.ca是**的column

與關聯式資料庫不同的是,這裡的cell具有版本的概念(每個cell有多條記錄,這些記錄通過時間戳來區分彼此).

1.2物理檢視

概念檢視只是基於關聯式資料庫的一種參照,在真正的物理儲存上,hbase基於另外一種模型,模型檢視如圖所示:

如圖所示,hbase實際上是基於列儲存的資料庫,可簡單認為每個columnfamily對應一張儲存表,**的rowkey、timestamp和column確定了每條記錄的唯一索引。在物理層面上,**的資料是通過storefile來儲存的,每個storefile相當於乙個可序列化的map,map的key和value都是可解釋型字元陣列,如key的字元陣列主要由以下資訊組成(value於此類似):

rowlength

rowkey的字元長度

row

rowkey的值

columnfamilylength

columnfamily的字元長度

columnfamily

columnfamily的值

columnqualifier

column

timestamp

時間戳(版本)

keytype

key的型別(put,delete,deletecolumn,deletefamily…)

這樣便可從相應的key/value鍵值對中提煉出具體的rowkey、timestamp、columnkey和columnvalue等資訊。而多個map整合到一起,便形成一張鬆散的、可分布式的、多維的、可序列話的bigtable。

2.1columnfamily

column family是一組column的組合,在hbase中,schema的定義主要為columnfamily的定義,同大多數nosql資料庫一樣,hbase也是支援schemafree的,但是前提要先定義出具體的columnfamily,而在隨後的column定義則沒有任何約束。

其次,hbase的訪問許可權控制,磁碟及記憶體統計等功能都是基於columnfamily層面完成的。

2.2cell

概念模型中的cell由row、column和timestamp三元素組成

2.3timestamp

hbase提供基於cell的版本管理功能,版本號預設通過timestamp來標識,並且呈倒敘排列。這樣,最後新增的版本會首先遍歷到

注:這裡的cell指的是概念檢視中

hbase資料模型

與nosql資料庫們一樣,rowkey是用來檢索記錄的主鍵。訪問hbase table中的行 訪問方式 a.通過單個row key訪問,b.通過row key的range 正則 c.全表掃瞄,rowkey是任意字串,最大長度 是 64kb,實際應用中長度一般為 10 100bytes,hbase內部...

Hbase資料模型

hbase 以表的形式儲存資料。表由行和列族組成。列劃分為若干個列族 row family 其邏輯檢視如下 幾個關鍵概念 1 行鍵 rowkey 行鍵是位元組陣列,任何字串都可以作為行鍵 表中的行根據行鍵進行排序,資料按照 row key 的位元組序 byte order 排序 儲存 所有對錶的訪問...

hbase資料模型

與nosql資料庫一樣,row key是用來檢索記錄的主鍵。訪問hbase table中的行,只有三種方式 1.通過單個row key訪問 2.通過row key的range 正則 3.全表掃瞄 row key行鍵 row key 可以是任意字串 最大長度 是 64kb,實際應用中長度一般為 10 ...