Вы правы, что операция Scan
при условии, что вам нужно будет только прочитать 50 записей из миллиона, является худшим из возможных решений. Это будет очень медленно и обойдется вам в копеечку, потому что при сканировании вы платите Amazon за чтение всех ваших данных - даже , если отфильтровываете большую их часть.
Выполнение 50 отдельных GetItem
запросов не так уж и плохо - это, безусловно, лучше, чем сканирование. Вы платите Amazon только за фактический извлеченный товар - вы не платите больше, потому что это 50 отдельных запросов. Конечно, если вы не хотите больших задержек, не запускайте эти запросы один за другим - запускайте их все параллельно.
Но для этого варианта использования DynamoDB обеспечивает еще лучшую работу BatchGetItem
. С помощью этой операции вы даете DynamoDB список из 50 необходимых ключей в одном HTTP-запросе, и он будет извлекать все из них (параллельно) и возвращать вам все ответы. Кажется, что BatchGetItem
лучше всего подходит для вашего случая использования.