У меня есть таблица сообщений с ключом диапазона CreationDate ...DynamoDB: есть ли способ получить произвольную страницу без LastEvaluatedKey?
Как я могу запросить произвольную страницу? Возможно ли это, без необходимости поставки LastEvaluatedKey, возвращаемого предыдущим запросом? Это означает, что клиент должен также отслеживать это и возвращать его с каждым запросом. И это не позволяет вам перейти на страницу арбитража, не делая каждый промежуточный запрос.
Должен ли я обновить еще одну таблицу MessagePageKeys, которая просто содержит страницуKey = someTimestamp для достижения быстрого восстановления страницы?
QueryRequest queryReq = new QueryRequest();
queryReq.WithTableName(tableName);
queryReq.WithLimit(perPage);
var startIndex = startPage * perPage;
queryReq.WithExclusiveStartKey(new Key
{
HashKeyElement = new AttributeValue().WithN(hashKeyValue),
RangeKeyElement = new AttributeValue().WithN(prevKey.ToString())
});
// sort by newest (highest time signature)
queryReq.ScanIndexForward = false;
У меня уже есть система для дат, отмеченных временем unix. Но функция, включающая почтовый ящик сообщений, полезна для перехода на произвольные страницы. Поскольку my rangekey - это отметки времени, он делает непредсказуемым разбиение на страницы на произвольные ключи. – FlavorScape
смешно, только сегодня, стоя в очереди за индийской едой. Я подслушал, что человек позади меня говорит, что мы не можем перейти на страницу без последнего EvaluatedKey ... и это было хорошо, чтобы не допустить, чтобы их клиенты API получали больше данных, чем необходимо однажды. – FlavorScape
Это не то, что потребитель «знает» страницу результата, он просто хочет получить эту конкретную страницу результатов. Точно так же, как при поиске в Google, вы получаете список страниц, которые можно просмотреть внизу. 0 1 2 3 4 5 6 7 8 9 ... – FlavorScape