這是我試圖在腦海中澄清的 AWS 認證示例問題。問題是為了能夠創建一個排行榜,我可以在其中按用戶或游戲查詢 TopScores,我需要更新此表以支持這個新問題:
A popular multiplayer online game is using an Amazon DynamoDB table named GameScore to track users’ scores. The table is configured with a partition key UserId and a sort key GameTitle as shown in the diagram below:

答案自然是 GSI,因為它是一個現有的表,但答案是建議創建一個名為GameTitleIndex的索引,其中包含GameTitle和TopScore
我覺得這是不正確的,因為如果我用 JUST 創建一個 GSI TopScore- 主鍵已經被投影(所以它已經包含UserIdand GameTitle)。
人家有什么建議?
uj5u.com熱心網友回復:
這不是關于主鍵是否投影到 GSI(它們將是),而是擁有索引的真正意義在于查詢除基表的主鍵之外的屬性。
換句話說,在創建 GSI、UserID 和 GameTitle 之后,即使它們將被投影,但 UserId 不會是主鍵,或者 GameTitle 將是 GSI 中的排序鍵(當然它們不會是)。
假設您有這樣的要求:-
找到 Galaxy Invaders 游戲的最高分?
哪個用戶在 Galaxy Invaders 中得分最高?
您將如何根據 just 查詢 GSI TopScores,這將毫無意義。
但是,如果您將 GameTitle 作為 pk 并將 Scores 作為 GSI 的排序鍵,您可以輕松地根據 gametitle 查詢并找到最高分,甚至是該游戲中得分最高的用戶。
你應該盡量記住問題的原始要求Create a leaderboard where I can query the TopScores by User or by Game。
用于查詢操作的檔案,以便更好地理解查詢如何幫助基于 pk 獲取多條記錄
uj5u.com熱心網友回復:
想想你的訪問模式。如果將分數設為磁區鍵,則您無法表達對給定游戲最高分數的查詢。僅僅因為屬性被投影并不意味著它被適當地索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/430424.html
