hbase三維(rowkey、olumn key、timestamp)設計

hbase所謂的三維存儲的三維是指:rowkey(行主鍵),column key(columnFamily+qualifier),timestamp(時間戳)

先說rowkey,我們知道rowkey是行的主鍵,而且hbase只能用個rowkey,或者一個rowkey範圍即scan來查找數據。所以rowkey的設計是至關重要的,關係到你應用層的查詢效率。我們知道,rowkey是以字典順序排序的。而存儲的字節碼,字典排序,我們知道,如果是字母,那就是字母的順序,如,有兩個rowkey,rowkey1:aaa222,rowkey2:bbb111,那麼rowkey1是排在rowkey2前面的,因爲按字典,a排在b前面,如果rowkey2的第一位也是a,那麼就根據第二位來比較,如果還相同,則比較第三爲,後面同樣。這個理解了,我們在根據rowkey範圍查詢的時候,我們一般是知道startRowkey,如果我們通過scan只傳startRowKey : d開頭的,那麼查詢的是所有比d大的都查了,而我們只需要d開頭的數據,那就要通過endRowKey來限制。我們可以通過設定endRowKey爲:d開頭,後面的根據你的rowkey組合來設定,一般是加比startKey大一位。比如說rowkey設計爲:用戶ID-日期,那麼查某個用戶某天的數據,startKEY爲3231-20121212,endKey爲:3231+201213,那麼你查到的就是用戶爲3231在20121212這一天的數據。

column key

column key是第二維,數據按rowkey字典排序後,如果rowkey相同,則是根據column key來排序的,也是按字典排序。
我們在設計table的時候要學會利用這一點。比如我們的收件箱。我們有時候需要按主題排序,那我們就可以把主題這設置爲我們的column key,即設計爲columnFamily+主題.,這樣的設計。

timestamp

timestamp 時間戳,是第三維,這是個按降序排序的,即最新的數據排在最前面。這個就沒有什麼說的了。網上其他的博客也提到比較多。
發佈了90 篇原創文章 · 獲贊 9 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章