当前位置: 首页 > 面试题库 >

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

公西国发
2023-03-14
问题内容

有没有一种方法可以使用Amazon的Java AWS开发工具包中的单个查询来查询多个哈希键?

这是我的问题;我有一个用于项目状态的数据库表。哈希键是项目的状态(即:新建,已分配,正在处理或已完成)。范围键是一组项目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);

因此,基本上,我想知道是否有可能消除queryAssignedassigned变量assignedStatusprocessStatus通过相同的查询处理这两个变量process,以查找不是新项目也不是完整项目。


问题答案:

否,到目前为止,无法在同一请求中发送多个查询。如果您担心延迟,则可以在不同的线程中同时发出多个请求。如果Dynamo提供了此功能,则它需要的网络带宽与“双重查询”所需的网络带宽相同(假设您输入的是2个,而不是数百个)。



 类似资料:
  • 问题内容: 我是Redis的新手,正在阅读文档,但找不到解决问题的方法。 我有一个包含名称和电话号码的hash,我想获取hash中键的排序列表。 所以我的哈希(电话簿)看起来像这样: 如果我运行,我会得到此信息(密钥将在存储时返回): 我想得到这个(有序键): 我该如何存档?我使用的数据结构正确吗? 问题答案: 您可以使用排序集而不是哈希来实现此目的,并且不需要维护并行列表。全部包含在一个结构中…

  • 有没有办法从签名的APK中获取密钥哈希?我们有一个签名的Android apk文件,我们想找出这个apk的密钥散列,用于Facebook SDK。我们可以用jarsigner这样的方法吗<有什么建议吗?

  • 我必须经常在那里做两件事:1。给定一个category#域,获取所有匹配项。2.给定grouptype#groupname,获取所有匹配项。 这两种操作都相当频繁,所以我不想使用扫描。在DynamoDB中有没有一种有效的方法可以做到这一点?是否有更好的方法来设计模式(更多的表、辅助索引等)?任何建议都是有帮助的。有人建议使用全局辅助索引,但我的问题是,我能否将主表的范围键作为GSI的哈希键?我知道

  • 我们想为房间数据库构建一个过滤器,过滤器选项由用户选择。 i、 e.我们有一个带有字段(id、名称、日期、类型)的实体。用户可以按日期和/或名称过滤列表,其中包含文本和/或类型等于某个值 有办法在房间里做吗?

  • 问题内容: 我写了一个查询来查找3月至4月美国10个最繁忙的机场。它产生所需的输出,但是我想尝试进一步优化它。 是否有任何适用于查询的HiveQL特定优化? 是适用在这里吗?我是Hive的新手,现在这是我提出的最短的查询。 表列如下: 飞机场 Flights_stats 问题答案: 按机场(内部联接)过滤,并在UNION ALL之前进行聚合,以减少传递到最终聚合简化程序的数据集。具有UNION A

  • 问题内容: 我正在学习AngularJS,有一件事让我很烦。 我用来为我的应用程序声明路由规则: 但是当我在浏览器中导航到我的应用程序时,我看到的不是。 所以我的问题是为什么AngularJS将此哈希添加到url中?有可能避免它吗? 问题答案: 实际上,对于非HTML5浏览器,您需要#(#标签)。 否则,他们将只通过提到的href对服务器进行HTTP调用。#是一个旧的浏览器短路问题,它不会触发请求