[Phoenix] 四、加鹽表


摘要: 在密碼學中,加鹽是指在散列之前將散列內容(例如:密碼)的任意固定位置插入特定的字符串。這個在散列中加入字符串的方式稱為“加鹽”。其作用是讓加鹽后的散列結果和沒有加鹽的結果不相同,在不同的應用情景中,這個處理可以增加額外的安全性。

1. 什么是加鹽?

在密碼學中,加鹽是指在散列之前將散列內容(例如:密碼)的任意固定位置插入特定的字符串。這個在散列中加入字符串的方式稱為“加鹽”。其作用是讓加鹽后的散列結果和沒有加鹽的結果不相同,在不同的應用情景中,這個處理可以增加額外的安全性。而Phoenix中加鹽是指對pk對應的byte數組插入特定的byte數據。

2. 加鹽能解決什么問題?

加鹽能解決HBASE讀寫熱點問題,例如:單調遞增rowkey數據的持續寫入,使得負載集中在某一個RegionServer上引起的熱點問題。

3. 怎么對表加鹽?

在創建表的時候指定屬性值:SALT_BUCKETS,其值表示所分buckets(region)數量, 范圍是1~256。

CREATE TABLE table (key VARCHAR PRIMARY KEY, col VARCHAR) SALT_BUCKETS = 8;

4. 加鹽的原理是什么?

加鹽的過程就是在原來key的基礎上增加一個byte作為前綴,計算公式如下:

new_row_key = (++index % BUCKETS_NUMBER) + original_key

下圖展示了自增rowkey通過加鹽被打散寫入到各個region中的過程:

 

5. 一個表“加多少鹽合適”?

  • 當可用block cache的大小小於表數據大小時,較優的slated bucket是和region server數量相同,這樣可以得到更好的讀寫性能。
  • 當表的數量很大時,基本上會忽略blcok cache的優化收益,大部分數據仍然需要走磁盤IO。比如對於10個region server集群的大表,可以考慮設計64~128個slat buckets。

6. 加鹽時需要注意

  • 創建加鹽表時不能再指定split key。
  • 太大的slated buckets會減小range查詢的靈活性,甚至降低查詢性能。

References

 
轉自:https://yq.aliyun.com/articles/532313

 


交流

如果大家對HBase有興趣,致力於使用HBase解決實際的問題,歡迎加入Hbase技術社區群交流:

微信HBase技術社區群,假如微信群加不了,可以加秘書微信: SH_425 ,然后邀請您。

 

 

​  釘釘HBase技術社區群


免責聲明!

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



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