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


一:hbase的存儲形式

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

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

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

二:rowkey的設計原則

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

2:唯一原則

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

3:自己一條原則

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

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

三:rowkey引起熱點問題的集中解決方法

1-加鹽:在rowkey前面加一個冗余信息,這樣可以把數據分散到不同的region中。

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

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

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

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

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

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

 

強加幾個知識點:

1-盡量使用范圍查詢代替前綴查詢;

2-數據多時,用分頁查詢;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM