我目前正在開發用於將用戶的當前位置歷史存儲到HBase表中的解決方案原型。 (假設有數以億計的用戶)。 每個用戶對位置的試用都存儲在HBase表中。 然後,將這種位置的蹤跡用作少數離線數據分析作業的一部分。用於存儲時間序列用戶數據的HBase架構
以下是2種主數據訪問模式:
我應該能夠通過所有或位置的一個子集來掃描(根據時間範圍)從所存儲的位置試驗的特定用戶的。
對於離線數據分析,我應該能夠通過所有用戶的 的時間範圍內的所有位置進行掃描。
鑑於上述要求,我想出了以下行按鍵設計:
<uid>_<timestamp>
其中「UID」代表用戶ID和「時間戳」表示時間在該位置被檢測並保存。
通過這種行鍵設計,實現訪問模式#1是直接的 - 掃描請求可以有一個開始鍵和結束鍵,給定的時間戳附加到特定的uid。
但是,棘手的部分是訪問模式#2,我正在尋求來自HBase專家的幫助。 因爲,我需要掃描過去6個月的所有用戶說,我最終不會使用任何鍵與掃描操作。這對掃描整個HBase表格有影響。我覺得效率低下。而且,我的數據容量預計會隨着2K /秒的寫入負載而提前增長。
我看了OpenTSDB,這是許多人在公開論壇中指出的。但我無法將該解決方案與我的數據訪問模式聯繫起來。
我正在尋找優化此架構的幫助,這將導致避免全表掃描。
你有時間戳的限制嗎?也就是說,你將只保留過去6個月的最後時間戳? – Udy
是的。我可能會保留最近一年的數據。我將以這種方式配置TTL。數據訪問模式#2的 –
- 時間範圍應該是靈活的還是固定的? – Udy