hbase作為hadoop生態當中的nosql資料庫,基於hdfs去完成實際的資料儲存任務,高效能是得到普遍的認可的。而hbase在儲存上的高效能,與自身的資料模型設計有很大的關係。今天的大資料入門分享,我們就來講講,hbase資料模型的相關知識。
根據定義,我們知道hbase是乙個支援分布式的列式資料庫,尤其是針對於大型資料的實時、隨機的讀寫訪問,hbase能夠提供很好的功能支援。
一、hbase的資料模型
hbase的資料模型,我們需要從兩個維度來理解,一是邏輯模型,二是物理模型。
邏輯模型
hbase**於googlebigtable的開源,大部分特性和bigtable相同,可以理解為是乙個稀疏的,長期儲存的,多維度和排序的對映表,表中的每一行可以有不同的列。
hbase中最基本的單位是列,一列或者多列構成了行,行有行鍵(rowkey),每一行的rowkey都是唯一的,相同行鍵的put操作被認為是對該行的更新操作。
hbase的表有若干行,每行有很多列,列中的值有多個版本,每個版本的值稱之為乙個單元格,每個單元格儲存的不同時刻該列的值。
物理模型
在邏輯上來說,hbase表是稀疏的行的集合,但是在物理上,hbase表是按列分開儲存的。
按照列來劃分列族(建立表的時候指定),儲存每一行的不同列的物理檔案,乙個列族的資料存放在多個hfile中,乙個列族的資料會被同乙個region管理,物理上存放在一起。
二、hbase資料模型的核心概念
namespace(表命名空間):表命名空間不是強制的,預設是default。當想把多個表分到乙個組去統一管理的時候才會用到表命名空間。
table(表):乙個表由乙個或者多個列族組成。它有一些資料屬性,比如超時時間(ttl),壓縮演算法(compression)等,都在列族的定義中定義。定義完列族後表是空的,只有新增了行,表才有資料。
row(行):乙個行包含了多個列,這些列通過列族來分類。行中的資料所屬列族只能從該錶所定義的列族中選取,不能定義這個表中不存在的列族,否則你會得到乙個nosuchcolumnfamilyexception。
column family(列族):列族是多個列的集合。hbase會盡量把同乙個列族的列放到同乙個伺服器上,這樣可以提高訪問效能,並且可以批量管理有關聯的一堆列。所有的資料屬性都是定義在列族上。在hbase中,建表定義的不是列,而是列族。
column qualifier(列):多個列組成乙個行。列族和列經常用column family:column qualifier來一起表示。列是可以隨意定義的,乙個行中的列不限名字、不限數量,只限定列族。
cell(單元格):乙個列中可以儲存多個版本的資料,而每個版本就稱為乙個單元格(cell),hbase中的資料細粒度比傳統資料結構更細一級,同乙個位置的資料還細分成多個版本。
timestamp(時間戳/版本號):既可以把它稱為是時間戳,也可以稱為是版本號,因為它是用來標定同乙個列中多個單元格的版本號的。
關於大資料入門,hbase資料模型詳解,以上就為大家做了詳細的介紹了。hbase的資料模型,是支援hbase實現高效能資料儲存的重要概念,要搞懂hbase,需要對這些概念理解清楚透徹才行。
hbase資料模型
與nosql資料庫們一樣,rowkey是用來檢索記錄的主鍵。訪問hbase table中的行 訪問方式 a.通過單個row key訪問,b.通過row key的range 正則 c.全表掃瞄,rowkey是任意字串,最大長度 是 64kb,實際應用中長度一般為 10 100bytes,hbase內部...
Hbase資料模型
hbase 以表的形式儲存資料。表由行和列族組成。列劃分為若干個列族 row family 其邏輯檢視如下 幾個關鍵概念 1 行鍵 rowkey 行鍵是位元組陣列,任何字串都可以作為行鍵 表中的行根據行鍵進行排序,資料按照 row key 的位元組序 byte order 排序 儲存 所有對錶的訪問...
hbase資料模型
與nosql資料庫一樣,row key是用來檢索記錄的主鍵。訪問hbase table中的行,只有三種方式 1.通過單個row key訪問 2.通過row key的range 正則 3.全表掃瞄 row key行鍵 row key 可以是任意字串 最大長度 是 64kb,實際應用中長度一般為 10 ...