您好,登錄后才能下訂單哦!
本篇內容主要講解“hbase表結構的詳細介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“hbase表結構的詳細介紹”吧!
HBase 中的每一張表就是所謂的 BigTable。BigTable 會存儲一系列的行記錄,行記錄有三個基本類型的定義:Row Key、Time Stamp、Column。
1、Row Key 是行在 BigTable 中的唯一標識。
2、Time Stamp 是每次數(shù)據(jù)操作對應關聯(lián)的時間戳,可以看做 SVN 的版本。
3、Column 定義為< family>:< label>,通過這兩部分可以指定唯一的數(shù)據(jù)的存儲列,family 的定義和修改需要 對 HBase 進行類似于 DB 的 DDL 操作,而 label ,不需要定義直接可以使用,這也為動態(tài)定制列提供了一種手段 。family 另一個作用體現(xiàn)在物理存儲優(yōu)化讀寫操作上,同 family 的數(shù)據(jù)物理上保存的會比較臨近,因此在業(yè)務設計的過程中可以利用這個特性。
HBase 以表的形式存儲數(shù)據(jù)。表由行和列組成。列劃分為若干個列族(row family),如下圖所示。
1、 Row Key
與 NoSQL 數(shù)據(jù)庫一樣,Row Key 是用來檢索記錄的主鍵。訪問 HBase table 中的行,只有三種方式:
1)通過單個 Row Key 訪問。
2)通過 Row Key 的 range 全表掃描。
3)Row Key 可以使任意字符串(最大長度是64KB,實際應用中長度一般為 10 ~ 100bytes),在HBase 內部,Row Key 保存為字節(jié)數(shù)組。
在存儲時,數(shù)據(jù)按照 Row Key 的字典序(byte order)排序存儲。設計 Key 時,要充分排序存儲這個特性,將經(jīng)常一起讀取的行存儲到一起(位置相關性)。
注意 字典序對 int 排序的結果是 1,10,100,11,12,13,14,15,16,17,18,19,20,21,..., 9,91,92,93,94,95,96,97,98,99。要保存整形的自然序,Row Key 必須用 0 進行左填充。
行的一次讀寫是原子操作(不論一次讀寫多少列)。這個設計決策能夠使用戶很容易理解程序在對同一個行進行并發(fā)更新操作時的行為。
2、 列族
HBase 表中的每個列都歸屬于某個列族。列族是表的 Schema 的一部分(而列不是),必須在使用表之前定義。列名都以列族作為前綴,例如 courses:history、courses:math 都屬于 courses 這個列族。
訪問控制、磁盤和內存的使用統(tǒng)計都是在列族層面進行的。在實際應用中,列族上的控制權限能幫助我們管理不同類型的應用, 例如,允許一些應用可以添加新的基本數(shù)據(jù)、一些應用可以讀取基本數(shù)據(jù)并創(chuàng)建繼承的列族、一些應用則只允許瀏覽數(shù)據(jù)(甚至可能因為隱私的原因不能瀏覽所有數(shù)據(jù))。
3、 時間戳
HBase 中通過 Row 和 Columns 確定的一個存儲單元稱為 Cell。每個 Cell 都保存著同一份數(shù)據(jù)的多個版本。 版本通過時間戳來索引,時間戳的類型是 64 位整型。時間戳可以由HBase(在數(shù)據(jù)寫入時自動)賦值,此時時間戳是精確到毫秒的當前系統(tǒng)時間。時間戳也 可以由客戶顯示賦值。如果應用程序要避免數(shù)據(jù)版本沖突,就必須自己生成具有唯一性的時間戳。每個 Cell 中,不同版本的數(shù)據(jù)按照時間倒序排序,即最新的數(shù)據(jù)排在最前面。
為了避免數(shù)據(jù)存在過多版本造成的管理(包括存儲和索引)負擔,HBase 提供了兩種數(shù)據(jù)版本回收方式。 一是保存數(shù)據(jù)的最后 n 個版本,二是保存最近一段時間內的版本(比如最近七天)。用戶可以針對每個列族進行設置。
4、 Cell
Cell 是由 {row key,column(=< family> + < label>),version} 唯一確定的單元。Cell 中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存儲。
Table 在行的方向上分割為多個HRegion,每個HRegion分散在不同的RegionServer中。
StoreFile以HFile格式存儲在HDFS中。
到此,相信大家對“hbase表結構的詳細介紹”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。