Как можно считать, с условием где в DynamoDB - PullRequest
0 голосов
/ 09 октября 2019

Допустим, у нас есть ситуация, когда вместо того, чтобы получить общее количество в таблице, получаем количество записей с определенным статусом. Мы знаем, что DynamoDb не имеет схемы и все еще должен считать каждую запись одну за другой, чтобы получить общее количество. И все же, как мы можем использовать вышеупомянутые потребности с помощью динамических запросов?

1 Ответ

0 голосов
/ 10 октября 2019

Хотя обычно запросы «Query» или «Scan» возвращают все соответствующие элементы, вы можете передать параметр Select = COUNT и попросить получить только количество подходящих элементов вместо реальных элементов. Но прежде чем вы это сделаете, есть несколько вещей, которые вы должны знать:

  1. DynamoDB все еще будет читать - и вы будете по-прежнему платить за - вседанные, даже если только для подсчета. Выполнение «сканирования» с помощью фильтра почти во всех случаях исключено, поскольку каждый раз будет считываться весь набор данных. С помощью «запроса» вы можете попросить прочитать только один раздел или непрерывный диапазон ключей сортировки в одном разделе, что в некоторых случаях может быть достаточно разумным (но, пожалуйста, подумайте, если это так, в вашем случае использования).

  2. Даже если вы на самом деле не читаете данные, а просто подсчитываете, DynamoDB по-прежнему выполняет сканирование и запросы с «подкачкой страниц», т. Е. Ваш запрос на чтение будет считывать только 1 МБ данных с диска,вернуть вам частичный счет и попросить вас подать еще один запрос для возобновления сканирования. В вашей библиотеке DynamoDB, вероятно, есть способ автоматизировать это возобновление, поэтому, например, она может выполнить тысячи или любое количество запросов, необходимых до окончательного завершения сканирования и вычисления общей суммы.

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

...