本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 DynamoDB 中,物品集合是共享相同分割區索引鍵值的物品群組,這表示這些物品是相關聯的。項目集合是在 DynamoDB 中建立 one-to-many關係模型的主要機制。物品集合只能存在於配置為使用複合主鍵的資料表或索引。
注意
物品集合可以存在於基底資料表中,也可以存在於次要索引中。有關物品集合如何與索引互動的詳細資訊,請參閱 本機次要索引中的項目集合。
請考慮下表,其中顯示三位不同的使用者及其遊戲內物品清單:

對於每個集合中的特定物品,排序索引鍵是由用於將資料分組的資訊 (例如 inventory::armor
、inventory::weapon
或 info
) 組成的串連。每個物品集合可以具有不同組合的屬性作為排序索引鍵。使用者 account1234
具有 inventory::weapons
物品,而使用者 account1387
沒有 (因為他們還沒有找到)。使用 account1138
只使用兩個物品作為排序索引鍵 (因為他們還沒有物品清單),而其他使用者使用三個物品。
DynamoDB 允許您選擇性地從這些物品集合中擷取物品,以執行以下操作:
-
從特定使用者擷取所有物品
-
從特定使用者擷取一個物品
-
擷取屬於特定使用者的特定類型的所有物品
使用物品集合組織資料來加快查詢
在此範例中,這三個物品集合中的每個物品都代表一個玩家,和我們根據遊戲和玩家的存取模式選擇的資料模型。遊戲需要什麼資料? 什麼時候需要? 需要的頻率為何? 這樣做的成本是多少? 這些資料建模決策是根據這些問題的答案做出。
在這個遊戲中,有一個頁面為玩家呈現其武器庫存清單,還有另一個頁面呈現盔甲。玩家開啟他們的庫存清單時,會先顯示武器,因為我們希望該頁面能夠以極快速度載入,之後才會載入後續的庫存清單頁面。隨著玩家獲得更多的遊戲內物品,這些物品類型可能會相當大,因此我們決定每個庫存清單頁面在資料庫的玩家物品集合中,都獨立自成一個項目。
以下區段詳細介紹如何透過 Query
操作與物品集合互動。