HBase的Rowkey設計的3個原則?
一、rowkey長度原則
rowkey是一個二進制碼流,可以為任意字符串,最大長度為64kb,實際應用中一般為10-100bytes,它以byte[]形式保存,一般設定成定長。
一般越短越好,不要超過16個字節,注意原因如下:
1、目前操作系統都是64位系統,內存8字節對齊,控制在16字節,8字節的整數倍利用了操作系統的最佳特性。
2、hbase將部分數據加載到內存當中,如果rowkey過長,內存的有效利用率就會下降。
二、rowkey散列原則
如果rowkey按照時間戳的方式遞增,不要將時間放在二進制碼的前面,建議將rowkey的高位字節采用散列字段處理,由程序隨即生成。低位放時間字段,這樣將提高數據均衡分布,各個regionServer負載均衡的幾率。
如果不進行散列處理,首字段直接使用時間信息,所有該時段的數據都將集中到一個regionServer當中,這樣當檢索數據時,負載會集中到個別regionServer上,造成熱點問題,會降低查詢效率。
三、rowkey唯一原則
必須在設計上保證其唯一性,rowkey是按照字典順序排序存儲的,因此,設計rowkey的時候,要充分利用這個排序的特點,將經常讀取的數據存儲到一塊,將最近可能會被訪問的數據放到一塊。但是這里的量不能太大,如果太大需要拆分到多個節點上去。
所以良好的rowkey設計,應當遵循三大原則,并且能讓數據分散,從而避免熱點問題。本節介紹幾種常用的rowkey設計方法,以供同學們學習。