Разбивка на страницы с помощью ItemsCollection # query? - PullRequest
2 голосов
/ 20 марта 2012

В настоящее время метод запроса ItemCollection # в Ruby AWS SDK возвращает весь набор данных.Я искал исходный код Ruby AWS SDK для любой возможности разбивки на страницы, но ближайший вариант разбивки на страницы - :limit, без разбивки на страницы.В соответствии с документацией Amazon DynamoDB API (HTTP, а не Ruby) для операции Query предполагается, что МОЖЕТ быть нумерация страниц с ключом ответа LastEvaluatedKey:

Первичный ключ элемента, где остановлена ​​операция запроса,включая предыдущий набор результатов.Используйте это значение, чтобы начать новую операцию, исключая это значение в новом запросе.LastEvaluatedKey является нулевым, когда полный набор результатов запроса завершен (т. Е. Операция обработала «последнюю страницу»).

Так что я могу выполнить разбиение по страницам, добавив параметр :limit, а затем выполнивследующий запрос для значения диапазона после моего последнего Item, но я не знаю, каков общий счет, если я не выполню полный запрос.

Есть ли лучший / более простой способ достижения нумерации страниц?

1 Ответ

1 голос
/ 20 марта 2012

В зависимости от ваших потребностей, для создания полного пейджера, вероятно, потребуется два запроса, см. Запрос и сканирование в Amazon DynamoDB , в частности Count и ScannedCount :

API Amazon DynamoDB Scan и Query используют значения Count для двух разные цели.

В запросе установите для параметра Count значение true, если вы хотите Amazon От DynamoDB до укажите общее количество элементов , которые соответствуют сканированию условие фильтра или запроса вместо списка подходящих элементов .

В ответе Amazon DynamoDB возвращает значение Count для числа соответствующие элементы в запросе. Если соответствующие элементы для фильтра сканирования или условие запроса превышает 1 МБ, Count содержит частичный счетчик общее количество элементов, соответствующих запросу . Чтобы получить полный счет элементы, которые соответствуют запросу, используйте LastEvaluatedKey в последующем запрос. Повторяйте запрос, пока Amazon DynamoDB больше не возвращает LastEvaluatedKey.

[Акцент мой]

То есть, чтобы изначально избежать сложной логики, вы, вероятно, захотите запросить количество соответствующих элементов заранее и только после этого запрашивать конкретные страницы.

Удачи!

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