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

新手上路,请多包涵

有没有办法在亚马逊的 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);

So basically, I’d like to know if it’s possible to eliminate the queryAssigned and assigned variables and handle both assignedStatus and processStatus via相同的查询 process ,用于查找既不新也不完整的项目。

原文由 DGolberg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 372
2 个回答

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

原文由 Cory Kendall 发布,翻译遵循 CC BY-SA 3.0 许可协议

无法通过多个散列键进行查询,但是,从 2014 年 4 月开始,您可以使用 QueryFilter,这样除了散列键字段之外,您还可以通过非键字段进行过滤。

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

在今天的发布中,我们通过支持 对非键属性的查询过滤 来扩展此模型。您现在可以将 QueryFilter 作为调用 Query 函数的一部分。过滤器在基于键的检索之后和结果返回给您之前应用。以这种方式过滤可以减少返回到您的应用程序的数据量,同时还可以简化和精简您的代码

看看这个 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

原文由 Aybat 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题