hbase的rowkey設計原則和實現方式

2022-08-24 02:54:10 字數 923 閱讀 4577

hbase的內部使用keyvalue的形式存在,其key是有rowkey:family:column:logtime,value是其儲存的內容。

其在region的是大多以公升序的形式排列,唯一的是logtime是以降序的形式進行排列。

所以,按照越靠近左邊的資訊越容易被檢索到。其設計時,要考慮把重要的資訊放左邊,不重要的資訊放到右邊。這樣可以提高查詢資料的速度。這樣,最重要的提高索引速度的就是設計合適的rowkey。

1:長度原則,最短越好,最大不能超過64k。太長的影響有兩點,一是極大影響了hfile的儲存效率。二是快取memstore不能得到有效利用,快取不能存放太多的資訊,造成檢索效率的降低。

2:唯一原則

保證rowkey的唯一性,這條沒有什麼要講的。

3:自己一條原則

盡量保證經常一起用的rowkey儲存在同乙個region上,有助於提公升檢索效率。但要避免熱點問題。

4:對於常用的檢索的rowkey,盡量使用高表(行多列少),二部選擇寬表(列多行少)。

1-加鹽:在rowkey前面加乙個冗餘資訊,這樣可以把資料分散到不同的region中。

優點:可以有效的防止rowkey集中分配到乙個或多個region中。有效避免了熱點問題;

缺點:無形中增加了rowkey的長度;範圍檢索得不到有效使用。

2-欄位交換,提公升權重:如果rowkey中含有幾個資訊字段,可以調整資訊欄位的順序。

缺點:對於單個資訊字段,或者無論怎麼調整都會遇到region熱點的rowkey是解決不了的。

3-隨機鍵:把rowkey進行hash化,在分配到不同的伺服器上。和加鹽的方式相似;

以下是順序讀的效能排行(由高到低,寫效能與讀效能相反):順序鍵 -> 使用加鹽鍵 -> 提公升字段鍵  -> 隨機鍵

強加幾個知識點:

1-盡量使用範圍查詢代替字首查詢;

2-資料多時,用分頁查詢;

HBase的RowKey設計原則

hbase是三維有序儲存的,通過rowkey 行鍵 column key column family和qualifier 和timestamp 時間戳 這個三個維度可以對hbase中的資料進行快速定位。hbase中rowkey可以唯一標識一行記錄,在hbase查詢的時候,有以下幾種方式 通過get方...

HBase的RowKey設計原則

hbase是三維有序儲存的,通過rowkey 行鍵 column key column family和qualifier 和timestamp 時間戳 這個三個維度可以對hbase中的資料進行快速定位。hbase中rowkey可以唯一標識一行記錄,在hbase查詢的時候,有以下幾種方式 通過get方...

hbase的rowkey設計原則

hbase是三維有序儲存的,通過rowkey 行鍵 column key column family和qualifier 和timestamp 時間戳 這個三個維度可以對hbase中的資料進行快速定位。hbase中rowkey可以唯一標識一行記錄,在hbase查詢的時候,有兩種方式 1 通過get方...