当前位置: 首页 > 知识库问答 >
问题:

AWS AppSync GraphQL-如何使用PK/SK查询而不是扫描整个dynamoDB表以获取GraphQL列表API

池永长
2023-03-14

我的DynamoDB表数据架构

PartitionKey: "PK" -> String
SortKey: "SK" -> Number (timestamp)
Attribute: "Summary" -> JsonMap

我的主要用例是,我有一个“PK”和“SK”的范围,这是目标时间范围,并查询DDB以获得“摘要”列表。这种数据设计适用于DDB API。

现在,我想使用AppSync为这个DynamoDB for Amplify应用程序创建一个GraphQL API。所以我创建了一个像这样的GraphQL模式:

type DataSummary {
    PK: String!
    SK: Float!
    Summary: AWSJSON
}

GraphQL自动为我创建了2个查询API:getData汇总listData汇总。支持我的是,当我列出API时,我可以使用过滤器将查询定义为:

query listDataSummaries {
  listDataSummaries(filter: {PK: {eq: "##Some key string##}"}, SK: {gt: ##Some timestamp##}}) {
    items {
      PK
      SK
      Summary
    }
  }
}

但是,由于分页,返回值为“null”,这意味着GraphQL正在进行表扫描以收集表中的所有项,然后根据我的请求进行筛选。这与我的表设计背道而驰,因为它需要比普通DDB API调用多得多的RCU才能获得相同的结果。那么,我错过了什么?如何“要求”GraphQL执行DDB查询而不是PK/SK列表操作的扫描?

共有1个答案

夏理
2023-03-14

找出调查的方向:https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html

 类似资料:
  • 我已经尝试从DynamoDB查询数据两天了。让我发疯。 我在办公室里有一张桌子。假设有两个办公室,科克和都柏林。我有一个名为“deskName”的列,它的名称有“cork1”、“cork2”、“dub1”、“dub2”。我希望能够查询表中包含“cork”或“dub”的项目,因为它们在同一个表中,但我不想扫描整个表。 代码: YAML: 错误: 当我出现“软木塞-1”的情况时,我设法把一件物品拿了回

  • 安装程序 我在java和DynamoDB(DynamoDB Mapper)注释中有下表: 保存时会随机生成id,多个实体可能会出现相同的用户id。 通过Web GUI定义的表如下:主分区键:id(String)主排序键:userId(String) 问题 我想用一个查询而不是扫描获得一个用户ID的所有实体。 查询-不是这样工作的: 我当然得到: 因为我想读取数据时不知道生成的id。 工作区 相反,

  • DynamoDb文档中指定的查询操作: 查询操作仅搜索主键属性值,并支持对键属性值的比较运算符子集以优化搜索过程。 和扫描操作: 扫描操作扫描整个表。您可以指定要应用于结果的过滤器,以在完成扫描后优化返回给您的值。 这是基于性能和成本考虑的最佳选择。

  • 我已经在该表上创建了DynamoDB表和全局辅助索引。我需要从该表的GSI中获取所有数据。 有两种选择: 无筛选表达式的扫描操作 我需要找出哪一个性能更好,以便我开始我的实现。 我已经读了很多关于DynamoDB扫描和查询操作,但可以解决我的查询。 请帮我解决我的问题。 提前谢谢。 阿披实

  • 具有数十亿条目的理论表。 分区键是表示给定设备ID的唯一uuid。大约会有10k唯一的uuid。 排序键是数据收集时间的日期字符串。 每个项目都有一些数据字段。有几十个字段,因此为每个字段制作GSI是不合理的。对于我们的示例,假设我们正在寻找“dataOfinterest”字段。 我想在数据库中搜索“dataOfinterest='fobar'的所有项目”——理想情况下是在日期范围内进行。据我所知

  • 第一篇文章是关于Stack的,对于使用Python和DynamoDB编程来说,这是相当新的,但是我只是想在我的表上运行一个扫描,根据两个预定义的属性返回结果。 ---这是我的Python代码片段--- 我的发电机有4个磁场。 ID 日期 班次 安全 现在关于这个问题,在运行时,我得到了两个返回的表条目,而我应该只得到第一个条目...根据我的扫描标准,有“没有安全问题”的那个。 ---这是我的Dyn