Вопросы по результату запроса DynamoDB

В настоящее время я думаю о том, как мне писать запросы для DynamoDB. У меня есть вопросы ниже, которые, я надеюсь, кто-то может посоветовать мне по этому поводу.

Данные сценарии: у меня есть миллион записей в таблице.

Вопросы:

  1. Когда я запрашиваю, могу ли я получить 1000 записей в пакетах вместо 1 миллиона записей за один раз?

  2. Время, затрачиваемое на получение 1000 записей, аналогично 1 миллиону записей?

  3. Что произойдет, если я достигну предела в 1 МБ или своей пропускной способности для таблицы, чтобы я мог снова получить оставшиеся записи?

Заранее спасибо!


person K.Liu    schedule 07.07.2015    source источник


Ответы (1)


1) Да, вы можете указать лимит на запрос (1000 в вашем случае).
2) Нет. Время не то. Больше записей означает больше времени, потому что вам нужно будет получить больше страниц (большая часть времени будет потрачена на обмен данными по сети)
3) Если вы превысите ограничение в 1 МБ, Dynamo предоставит LastEvaluatedKey. Вы повторяете запрос и передаете LastEvaluatedKey до тех пор, пока не извлечете все (по сути, вы извлекаете в цикле).
Если вы достигаете заданных пределов пропускной способности, вы либо увеличиваете лимиты, либо отступаете (т. е. вам нужно регулировать потребление оставаться в рамках)

Ссылка: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

person Mircea    schedule 07.07.2015
comment
1) Итак, как мне начать с 1001-й записи и снова получить ее? Используя LastEvaluatedKey? 2) Значит, запрос функции будет висеть там до тех пор, пока не будет получен 1 миллион записей, прежде чем вернуть мне результат? - person K.Liu; 07.07.2015
comment
1) Вы звоните, говоря запрос с лимитом = 1000. Вы получаете результаты + последний ключ. Вы делаете еще один вызов, говоря запрос с limit=1000 и excelStartKey = lastKey из предыдущего вызова. Dynamo начнет выдачу результатов с последнего ключа, а не с начала. вы продолжаете делать это, пока не получите все. 2) нет. Я говорил об общем времени, необходимом для получения 1 миллиона записей, а не об одном вызове. см. 1) в этом комментарии - person Mircea; 07.07.2015
comment
если я сделаю один вызов запроса для 1000 и 2000 записей, будет ли время одинаковым? Насколько я понимаю, это хеш-таблица, поэтому время должно быть таким же, как O (1). - person K.Liu; 07.07.2015
comment
ну... вроде. Dynamo по-прежнему должен собирать предметы и отправлять их + время передачи по сети будет больше. но да в принципе - person Mircea; 07.07.2015