2016-04-29 85 views
1

我想深入瞭解如何爲以下用例和原因設計我的DynamoDB表格。我已閱讀the best practices,但我不確定自己對此有充分的理解。DynamoDB表格格式

主要用途是每組用戶每週輸入一次。我需要按照每個用戶組的最近條目列出這些條目。我還需要能夠輕鬆(或快速)獲取每個組的最新條目。

在閱讀文章之前,我的第一個天真的想法是爲每個組分別使用不同的表格,然後每個條目只有一個唯一的分區鍵和一個排序鍵,從日期轉換爲秒。但在閱讀完這篇文章後,這種方法似乎違反了分區設計,因爲它不會使每個項目成爲一個新的分區?

我意識到最新的條目可以很容易地緩存在我的Web服務器上,但我很好奇,看看它是否會影響設計。

任何指導?

回答

1

在我看來,最佳表的設計應該是這樣的:

  • 用戶羣體作爲分區鍵
  • 時間戳作爲排序鍵

這並不違反任何分區設計,因爲在具有基於分區和排序鍵的主鍵的表中,只要他們有幾個項目,就可以在多個項目上使用相同的分區鍵不同的排序鍵。這樣,你可以很容易地查詢時間戳排序的用戶組條目,獲取最新條目。

如果您想充分利用您的預配置吞吐量,您必須注意您的數據是均勻分佈在整個分區鍵值之間。如果您有20個分區,並且只有其中一個或兩個被大量訪問,您會注意到性能下降很多。

但是,在您的場景中,每個分區每個分區都添加一個條目,上述設計將非常有效。

+0

太棒了。昨晚睡了之後,這個想法也出現在我的腦海裏。感謝您對吞吐量的建議。我沒有考慮那麼多。 – ProdigousRanger

+0

這並不能有效覆蓋(即沒有掃描或多重查詢)「我還需要能夠輕鬆(或快速)獲取每個組的最新條目。」 –

+0

是的。具有'ScanIndexForward = false'(降序)和'Limit = 1'的查詢將返回用戶組的最新條目。我不認爲有更高性能的方式。 – birnbaum