如何快速处理S3中存储的10,000个小对象

问题描述 投票:0回答:1

问题:给定存储在 S3 中的对象的 10000 个路径列表,我需要快速处理相应的对象(不到 1 秒)。每个对象为 40 KB。

背景:每个对象代表一个文档。每个文档都与一个或多个用户相关联(可能是一千个或更多用户,因此避免了文档的重复)。我们需要处理与给定用户相关的所有文档。该处理是基于给定查询对文档内容进行搜索。除了搜索结果很小(~1KB)之外,搜索的具体细节在这里并不重要。在上面的问题陈述中,用户有 10000 个与其关联的文档。

我已经测试过的一种方法是通过利用 Lambda 函数的多个实例来使用并行化,每个实例下载并处理对象列表的一部分。

这种方法的计算部分很快。对象的下载是瓶颈。我想找到一种更智能(更便宜且性能更高)的方法。

一个想法是将所有 10,000 个对象合并为一个临时对象,然后通过单个

get
请求下载后一个大对象。然而,据我所知,执行此操作的唯一方法是分段上传,这要求每个部分至少为 5 MB。就我而言,每个部分为 40 KB。我无法提前合并各个部分,因为一个对象可以与许多不同的用户关联,从而与不同的对象组合出现。

我可以使用解决方法或其他方法吗?

附注问题在回复:帖子

python amazon-web-services amazon-s3 aws-lambda boto3
1个回答
0
投票

您可以在 DynamoDB 中存储最多 400KB 的对象。 搜索应该快得多。 你只需要考虑使用什么属性作为分区键,以及你需要搜索哪些属性并将它们放入项目键或二级索引中。

© www.soinside.com 2019 - 2024. All rights reserved.