При создании таблицы Dynamodb выберите «Первичные ключи» и «Локальные вторичные индексы» (LSI), чтобы операция запроса возвращала нужные элементы.
Операции запроса поддерживают только оценку оператора равенства для первичного ключа, но с условием (=, <, <=,>,> =, между, начало) для ключа сортировки.
Операции сканирования обычно медленнее и дороже, так как операция должна проходить через каждый элемент в вашей таблице, чтобы получить элементы, которые вы запрашиваете.
Пример:
Table: CustomerId, AccountType, Country, LastPurchase
Primary Key: CustomerId + AccountType
В этом примере вы можете использовать операцию запроса, чтобы получить:
- CustomerId с условным фильтром по AccountType
Для возврата необходимо использовать операцию сканирования:
- Все клиенты с определенным типом учетной записи
- Товары основаны на условных фильтрах по странам, т.е. все клиенты из США.
- Товары, основанные на условных фильтрах по LastPurchase, то есть всем клиентам, совершившим покупку в прошлом месяце.
Чтобы избежать операций сканирования при часто используемых операциях, создавая локальный вторичный индекс (LSI) или глобальный вторичный индекс (GSI).
Пример:
Table: CustomerId, AccountType, Country, LastPurchase
Primary Key: CustomerId + AccountType
GSI: AccountType + CustomerId
LSI: CustomerId + LastPurchase
В этом примере операция запроса может позволить вам получить:
- CustomerId с условным фильтром по AccountType
- [GSI] Условный фильтр CustomerIds для определенного AccountType.
- [LSI] CustomerId с условным фильтром для LastPurchase.