首页 > 解决方案 > 使用超过 1MB 数据的 gsi 查询 dynamodb 函数

问题描述

我试图找到一种及时且具有成本效益的方法来使用 lambda 函数查询 dynamodb 表,该函数将扫描表并使用排序键返回 1MB+ 值以确定要返回的值。我读到并行扫描是一回事,但由于我必须使用排序键 + GSI 来缩小范围,我不确定这会节省多少时间。我还看到我可以批量查询表(通过查找 LastEvaluatedKey),但考虑到每次都会对数据库进行 10 次以上的调用(每 10 分钟调用一次函数),我认为这也无济于事!

如果有人有替代方案/建议,将不胜感激!

标签: python-3.xamazon-web-servicesnosqlamazon-dynamodb

解决方案


我不完全清楚您在问什么,但我会在从 DynamoDB 获取数据时突出显示您的一些选项。如果这不正确,您能否详细说明您在询问或尝试使用 DynamoDB 做什么?

查询和扫描操作在分页前限制为 1MB 响应大小。

BatchGetItem操作可以检索最多 16 MB 的数据,其中最多可以包含 100 个项目。但是,您需要知道您的项目主键。这听起来不像你的情况,因为你正在执行一个scan操作。

并行扫描有助于加快响应时间,但也需要权衡取舍。 根据文档,如果满足以下条件,并行扫描可能是正确的选择:

  • 表大小为 20 GB 或更大。
  • 表的预置读取吞吐量未完全使用。
  • 顺序扫描操作太慢。

如果这听起来像您的情况,您应该考虑使用并行扫描。


推荐阅读