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方...