HBase 排序順序、列元數據以及聯合查詢

HBase排序順序

所有數據模型操作 HBase 以排序順序返回數據。首先按行,然後按列族(ColumnFamily),然後是列限定符,最後是時間戳(反向排序,因此首先返回最新的記錄)。

HBase列元數據

ColumnFamily 的內部 KeyValue 實例之外不存儲列元數據。因此,儘管 HBase 不僅可以支持每行大量的列數,而且還能對行之間的一組異構列進行維護,但您有責任跟蹤列名。

獲得 ColumnFamily 存在的一組完整列的唯一方法是處理所有行。

HBase聯合查詢

HBase 是否支持聯合是該區列表中的一個常見問題,並且有一個簡單的答案:它不是,至少在 RDBMS 支持它們的方式中(例如,使用 SQL 中的等連接或外連接)。如本章所述,HBase 中讀取的數據模型操作是 Get 和 Scan,你可以參考“ ”部分

但是,這並不意味著您的應用程序不支持等效的聯合功能,但您必須自己動手。兩個主要策略是在寫入 HBase 時對數據進行非規格化,或者在您的應用程序或MapReduce 代碼中使用查找表並進行HBase表之間的連接(並且正如 RDBMS 演示的那樣,有幾種策略取決於 HBase 的大小表,例如,嵌套循環與散列連接)。那麼最好的方法是什麼?這取決於你想要做什麼,因此沒有一個適用於每個用例的答案。

ACID

ACID,指數據庫事務正確執行的四個基本要素的縮寫,即:原子性(Atomicity),一致性(Consistency),隔離性(Isolation),持久性(Durability)。

HBase 支持特定場景下的 ACID,即對同一行的 Put 操作保證完全的 ACID(HBASE-3584增加了多操作事務,HBASE-5229增加了多行事務,但原理是一樣的)


分享到:


相關文章: