我有一个项目,S3存储桶中将有大约8000万个对象。每天,我将删除大约400万,并增加400万。对象名称将位于伪目录结构中:
/012345/0123456789abcdef0123456789abcdef
要删除,我需要列出前缀为012345/
的所有对象,然后删除它们。我担心这个LIST操作需要的时间。虽然很明显S3对单个资产的访问时间并没有因个别对象而增加,但我还没有找到任何明确的说明超过80MM对象的LIST操作,搜索所有具有相同内容的10个对象前缀将在如此大的存储桶中保持快速。
在可以存储在存储桶中的side comment on a question about the maximum number of objects中(从2008年开始):
根据我的经验,随着对象数量的增加,LIST操作确实会(线性地)延长,但这可能是亚马逊服务器上所需的I / O增加以及客户端连接的一个症状。
对于可以存储在存储桶中的对象数量没有限制,无论使用多个存储桶还是少量存储桶,性能都没有差别。您可以将所有对象存储在一个存储桶中,也可以将它们组织在多个存储桶中。
虽然我倾向于相信亚马逊的文档,但我们并不完全清楚他们的评论涉及哪些操作。
在承诺这个昂贵的计划之前,我想明确知道当存储桶包含数百万个对象时,按前缀搜索时LIST操作是否仍然很快。如果有人拥有如此大型水桶的实际经验,我很乐意听取您的意见。
答案 0 :(得分:3)
我从来没有遇到过任何问题,但为什么要列出一百万个文件只是为了从列表中删除一些文件?这不是S3的表现,它可能会花费更长的时间进行通话。
为什么不将文件名存储在数据库中,索引它们,然后从那里查询。这是我认为的更好的解决方案。
答案 1 :(得分:3)
如果您已正确选择前缀,则前缀搜索速度很快。以下是https://cloudnative.io/blog/2015/01/aws-s3-performance-tuning/
的解释