您當前位置:
首頁 >
互聯網 > HBase學習(十八)Hbase rowkey設計一
HBase學習(十八)Hbase rowkey設計一
來源:程序員人生 發布時間:2014-11-11 09:12:49 閱讀次數:3202次
hbase所謂的3維有序存儲的3維是指:rowkey(行主鍵),column key(columnFamily+qualifier),timestamp(時間戳)3部份組成的3維有序存儲。
1.rowkey,我們知道rowkey是行的主鍵,而且hbase只能用個rowkey,或1個rowkey范圍即scan來查找數據。所以 rowkey的設計是相當重要的,關系到你利用層的查詢效力。我們知道,rowkey是以字典順序排序的。而存儲的字節碼,字典排序,我們知道,如果是字
母,那就是字母的順序,比如,有兩個rowkey,rowkey1:aaa222,rowkey2:bbb111,那末rowkey1是排在 rowkey2前面的,由于按字典,a排在b前面,如果rowkey2的第1位也是a,那末就根據第2位來比較,如果還相同,則比較第3為,后面一樣。這 個理解了,我們在根據rowkey范圍查詢的時候,我們1般是知道startRowkey,如果我們通過scan只傳startRowKey : d開頭的,那末查詢的是所有比d大的都查了,而我們只需要d開頭的數據,那就要通過endRowKey來限制。我們可以通過設定endRowKey為:d
開頭,后面的根據你的rowkey組合來設定,1般是加比startKey大1位。比如說rowkey設計為:用戶ID-日期,那末查某個用戶某天的數 據,startKEY為3231⑵0121212,endKey為:3231+201213,那末你查到的就是用戶為3231在20121212這1天 的數據。
2.column key
column key是第2維,數據按rowkey字典排序后,如果rowkey相同,則是根據column key來排序的,也是按字典排序。
我們在設計table的時候要學會利用這1點。比如我們的收件箱。我們有時候需要按主題排序,那我們就能夠把主題這設置為我們的column key,即設計為columnFamily+主題.,這樣的設計。
3.timestamp
timestamp 時間戳,是第3維,這是個按降序排序的,即最新的數據排在最前面。這個就沒有甚么說的了。網上其他的博客也提到比較多。
本文章主要是簡單說下rowkey的字典排序即(3維有序)
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------