RowKey
與nosql數(shù)據(jù)庫們一樣,RowKey是用來檢索記錄的主鍵。訪問HBASE table中的行致稀,只有三種方式:
- 通過單個RowKey訪問
- 通過RowKey的range(正則)
- 全表掃描
RowKey行鍵 (RowKey)可以是任意字符串(最大長度是64KB冈闭,實(shí)際應(yīng)用中長度一般為 10-100bytes),在HBASE內(nèi)部抖单,RowKey保存為字節(jié)數(shù)組萎攒。存儲時(shí),數(shù)據(jù)按照RowKey的字典序(byte order)排序存儲矛绘。設(shè)計(jì)RowKey時(shí)耍休,要充分排序存儲這個特性,將經(jīng)常一起讀取的行存儲放到一起货矮。(位置相關(guān)性)
Column Family
列族羊精,HBASE表中的每個列,都?xì)w屬于某個列族囚玫。列族是表的schema的一部分(而列不是)园匹,必須在使用表之前定義雳刺,列名都以列族作為前綴。例如 courses:history裸违,courses:math都屬于courses 這個列族
Cell
由{rowkey, column Family:columu, version} 唯一確定的單元掖桦。cell中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存貯供汛。
Time Stamp
HBASE 中通過rowkey和columns確定的為一個存貯單元稱為cell枪汪。每個 cell都保存 著同一份數(shù)據(jù)的多個版本。版本通過時(shí)間戳來索引怔昨。時(shí)間戳的類型是 64位整型雀久。時(shí)間戳可以由HBASE(在數(shù)據(jù)寫入時(shí)自動 )賦值,此時(shí)時(shí)間戳是精確到毫秒 的當(dāng)前系統(tǒng)時(shí)間趁舀。時(shí)間戳也可以由客戶顯式賦值赖捌。如果應(yīng)用程序要避免數(shù)據(jù)版 本沖突,就必須自己生成具有唯一性的時(shí)間戳矮烹。每個 cell中越庇,不同版本的數(shù)據(jù)按照時(shí)間倒序排序,即最新的數(shù)據(jù)排在最前面
為了避免數(shù)據(jù)存在過多版本造成的的管理 (包括存貯和索引)負(fù)擔(dān)奉狈,HBASE提供 了兩種數(shù)據(jù)版本回收方式卤唉。一是保存數(shù)據(jù)的最后n個版本,二是保存最近一段 時(shí)間內(nèi)的版本(比如最近七天)仁期。用戶可以針對每個列族進(jìn)行設(shè)置
命名空間
- Table桑驱,表,所有的表都是命名空間的成員跛蛋,即表必屬于某個命名空間熬的,如果沒有指定,則在default默認(rèn)的命名空間中赊级。
- RegionServer group悦析,一個命名空間包含了默認(rèn)的RegionServer Group。
- Permission此衅,權(quán)限强戴,命名空間能夠讓我們來定義訪問控制列表ACL(Access Control List)。例如挡鞍,創(chuàng)建表骑歹,讀取表,刪除墨微,更新等等操作道媚。
- Quota,限額,可以強(qiáng)制一個命名空間可包含的region的數(shù)量