Точка 1: предположение верно
Точка 2: Возможно, это не лучший подход, потому что Dynamodb допускает операцию запроса только для ключа раздела.Если вы не знаете ключ раздела, вам нужно отсканировать (дорогая операция - не рекомендуется) таблицу или создать GSI.
Мое предлагаемое решение: -
Поскольку ваш вариант использования требует получения данных по идентификатору счета-фактуры, лучше использовать Invoice id
в качестве ключа раздела.
Идентификатор счета-фактуры - ключ раздела
В случаеесли у вас есть другой вариант использования, чтобы получить все счета для client id
, вы можете создать GSI (Глобальный вторичный индекс) с
Идентификатор клиента - Ключ раздела
Идентификатор счета - Ключ сортировки
GSI
Важное примечание: -
В таблице DynamoDB каждое значение ключа должно бытьуникальный.Однако значения ключей в глобальном вторичном индексе не обязательно должны быть уникальными.
Вы можете запросить основную таблицу и GSI отдельно для вашего варианта использования.Для более подробной информации, пожалуйста, прочитайте о GSI.
Еще один важный момент, GSI будет стоить вас.Создавайте GSI, только если у вас есть для него сценарий использования.