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 ...