DynamoDB:有没有一种方法可以在没有LastEvaluatedKey的情况下获得任意页面



我有一个包含范围键CreationDate的Message表。。。

如何查询任意页面?这是否可以在不提供上一个查询返回的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;

不,不使用"lastEvaluatedKey"是不可能的。

最后一个评估的键不一定存在,它只需要是一个有效的键,这可能对您有用。例如,如果您在同一哈希密钥下有以下范围密钥:

6
9
12
15

如果你想要范围密钥大于10的所有东西,你可以创建一个范围密钥为10的独占StartKey,然后你就会得到

12
15

这与更有用的"页面边界"定义相结合(比如我想查看这一小时或这一分钟的每一项,等等)可能对你有用。我觉得很少有数据消费者会知道"我的结果在第八页,不管自我上次查询该表以来其他数据发生了什么变化"。

相关内容

  • 没有找到相关文章

最新更新