【问题标题】:Aws amplify shows much less data then in dynamodb existAws amplify 显示的数据比 dynamodb 中存在的数据少得多
【发布时间】:2022-08-07 13:46:20
【问题描述】:

我有以下问题。在我的放大工作室中,我看到了 10k 个数据点

但是,如果我仔细查看相应的数据库,我会看到:

我有超过 200k+ 的数据,但它在 amplify studio 内仅显示 10k。为什么会这样?

当我在前端尝试此代码时:

let p = await DataStore.query(Datapoint, Predicates.ALL, {
        limit: 1000000000,
      })
console.log(p.length)

我得到10000 回来。与放大工作室相同的数字。

其他问题:存储数十个数据点的最佳方式是什么?我需要它来进行图表可视化。

  • 我完全没有使用 AWS amplify 的经验,所以希望其他人可以做出贡献,但您可能会达到 GraphQL 的 10k 解析器限制?然而可能是完全错误的
  • @ErmiyaEskandary 好吧,我 1 小时前检查过,现在涨到了 18k。真的很奇怪。我在哪里可以找到这些限制?
  • 所以不是这样 - 我没有使用 AppSynx 抱歉!

标签: amazon-web-services amazon-dynamodb aws-amplify amplify


【解决方案1】:

DynamoDB QueryScan 请求不会返回一个巨大列表中的所有项目。相反,它只返回一个“页面”的结果,其大小默认为 1MB。像 amplify 这样的客户端库可以重复调用这些QueryScan 请求,以将所有页面收集到内存中的一个巨大数组中,但是一旦它变得非常大,就没有太大意义了。因此应用程序通常希望遍历所有结果,而不是将它们收集到内存中的一个巨大数组中。

所以大多数 DynamoDB API 提供了一个分页查询和扫描操作的界面 - 它为您提供一页结果,以及获取下一页的方法。或者,某些 API 可以为您提供结果的迭代器 - 并在内部执行此分页。我不熟悉 Amplify,所以我不知道推荐哪个 API。但是,将所有结果作为一个大数组返回的 API 肯定有其局限性,显然您已经找到了它们。

【讨论】:

  • 我正在考虑使用 aws time Series 来处理大量数据。这是一个想法吗?
  • 我不明白这个问题。您绝对可以在 DynamoDB 中拥有巨大的分区(如时间序列)——在某些情况下,您被限制为 10GB(当您有 LSI 时),但在其他情况下,这甚至不是一个限制。查询整个分区绝对是可能的——您只需要在 1MB 页面中进行,而不是一次全部完成。您的客户端可能甚至没有足够的内存来将所有结果存储在一个巨大的数组中。
【解决方案2】:

得到了相同的信息,以及关于分页的信息。另一方面,不确定是否有人知道,我已经更新了我的模式和建模,它被正确推送到了 graphql,但我没有在 Smplify 工作室中看到数据建模。如何使用 Amplify 同步 DynamoDB 表?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2022-11-16
    • 2019-10-19
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多