现在我要迁移到 Amazon S3,如何组织一百万 + 个文件?

How can I organize a million+ files now that I'm moving to Amazon S3?

提问人:Andrew G. Johnson 提问时间:1/15/2012 更新时间:2/3/2021 访问量:2206

问:

好吧,我正在从我的共享主机启动,并且我正在切换到 Linode 和 Amazon S3 的 VPS 组合以托管几百万个 jpeg。

我最大的担忧是保持所有这些图像的某种理智。还有希望吗?我的理解是你只允许 100 个“存储桶”,而“存储桶”是 S3 中唯一的结构类型。

您不建议将几百万个文件放入存储桶中?

亚马逊-S3

评论

0赞 David 1/15/2012
- 存储桶限制和局限性 - Amazon S3 存储桶限制

答:

6赞 quentin-starin 1/15/2012 #1

您可能会注意到,在存储桶限制和局限性中,它指出:

There is no limit to the number of objects that can be stored in a bucket

我的经验是,单个存储桶中的大量对象不会影响通过其键获取单个对象的性能(也就是说,get 似乎具有恒定的复杂性)。

拥有大量对象也不会影响列出给定数量对象的速度

List performance is not substantially affected by the total number of keys in your bucket

但是,我必须警告您,我使用过的大多数 S3 管理工具(如 S3Fox)在尝试访问包含大量对象的存储桶时都会窒息并缓慢死亡。S3 Browser 似乎可以很好地处理大量对象(它们有免费版和专业版,我不以任何方式隶属于它们)。

使用“文件夹”或前缀不会改变这些点中的任何一点(获取和列出给定数量的对象仍然是恒定的,大多数工具仍然会自行倒下并挂起)。

评论

0赞 Andrew G. Johnson 1/15/2012
是的,你几乎总结了我的观点,上传 1000 万个文件都很有趣,而且很有游戏,但是一旦它们在那里,你就会永远被它们困住,因为没有故障,任何列表工具都无法处理那么大的列表。
0赞 quentin-starin 1/16/2012
好吧,一定要看看 S3 浏览器。前缀/文件夹可能会有所帮助,但它们不会减少存储桶中的对象数量。实际上,由您来实现另一种列表(通常是带有文件名/URL 的数据库中的记录)并管理对象。
0赞 Andrew G. Johnson 1/16/2012
是的,这就是我要做的,我只是讨厌这样的想法,如果我的代码中有一个错误,我最终不得不永远为它付出代价——从字面上看。
1赞 Richard 5/15/2012
我已经成功地使用了 s3cmd : s3tools.org/s3cmd 来列出包含 100k 图像的存储桶的内容 - 直接从服务器运行,因此受益于快速网络连接,可以将输出通过管道传输到文件等。
0赞 Don Smith 6/7/2019
我的理解是 S3 对对象键进行哈希处理,因此给定对象的查找时间为 O(1)。但是,调用与键前缀匹配的 AmazonS3.listObjects 的预期时间是多少?文档说 但是,除非他们索引键的前缀,否则这怎么可能呢?我向 AWS 工程师寻求更多指导,他们回避了这个问题,只是说通话速度可能很慢。我想知道它是否进行线性搜索。AmazonS3.listObjectsThe total number of keys in a bucket doesn't substantially affect list performance.listObjects