AWS Dynamodb BatchGet с FilterExpression

Я хочу получить список элементов из таблицы Dynamodb на основе некоторых фильтров. В фильтрах у меня есть список хэш-ключей (должны быть возвращены записи, содержащие один из этих хэш-ключей) и еще несколько фильтров для записи, например, поле «статус», имеющее значение «одобрено». Таким образом, если элемент имеет хэш-ключ из моего списка И значение поля статуса "одобрено", оно должно быть возвращено.
Как я могу это сделать?
Я не могу использовать QUERY, потому что, как я понимаю, он ожидает только одно значение хеш-ключа.
Я не могу использовать BatchGet, потому что он не принимает выражения фильтра.


person Aakash Mangal    schedule 27.04.2018    source источник


Ответы (1)


Вы можете использовать BatchGet, чтобы получать элементы и фильтровать их своей собственной функцией.

Документ: Работа с запросом

Операция запроса может получить максимум 1 МБ данных. Это ограничение применяется до оценки выражения фильтра.

Как видите, использование выражения фильтра не может помочь вам получить больше данных, что также не может сэкономить вашу емкость чтения (деньги). Поэтому я думаю, что нет никакой разницы, фильтровать локально или на стороне сервера.

Если вы хотите, чтобы динамо-машина выполняла за вас тяжелую работу по фильтрации данных, вы можете попробовать "multi-query" вместо BatchGet.

Вот несколько соответствующих ссылок: В чем разница между BatchGetItem и Запрос в DynamoDB?

person Sky.Li    schedule 28.04.2018