首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在DynamoDB中反向扫描索引?

如何在DynamoDB中反向扫描索引?
EN

Stack Overflow用户
提问于 2014-10-08 13:56:58
回答 2查看 23.7K关注 0票数 13

我目前正在使用DynamoDB,但在扫描时遇到问题。通过使用ExclusiveStartKey,我能够以正向顺序获得分页结果。但是,无论我将ScanIndexForward设置为true还是false,我都会从扫描操作中获得正向顺序的结果。如何在DynamoDB中以逆序从Scan中获取结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-25 23:22:17

ScanIndexForward是按照要查询的表或索引的范围键降序获取项的正确方法。从AWS API Reference

指定索引的升序(true)或降序(false)遍历的值。DynamoDB返回反映由范围键确定的请求顺序的结果。如果数据类型为Number,则以数字顺序返回结果。对于字符串类型,按照ASCII字符代码值的顺序返回结果。对于Binary类型,DynamoDB在比较二进制值时将二进制数据的每个字节视为无符号。

基于docs for Scan,我得出结论:没有办法 Scan in reverse。但是,如果您需要这样做,我会说您没有正确地使用DynamoDB。在为DyanmoDB这样的数据库设计模式时,您应该根据预期的查询来规划模式,以确保几乎所有的应用程序查询都具有良好的索引。扫描更多的是为了系统管理操作,或者是为了输入到MapReduce或分析。“扫描操作总是扫描整个表,然后筛选出所需的值以提供所需的结果,实质上是添加了从结果集中删除数据的额外步骤。”(Query and Scan Performance)这可能导致performance problems and other issues

使用DynamoDB从根本上不同于使用传统的关系数据库,并且需要在使用方式上有很大的改变。您需要决定DynamoDB在存储和性能、可靠性和可用性方面的优势是否值得接受它的限制。

票数 14
EN

Stack Overflow用户

发布于 2017-03-22 14:29:54

到目前为止,dynamoDB扫描无法向您返回排序的结果。

您需要使用带有hashkey和range字段的新全局辅助索引(GSI)的查询。诀窍是使用一个hashkey,它为表中的所有数据分配了相同的值。

我建议为所有数据创建一个新字段,并将其命名为"Status“,并将值设置为"OK”或类似的值。

然后,获取所有排序结果的查询将如下所示:

代码语言:javascript
运行
复制
{
    TableName: "YourTable",
    IndexName: "Status-YourRange-index",
    KeyConditions: {
        Status: {
            ComparisonOperator: "EQ", 
            AttributeValueList: [ 
                "OK"
            ]
        }
    },
    ScanIndexForward: false
}

有关如何编写GSI查询的文档可以在以下位置找到:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26250095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档