rowkey設計原則和方法


rowkey設計首先應當遵循三大原則:

1、rowkey長度原則

  rowkey是一個二進制碼流,可以為任意字符串,最大長度為64kb,實際應用中一般為10-100bytes,它以byte[]形式保存,一般設定成定長。

  一般越短越好,不要超過16個字節,注意原因如下:

  (1)目前操作系統都是64位系統,內存8字節對齊,控制在16字節,8字節的整數倍利用了操作系統的最佳特性。
  (2)hbase將部分數據加載到內存當中,如果rowkey過長,內存的有效利用率就會下降。

2、rowkey散列原則

  如果rowkey按照時間戳的方式遞增,不要將時間放在二進制碼的前面,建議將rowkey的高位字節采用散列字段處理,由程序隨即生成。低位放時間字段,這樣將提高數據均衡分布,各個regionServer負載均衡的幾率。

  如果不進行散列處理,首字段直接使用時間信息,所有該時段的數據都將集中到一個regionServer當中,這樣當檢索數據時,負載會集中到個別regionServer上,造成熱點問題,會降低查詢效率。

3、rowkey唯一原則

  必須在設計上保證其唯一性,rowkey是按照字典順序排序存儲的,因此,設計rowkey的時候,要充分利用這個排序的特點,將經常讀取的數據存儲到一塊,將最近可能會被訪問的數據放到一塊。但是這里的量不能太大,如果太大需要拆分到多個節點上去。

  所以良好的rowkey設計,應當遵循三大原則,並且能讓數據分散,從而避免熱點問題。


  本節介紹幾種常用的rowkey設計方法,以供各位學習。


免責聲明!

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



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