我有一个带有范围键CreationDate的消息表...
如何查询任意页面?这是否可以在不必提供上一个查询返回的LastEvaluatedKey的情况下进行?这意味着客户端还必须跟踪此信息并将其与每个请求一起返回。这不允许您跳转到仲裁页面而不进行每个中间查询。
我是否必须更新另一个只包含PageKey = someTimestamp的表MessagePageKeys以实现快速页面撤销?
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;
答案 0 :(得分:1)
不,如果不使用“lastEvaluatedKey”就不可能。
最后评估的密钥不一定存在,它可能对你有用,它只需要是一个有效的密钥。例如,如果在相同的哈希键下有以下范围键:
6
9
12
15
你想要一个范围键大于10的所有东西,你可以用范围键10
创建一个exclusiveStartKey,然后你会回来
12
15
这与“页面边界”的更有用的定义相结合(就像我希望看到这个小时或每分钟的每个项目等)可能对您有用。我觉得数据消费者很少知道“我的结果是在第八页上,不管自从我上次查询这个表以来其他数据是如何变化的”。