2013-10-23 82 views
3

我正在使用Amazon DynamoDB爲活動流存儲基於事件的數據。哪個哈希鍵最適合DynamoDB中的事件數據?

我自動爲每個月創建一個新表,並打算將事件數據存儲在每個相關表中。這樣,只要刪除舊錶格,我可以在需要時快速刪除舊的月份,並且可以更好地調整到更新的表格。

但是,根據閱讀亞馬遜文檔,我可以看到散列鍵本身非常重要。

預置吞吐量取決於主鍵選擇和單個項目的工作負載模式。在存儲數據時,Amazon DynamoDB將一個表項目分成多個分區, 主要基於散列鍵元素分配數據。與表關聯的預配置吞吐量在分區之間也均勻分配 ,而不跨 分區跨預配吞吐量共享。

我很難找到我的頭。

所以我的問題,與上面的是一種精神,這散列鍵是在這兩者之間更好:

1382465533_john.doe

或:

john.doe_1382465533

上述鍵是用戶標識和事件時間戳的組合。

如何將這些表將被查詢...

這些表將有一系列關鍵作爲,不要求這個用例。

此數據將用於爲用戶構建活動源。

當事件發生時,將個人活動ID推送(扇出)到用戶關注者redis列表中(每個用戶一個列表);

因此,當用戶請求的流,我們做到以下幾點:通過activityid的從Redis的

  • 環activityid年代

    1. 獲取列表和構建BatchGetItem查詢拉出來DynamoDB的。

    考慮到這一切,我需要了解的是如何最好地在活動表中定義我的散列鍵。首先是時間戳或首先使用userid。 DynamoDB使用什麼邏輯來自動分區散列鍵?

    在此先感謝您的任何建議。

  • 回答

    2

    按你的問題,我會說,這不要緊,你如何撰寫你的散列鍵,你將有使用精確值散列鍵查詢您的表,DynamoDB會將其作爲字符串反正。另一件事是,如果你正在撰寫了一系列關鍵,那麼你可能要組成它如下

    john.doe_1382465533

    ,因此您可以輕鬆地查詢你的表像這樣

    哈希鍵=什麼的,範圍鍵> = john.doe_1382460000

    這就是說,也許你可以擺脫你的Redis ACTI的

    散列關鍵字:用戶ID

    範圍鍵:時間戳

    活動的其他數據

    因此,而不是推動通過直接將其集成到DynamoDB這樣VITY飼料DynamoDB中的活動以及活動ID添加到Redis中,您只需將其推入並從同一DynamoDB表中進行查詢即可。我不知道這是否與您的其他應用程序兼容,但這是一個想法。