HBase的RowKey設計原則

HBase的RowKey設計原則

Rowkey長度原則

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

建議越短越好,不要超過16個字節,原因如下:

(1)數據的持久化文件HFile中是按照KeyValue存儲的,如果Rowkey過長比如100個字節,1000萬列數據光Rowkey就要佔用100*1000萬=10億個字節,將近1G數據,這會極大影響HFile的存儲效率;
(2)MemStore將緩存部分數據到內存,如果Rowkey字段過長內存的有效利用率會降低,系統將無法緩存更多的數據,這會降低檢索效率。因此Rowkey的字節長度越短越好。
(3)目前操作系統是都是64位系統,內存8字節對齊。控制在16個字節,8字節的整數倍利用操作系統的最佳特性。

散列原則

如果Rowkey是按時間戳的方式遞增,不要將時間放在二進制碼的前面,建議將Rowkey的高位作爲散列字段,由程序循環生成,低位放時間字段,
這樣將提高數據均衡分佈在每個Regionserver實現負載均衡的機率。如果沒有散列字段,首字段直接是時間信息將產生所有新數據都在一個
RegionServer上堆積的熱點現象,這樣在做數據檢索的時候負載將會集中在個別RegionServer,降低查詢效率。

唯一原則

必須在設計上保證其唯一性,rowkey是按照字典順序排序存儲的,因此,設計rowkey的時候,要充分利用這個排序的特點。

Hbase二級索引

(1):HBase二級索引的設計(案例講解)
http://www.cnblogs.com/MOBIN/p/5579088.html
(2):hbase中二級索引的實現–ihbase
http://kabike.iteye.com/blog/2095696
(3):HBase高性能複雜條件查詢引擎
http://blog.csdn.net/bluishglc/article/details/31799255

http://blog.sina.com.cn/s/blog_4a1f59bf01018apd.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章