1. 程式人生 > >HBase資料結構(讀書筆記 )

HBase資料結構(讀書筆記 )

背景:

     最近在做一些跟大資料相關的東西,涉及到資料的儲存和分析,考慮各個方面,選擇使用HBase進行儲存,使用原生Java API進行資料分析,之後會陸續寫一系列來說明最近做的東西,給像我這樣未曾涉及過這個領域的人一點兒idea。

引言:

     HBase以表的方式組織資料來源,這一點跟關係型資料庫時一樣的,在我們的application裡面,通過API/Thrift、或者各種SQL引擎,將資料存入庫裡面或者進行查詢;Hbase的表由行(Row)和列(Column)共同構成,與關係型資料庫不同的是,HBase有一個列族(Column Family)的概念,它將一列或者多列組織在一起,HBase的列必須屬於某一個列族。

    行和列的交叉點稱為單元格(Cell),單元格是版本化的。單元格的內容也就是列的值是不可分割的位元組陣列,以二進位制的形式儲存。HBase沒有資料型別,任何列值都被轉換成字元陣列進行儲存。HBase表中的行是通過行鍵(Rowkey)來進行區分的,行健也是用來唯一確定一行的標識,不同的行健嗲表不同的行,行健也是一段位元組陣列,不論是字串還是數字,最終都會被轉換成自己陣列進行儲存。HBase表中的行是按照RowKey排序的,排序方式採用字典順序,所有表中的行都必須有RowKey。

邏輯模型

     HBase是一個類似GoogleBigTable的開源分散式資料庫,它最基本的單位是列,一列或者多列組成行,行有行健,每一行的行健都是唯一的,相同的行健的插入操作被認為是對同一行的操作,也就是說如果做了兩次寫入操作,而行健是同一個,那麼後面的操作可以認為是對改行的某些列的更新操作。
    列名是右列族字首和修飾符連線而成,分隔符是應為冒號。

物理模型

    在邏輯模型中,表可以被看成一個稀疏的行的集合。但是在物理上,表是按照列分開儲存的。HBase的列是按照列族分組的,HFile是面向列的,存放行的不同的列的物理檔案,一個列族的資料存放在多個HFile中,最重要的是一個列族的資料會被同一個Region管理,物理上存放在一起。Region是管理HFile的一種機制。