2 HBase数据模型
生活随笔
收集整理的這篇文章主要介紹了
2 HBase数据模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
HBase數據模型
- 數據模型解析
- 專業術語
- NameSpace:
- Table:
- RowKey:
- Column Family:
- Column Qualifier:
- Cell:
- Timestamp:
- 小結
數據模型解析
數據類型:int,char… HBase不存在數據類型,字節存儲
數據模型:行,列 HBase不僅有行列,HBase還有:RK,CF,TS,Q,cell
專業術語
NameSpace:
-
命名空間是類似于關系數據庫系統中的數據庫的概念,他其實是表的邏輯分組。這種抽象為多租戶相關功能奠定了基礎。
命名空間是可以管理維護的,可以創建,刪除或更改命名空間。 -
HBase有兩個特殊預定義的命名空間:
- default-沒有明確指定名稱空間的表將自動落入此名稱空間
- hbase-系統命名空間,用于包含HBase內部表
Table:
-
Hbase的table由多個行組成
-
Row KeyTime StampColumn Family1Column Family2Column Family3 111 t6 CF2:q1=val1 CF3:q3=val3 112 t3 CF1:q2=val3 t2 CF1:q8=val2
RowKey:
- RowKey是用來檢索記錄的主鍵,是一行數據的唯一標識
- RowKey行鍵(RowKey)可以是任意字符串(最大長度是64KB,實際應用中長度一般為10-100bytes),RowKey以字節數組保存。
- 存儲時,數據按照RowKey的字典序(byte order)排序存儲。設計RowKey時,要充分排序存儲這個特性,將經常一起讀取的行存儲放到一起。
Column Family:
- 列簇在物理上包含了許多的列與列的值,每個列簇都有一些存儲的屬性可配置。
- 例如是否使用緩存,壓縮類型,存儲版本數等。在表中,每一行都有相同的列簇,盡管有些列簇什么東西也沒有存。
- 將功能屬性相近的列放在同一個列族,而且同一個列族中的列會存放在同一個Store中。列族一般需要在創建表的時候就進行聲明,而且一般一個表中的列族數不要超過3個
- 這個和后期的優化相關
- 列隸屬于列族,列族隸屬于表
Column Qualifier:
- 列簇的限定詞,理解為列的唯一標識。但是列標識是可以改變的,因此每一行可能有不同的列標識
- 使用的時候必須列族:列
- 列可以根據需求動態添加或者刪除,同一個表中不同行的數據列都可以不同
Cell:
- cell是由row,column family,column qualifier,version 組成的
- cell中的數據是沒有類型的,全部是字節碼形式存貯。
- 因為HDFS上的數據都是字節數組
Timestamp:
- HBase中通過rowkey和column family,column qualifier確定的一個存貯單元稱為cell。每個 cell都保存著同一份數據的多個版本。
- 版本通過時間戳來索引。
- 時間戳的類型是64位整型
- 默認時間戳是精確到毫秒的當前系統時間。時間戳也可以由客戶顯式賦值。
- 如果應用程序要避免數據版本沖突,就必須自己生成具有唯一性的時間戳。
- 每個cell中,不同版本的數據按照時間倒序排序,即最新的數據排在最前面。
- 查詢數據的時候,如果不指定版本數,默認顯示版本號最新(高)的數據
- 為了避免數據存在過多版本中造成管理(包括存貯和索引)負擔,HBASE提供了兩種數據版本回收方式。
- —是保存數據的最后n個版本
- 二是保存最近一段時間內的版本(比如最近七天)
小結
HBase是一個稀疏的、分布式、持久、多維、排序的映射,它以行鍵(row key),列鍵(column key–>cfq)和時間戳(timestamp)為索引。
Hbase在存儲數據的時候,有兩個SortedMap,首先按照rowkey進行字典排序,然后再對Column進行字典排序。
照rowkey進行字典排序,然后再對Column進行字典排序。
總結
以上是生活随笔為你收集整理的2 HBase数据模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1 HBase 介绍
- 下一篇: 3 HBase架构