如何通过 AWS dynamoDB 执行范围查询

问题描述 投票:0回答:2

我有一个存储书籍信息的AWS DynamoDB表,哈希键是书籍id。有一个书价属性。

现在我想执行一个查询,返回所有价格低于某个值的书籍。如何在不扫描整个表的情况下有效地做到这一点?

对二级索引的查询似乎只能返回一组索引为某个值的条目,所以我对如何有效地执行范围查询感到困惑。非常感谢!

amazon-web-services amazon-dynamodb
2个回答
0
投票

有两件事可能让您感到困惑。具有属性范围的范围键。

为了澄清,在这种情况下,您需要一个二级索引,并且在查询索引时,您将指定一个关键条件(假设 java 并假设值上有二级索引 - 这在几乎任何 sdk 支持的语言中) 请参阅 http://docs.amazonaws.cn/en_us/AWSJavaSDK/latest/javadoc/index.html?com/amazonaws/services/dynamodbv2/model/QueryRequest.html 带 BETWEEN 条件。


0
投票

您不能进行此类查询。 DynamoDB 通过哈希键跨多个节点进行分片,因此在没有哈希键(在所有哈希键上)的情况下执行查询本质上是一次完整扫描。

针对您的情况,一种破解方法是使用一个哈希键,整个表只有一个值,但这从根本上是错误的,因为您失去了使用 DynamoDB 的所有优点。有关更多信息,请参阅热门哈希密钥问题:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html

© www.soinside.com 2019 - 2024. All rights reserved.