2017-04-14 84 views
0

我來自sql背景,缺少一些基礎概念。我有我的MySQL數據分爲5列,其中我需要兩列進行數據過濾。在sql中,查詢很簡單,我可以在這兩列上放置一個索引,並且可以根據我的where子句中爲這兩列定義的某個範圍獲取數據。hbase的最佳rowkey設計

這兩列中的數據像時間戳一樣以單調遞增的方式出現。什麼可以是設計hbase的最佳方式。我正在考慮把時間戳作爲rowkey與熱點的某種措施。但是對於每個查詢,我需要將範圍過濾器放在rowkey中,然後根據第二列掃描結果和過濾器。我不確定這是否足夠快或不。那麼索引的hbase等值是多少?

還有一小鬼一點要注意的是,我只想要一次加載數據,然後進行只讀請求。

任何幫助,高度讚賞。

回答

0

RowKey需要爲您獨一無二。是的,你可以這樣做,但我認爲你應該使用時間戳的其他參數。例如;時間戳+用戶ID。這對你是安全的。認爲你有許多hbase客戶端,他們編寫一個hbase服務器。 2客戶端可以同時寫入hbase服務器。當然,你不需要在你的rowkey中寫入所有的屬性。這不會是真的。

0

這取決於你最常執行什麼類型的查詢。如果您主要需要過濾一列,而不是建議您將此列與時間戳一起放在行鍵中。 對,例如:

rowkey = shardKey + column + timestamp 

如果同時使用過濾比

rowKet = shardKey + column1 + column2 +timestamp 

在第一個案件shardKey或許應該像hash(column) % number_of_regions,並在seccond hash(column1 + column2) % number_of_regions。因此,您始終可以獲取特定列1和列2組合的時間序列數據。或者,如果您需要兩者,請考慮製作幾張表格,因爲您要寫一次。