hbase所謂的三維有序儲存_hadoop
來源:互聯網
上載者:User
hbase所謂的三維有序儲存的三維是指:rowkey(行主鍵),column key(columnFamily+ qualifier ),timestamp(時間戳記)三部分組成的三維有序儲存。
1.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這一天 的資料。
2.column key
column key是第二維,資料按rowkey字典排序後,如果rowkey相同,則是根據column key來排序的,也是按字典排序。
我們在設計table的時候要學會利用這一點。比如我們的收件匣。我們有時候需要按主題排序,那我們就可以把主題這設定為我們的column key,即設計為columnFamily+主題.,這樣的設計。
3.timestamp
timestamp 時間戳記,是第三維,這是個按降序排序的,即最新的資料排在最前面。這個就沒有什麼說的了。網上其他的部落格也提到比較多。