python-3.x - 使用超过 1MB 数据的 gsi 查询 dynamodb 函数
问题描述
我试图找到一种及时且具有成本效益的方法来使用 lambda 函数查询 dynamodb 表,该函数将扫描表并使用排序键返回 1MB+ 值以确定要返回的值。我读到并行扫描是一回事,但由于我必须使用排序键 + GSI 来缩小范围,我不确定这会节省多少时间。我还看到我可以批量查询表(通过查找 LastEvaluatedKey),但考虑到每次都会对数据库进行 10 次以上的调用(每 10 分钟调用一次函数),我认为这也无济于事!
如果有人有替代方案/建议,将不胜感激!
解决方案
我不完全清楚您在问什么,但我会在从 DynamoDB 获取数据时突出显示您的一些选项。如果这不正确,您能否详细说明您在询问或尝试使用 DynamoDB 做什么?
查询和扫描操作在分页前限制为 1MB 响应大小。
BatchGetItem操作可以检索最多 16 MB 的数据,其中最多可以包含 100 个项目。但是,您需要知道您的项目主键。这听起来不像你的情况,因为你正在执行一个scan
操作。
并行扫描有助于加快响应时间,但也需要权衡取舍。 根据文档,如果满足以下条件,并行扫描可能是正确的选择:
- 表大小为 20 GB 或更大。
- 表的预置读取吞吐量未完全使用。
- 顺序扫描操作太慢。
如果这听起来像您的情况,您应该考虑使用并行扫描。
推荐阅读
- android - Flutter应用程序中Firebase数据库上的ValueEventListener
- ruby-on-rails - 在 Rails 中查找缺少关联记录的记录
- c# - 如何从form1到form2并返回?
- java - 优化if条件
- wordpress - 尝试访问产品类别时出现内部服务器错误 500
- python - 使用具有多个结果的函数作为参数
- shell - 在 shell 脚本中分组条件时缺少 `]' 错误
- assembly - 手臂组件中的负寄存器?
- embedded-jetty - Jetty:将对象从带有 WebAppProvider 的主方法传递给 Servlet
- node.js - node.js 中的 $elemMatch 投影