一、Hbase基本原理
1、hbase基本介紹
HBASE是一個分布式的,面向列的開源數據庫。Hbase的存儲是基於hadoop的。因為Hadoop實現了一個分布式文件系統(HDFS),基於hadoop意味着hbase與生俱來的超強的擴展性和吞吐量,hbase采用的是key、value的存儲方式。意味着即使隨着數據量增大,也幾乎不會導致查詢的性能下降。
2、hbase存儲方式
hbase將數據按列簇分別存儲,而並非簡單的列式存儲;首先了解幾個概念:行式存儲、列式存儲、列簇式存儲。
A.行式存儲:會將一行數據存儲在一起,一行數據寫完之后再接着寫下一行數據。eg:mysql等關系型數據庫;
行式存儲在獲取一行數據時很高效,但是如果某個查詢只需要讀取表中指定列對應的數,那么行式存儲會先取出一行行的數據,再在每一行數據中截取待查找目標列。因此會導致大量的內存占用
B.列式存儲:列式存儲理論上會將一列數據存儲在一起,不同列的數據分別接種存儲。eg:kudu 、 parquet on HDFS;
列式存儲查找與行式存儲,恰恰相反,對於只查找某些列數據的請求非常高效,但是對於獲取一行的請求就比較差;
因為同一列的數據通常都具有相同的數據類型,因此列式存儲具有天然的高壓縮特性
C.列簇式存儲:列簇式存儲介於行式存儲和列式存儲之間;如果一張表只設置一個列簇,這個列簇包含所有的列,hbase中一個列簇的數據是存儲在一起的,因此這種設計模式就等同於行式存儲;如果一張表的每一列都屬於一個唯一的列簇,那么就相當於列式存儲。