HBase之資料模型(DataModel)
HBase基於Google的BigTable構建,是一種column-orientednosql資料庫
1.模型檢視
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…) |
2.模型概念
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指的是概念檢視中