Как получить набор из 10 записей каждый раз для нескольких ключей в DynamoDB, используя BatchGetItem? - PullRequest
0 голосов
/ 01 февраля 2020

UseCase: я получаю несколько запросов от разных клиентов. Итак, мне нужно сохранить эти запросы в базе данных (предпочтительно DynamoDB), отсортировать их в порядке входящего времени и выбрать наборы 10 для всех клиентов за один раз.

Например: если есть 5 клиентов: C1, C2, C3, C4, C5 и все отправляют 50 запросов одновременно, которые я сохраняю в БД с их отметкой времени. Теперь мне нужно получить только 10 объектов запросов от всех клиентов в порядке отметки времени, а не получить их все. Итак, запрос, который пришел первым, должен быть обработан первым.

Как я могу реализовать это с помощью DynamoDB GSI и BatchGetItem API? Или есть какой-то другой способ, которым это может быть реализовано?

1 Ответ

0 голосов
/ 01 февраля 2020

Это идеальный вариант использования для очередей SQS FIFO. Похоже, ваш лучший вариант.

Если вам действительно нужно сделать это с DynamoDB, вы не собираетесь использовать BatchGetItem, вы будете использовать Query. BatchGetItem - для получения нескольких элементов за один запрос , когда вы знаете ключи записей, которые вы хотите . С помощью запроса вы указываете ключ разделения и, необязательно, ключ сортировки или функцию для ключа сортировки. Самая большая проблема, с которой вы столкнетесь при использовании DynamoDB, заключается в том, что вам нужно убедиться, что вы получаете запись только один раз, поэтому вам нужно будет что-то сделать, чтобы удалить запись или обновить запись так, чтобы ее не запрашивали. снова. Это все выполнимо, но опять же, SQS больше подходит для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...