天天看點

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的一種機制。

繼續閱讀