有没有办法在 DynamoDB 中查询多个哈希键?

有没有办法在 Amazon 的 AWS SDK for Java 中使用单个查询来查询多个哈希键?

这是我的问题;我有一个项目状态的数据库表。哈希键是项目的状态(即:新建、已分配、正在处理或完成)。范围键是一组项目 ID。目前,我有一个查询设置,可以简单地查找列为“已分配”状态(哈希)的所有项目,并设置另一个查询集以查找“正在处理”状态。有没有办法使用单个查询来执行此操作,而不是为我需要查找的每个状态发送多个查询?代码如下:

    DynamoDBMapper mapper = new DynamoDBMapper(new AmazonDynamoDBClient(credentials));
    PStatus assignedStatus = new PStatus();
    assignedStatus.setStatus("assigned");
    PStatus processStatus = new PStatus();
    processStatus.setStatus("processing");

    DynamoDBQueryExpression<PStatus> queryAssigned = new DynamoDBQueryExpression<PStatus>().withHashKeyValues(assignedStatus);
    DynamoDBQueryExpression<PStatus> queryProcessing = new DynamoDBQueryExpression<PStatus>().withHashKeyValues(processStatus);

    List<PStatus> assigned = mapper.query(PStatus.class, queryAssigned);
    List<PStatus> process = mapper.query(PStatus.class, queryProcessing);

所以基本上,我想知道是否有可能消除和变量并处理两者,并通过相同的查询,找到不是新的或完整的项目。queryAssignedassignedassignedStatusprocessStatusprocess


答案 1

不可以,截至今天,无法在同一请求中发送多个查询。如果您担心延迟,可以在不同的线程中同时发出多个请求。这将需要与 Dynamo 提供的“双重查询”相同的网络带宽(假设您使用的是 2 个,而不是数百个)。


答案 2

无法按多个哈希键进行查询,但从 2014 年 4 月开始,您可以使用 QueryFilter,以便除了哈希键字段之外,还可以按非键字段进行筛选。

在 2014 年 4 月 24 日的一篇博客文章中,AWS 宣布发布“QueryFilter”选项:

在今天的版本中,我们将扩展此模型,支持对非键属性进行查询筛选。现在可以将查询筛选器作为对查询函数的调用的一部分包括在内。筛选器在基于密钥的检索之后和结果返回给您之前应用。以这种方式进行筛选可以减少返回到应用程序的数据量,同时还可以简化和精简代码

看看这个,http://aws.amazon.com/blogs/aws/improved-queries-and-updates-for-dynamodb/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+AmazonWebServicesBlog+%28Amazon+Web+Services+Blog%29


推荐