2017-08-04 104 views
0

我對DynamoDB相當新穎。我有一個要求,我需要設計一個表在手機上共享代碼。代碼細節將作爲屬性存儲。例如:DynamoDB:搜索哈希鍵或範圍鍵

  • 'A' 共享的代碼爲 '1234567890'
  • 'A' 共享一個到 '1234567891' 代碼
  • 'B' 共享的代碼爲 '1234567890'
  • 「B '共享代碼到'1234567891'

'A'和'B'是用戶'1234567890'和'1234567891'是收件人。如果我使用UserId散列鍵和RecipientNumber作爲範圍鍵,我可以找出與用戶共享代碼的收件人。我的要求是查詢兩種方式: 1.與用戶共享代碼的收件人列表(在查詢中傳遞userId) 2.與收件人共享的代碼列表(由與收件人共享代碼的所有用戶)

什麼應該是設計表的正確方法?

回答

0

您需要定義你的表是這樣的:

用戶 - 字符串 - 分區鍵

收件人 - 字符串 - 範圍鍵

,並添加以下全局二級索引:

收件人 - 字符串 - GSI分區鍵

用戶 - 字符串 - GSI範圍鍵

定期分區鍵可以讓你找到一個用戶的所有收件人,而GSI將允許您通過收件人找到的所有用戶。

P.S.您可以在此video中瞭解有關DynamoDB設計模式的更多信息,特別是有關雙向查詢here的信息。