【问题标题】:AWS AppSync GraphQL - How to use PK/SK query instead of scanning whole dynamoDB table for graphql list APIsAWS AppSync GraphQL - 如何使用 PK/SK 查询而不是扫描整个 dynamoDB 表以获取 graphql 列表 API
【发布时间】:2021-03-11 08:12:35
【问题描述】:

我的 DynamoDB 表数据架构:

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

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

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

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

GraphQL 自动为我创建了 2 个查询 API:getDataSummarylistDataSummary。让我吃惊的是,当我列出 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 列表操作?

【问题讨论】:

    标签: amazon-web-services graphql amazon-dynamodb aws-appsync


    【解决方案1】:

    【讨论】:

    • 您在文档中找到此问题的解决方案了吗?
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2020-04-17
    • 2021-09-13
    • 1970-01-01
    • 2020-11-12
    • 2020-07-27
    相关资源
    最近更新 更多