Когда вы разрабатываете таблицы DynamoDB, основным фактором затрат является IOPS для чтения и записи.
Именно поэтому избегание сканирования обычно лучше.При сканировании будет потребляться значительное количество считанных операций ввода-вывода в секунду, и оно будет увеличиваться в зависимости от количества элементов в таблице, поскольку при сканировании необходимо прочитать все элементы в таблице, прежде чем возвращать соответствующие элементы.
Затем вернемся к использованию.- в случае использования SK для прогресса, было бы лучше использовать атрибуты и определить вторичные индексы, так как позже вам потребуется обновить состояние (что невозможно с PK и SK в таблице).
Таким образом, основываясь на вашем сценарии использования и информации, приведенной в вопросе, вы можете определить схему как:
PK- UserID SK- GameID GSI- Progress (PK)
Запросить всеигры по прогрессу быстро GSI Progress (PK)
Примечание: если это для конкретного пользователя;Вы можете изменить его на LSI Progress.
Запросить ход выполнения данной игры быстро (при условии, что для данного пользователя) Запрос с использованием UserID (PK) и GameID (SK) таблицы