Hbase儲存模式
Hbase本身是資料庫,本身就是為了儲存資料,因此瞭解其儲存原理對我們是很有必要的,這樣我們才能更好的使用Hbase。
首先才能儲存模式開始,Hbase的儲存模式與傳統型的儲存模式有什麼區別。
行式儲存與列式儲存
列式儲存(Columnar or column-based)是相對於傳統關係型資料庫的行式儲存(Row-basedstorage)來說的。簡單來說兩者的區別就是如何組織表
- 行式儲存以一系列的行來儲存一個表,一行一行的進行儲存
- 列式儲存以一系列的列來儲存一個表, 一個列一個列的進行儲存

image

image

image
行式儲存與列式儲存的應用環境
如果需要關係查詢,那麼行式儲存很好
行式儲存最大的優點是關係之間的解決方案,表與表之間很大的關聯關係並且資料量不大,那麼行式儲存就是很好的選擇。記住因為它的線性擴充套件性不高,需要保證資料量不能特別大,控制在千萬級與以下。
如果資料量非常大,使用列式儲存
在大資料,利於壓縮和擴充套件的肯定要選擇列式儲存,如果事務使用率不高,那麼也最好使用列式儲存,隨機更新更些行的頻率不高,也可以使用列式儲存
Hbase的列族式儲存
列族就是多個數據列的組合,列族式可以說是表的schema的一部分,而列不是。Hbase可以說是列簇資料庫,在建立表的時候要指定列族,而不需要指定具體的列。
Hbase Table組成:
Table = rowkey + family + column + timestamp + value
資料儲存模式:
(Table, rowkey , family , column , timestamp) -> Value
Hbase列資料預設可以儲存3個版本,不過可以設定該屬於儲存幾個版本。
Hbase資料儲存原型
HBase 是一個稀疏的、分散式、持久、多維、排序的對映,它以行鍵(row key),列鍵(column key)和時間戳(timestamp)為索引。
Hbase在儲存資料的時候,有兩個SortedMap,首先按照rowkey進行字典排序,然後再對Column進行字典排序。

image
這張圖可以看到其儲存排序是先由rowkey排序,然後按列的名稱進行排序

image
最後
Hbase作為NoSQL資料庫和傳統型資料庫有相似的地方,但也有很大的差別,Hbase更多的是為了擴充套件性和效能考慮,弱化了事務,一起帶著全新的思維來學習Hbase吧
參考
- ofollow,noindex">幾張圖看懂列式儲存
- Hbase模式設計介紹
- Hbase儲存原理剖析