Syn*_*BBB 2 capacity amazon-web-services throughput amazon-dynamodb aws-lambda
假设我有一个 lambda 函数,并且作为事件参数,我得到了大约 50 个主 id,我必须在 dynamodb 表中查找它们,那么更好的方法是什么 - 50 个查询,每个查询由不同的主 id 或一次扫描然后将扫描主 ID 结果与作为参数接收的主 ID 进行比较?
我认为 50 个 get 查询在性能方面会更好,因为如果明天我将有 100 万条记录,那么扫描所有记录然后仅过滤其中的 50 条将浪费时间和内存,但另一方面却不会对 dynamodb 的 50 个请求可能会出现性能问题并需要更多配置?
您是对的Scan
,假设您只需要读取一百万条记录中的 50 条记录,那么该操作是最糟糕的解决方案。它会非常慢,并且会花费你一大笔钱,因为当你扫描时,你需要向亚马逊付费来读取你的所有数据 -即使你过滤掉了大部分数据。
发出 50 个单独的GetItem
请求并不是那么糟糕 - 它肯定比扫描更好。您只需为实际检索到的商品向亚马逊付费 - 您无需支付更多费用,因为这是 50 个单独的请求。当然,如果您不希望出现巨大的延迟,请不要一个接一个地启动这些请求 - 并行启动它们。
但对于这个用例,DynamoDB 提供了更好的操作BatchGetItem
。通过此操作,您只需在一个 HTTP 请求中向 DynamoDB 提供 50 个所需密钥的列表,它就会(并行)获取所有这些密钥并向您返回所有响应。这似乎BatchGetItem
最适合您的用例。
归档时间: |
|
查看次数: |
1641 次 |
最近记录: |