天天看點

大資料入門:HBase資料模型詳解

Hbase作為Hadoop生态當中的NOSQL資料庫,基于HDFS去完成實際的資料存儲任務,高性能是得到普遍的認可的。而Hbase在存儲上的高性能,與自身的資料模型設計有很大的關系。今天的大資料入門分享,我們就來講講,Hbase資料模型的相關知識。

根據定義,我們知道Hbase是一個支援分布式的列式資料庫,尤其是針對于大型資料的實時、随機的讀寫通路,Hbase能夠提供很好的功能支援。

大資料入門:HBase資料模型詳解

一、HBase的資料模型

Hbase的資料模型,我們需要從兩個次元來了解,一是邏輯模型,二是實體模型。

邏輯模型

HBase來源于GoogleBigTable的開源,大部分特性和BigTable相同,可以了解為是一個稀疏的,長期存儲的,多元度和排序的映射表,表中的每一行可以有不同的列。

HBase中最基本的機關是列,一列或者多列構成了行,行有行鍵(RowKey),每一行的RowKey都是唯一的,相同行鍵的put操作被認為是對該行的更新操作。

HBase的表有若幹行,每行有很多列,列中的值有多個版本,每個版本的值稱之為一個單元格,每個單元格存儲的不同時刻該列的值。

實體模型

在邏輯上來說,HBase表是稀疏的行的集合,但是在實體上,HBase表是按列分開存儲的。

按照列來劃分列族(建立表的時候指定),存儲每一行的不同列的實體檔案,一個列族的資料存放在多個HFile中,一個列族的資料會被同一個region管理,實體上存放在一起。

大資料入門:HBase資料模型詳解

二、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,需要對這些概念了解清楚透徹才行。