Dynamodb - 具有相同散列键的多个rangekey条件

时间:2015-08-30 09:45:24

标签: amazon-web-services indexing amazon-dynamodb data-modeling

我是否可以知道是否为同一个哈希键提供了多个范围键条件。 例如,如果哈希键是' locality'而rangekey是' shopNo'。那么我们可以拥有以下内容 keyconditionset:

>HashKeyCondition: locality EQ  'NewYork'  
>RangeKeyCondition1: shopNo BETWEEN  1 to 10  
>RangeKeyCondition2: shopNo BETWEEN  20 to 30

当尝试上述操作时,它只考虑了一个rangeKeyCondition。有没有什么方法可以为同一个hashkey提供两个rangekey条件。我想这是可能的,因为对于给定的hashkey,此分区下的所有rangekeys都通过&sorted-sortedindex'进行索引。

我可以看到这可以通过“查询过滤器”来实现。用' OR' ConditionalOperator但过滤器在基于密钥的检索之后和​​结果返回给您之前应用。这可能效率不高,因为获取所有商店的地点然后执行过滤器可能比获得满足所提供的多个范围键条件的唯一项目慢

有人可以就如何实现这一点提出建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为这里最好的方法是与每个请求中的结果子集并行地对DynamoDB进行多个Query API调用。

例如:

请求1:HashKeyCondition:locality EQ' NewYork' AND RangeKeyCondition1:shopNo BETWEEN 1到10

请求2:HashKeyCondition:locality EQ' NewYork' AND RangeKeyCondition2:shopNo BETWEEN 20 to 30

在Java SDK中有一个AmazonDynamoDBAsyncClient,它提供API调用queryAsync: https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/AmazonDynamoDBAsyncClient.html#queryAsync%28com.amazonaws.services.dynamodbv2.model.QueryRequest%29