как получить произвольно 500 предметов из динамодии без сканирования всей таблицы - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь получить произвольные 500 элементов (гарантировано, что их больше) от Dynamodb, и похоже, что для методов get_item или query требуется первичный ключ при получении элементов из ddb, а scan - это сканирование всей таблицы, которая занимает много времени для большой таблицы. Есть ли способ получить произвольные 500 элементов без предоставления первичного ключа или сканирования всей таблицы? Спасибо

1 Ответ

0 голосов
/ 23 марта 2020

Запрос () не требует первичного ключа ...

Требуется половина ключа составного (га sh ключ + сортировка) ключа ha sh.

Другими словами, чтобы использовать Query () для возврата нескольких записей, необходимо использовать составной первичный ключ.

Если у вас нет составного первичного ключа, тогда Scan () ваш единственный вариант для самой таблицы.

Однако вы также можете создать глобальный вторичный индекс (GSI), который имеет составной первичный ключ, и использовать Query () для этого.

Также обратите внимание, что Scan () не обязательно "сканирует всю таблицу" ; при одной операции сканирования считывает до максимального количества установленных элементов (при использовании параметра Limit) или до 1 МБ данных

Query () имеет аналогичный предел чтения 1 МБ ...

В обоих случаях, чтобы прочитать более 1 МБ данных, необходимо вызвать операцию в al oop, передавая возвращенный LastEvaluatedKey как ExclusiveStartKey

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