亚马逊AWS S3目录结构效率

use*_*207 11 php amazon-s3 amazon-web-services

我有一个简单的效率问题,贯穿我的脑海.

我创建了一个PHP代码,将我文件夹中的所有文件上传到Amazon S3上的存储桶.我的代码也能够在不丢失其结构的情况下上传子文件中的文件.

基本上,用户必须登录我的网站,然后根据用户的帐户名称,他们可以将照片上传到Amazon s3上的我的存储桶.用户最多可以上传10张照片 - 然后将这些照片修改为子文件类型,例如修改和缩略图.

我应该如何上传我的目录结构才能在Amazon S3上高效?

选项1(同一桶中的文件但不同的文件夹 - 更有条理)

username/originalfiles/picture01.jpg
username/original/picture02.jpg
username/original/picture03.jpg
....
username/original/picture10.jpg


username/modifiedpicture01.jpg
username/modified/picture02.jpg
username/modified/picture03.jpg
....
username/modified/picture10.jpg


username/thumbailspicture01.jpg
username/thumbails/picture02.jpg
username/thumbails/picture03.jpg
....
username/thumbails/picture10.jpg
Run Code Online (Sandbox Code Playgroud)

要么

选项2(同一桶中的所有文件)

username-original-picture01.jpg
username-original-picture02.jpg
username-original-picture03.jpg
....
username-original-picture10.jpg


username-modifiedpicture01.jpg
username-modified-picture02.jpg
username-modified-picture03.jpg
....
username-modified-picture10.jpg


username-thumbailspicture01.jpg
username-thumbails-picture02.jpg
username-thumbails-picture03.jpg
....
username-thumbails-picture10.jpg
Run Code Online (Sandbox Code Playgroud)

或者它在Amazon S3中没有任何不同?

E.J*_*nan 20

它对于组织目的没有任何影响,S3文件夹实际上只是为了像我们这样的人类的利益的幻觉,所以它似乎很熟悉 - 在你自己的机器上确实没有物理上独立的文件夹.

但是,一旦达到某一点(对于少量文件,它可能不会引人注意),您使用的命名约定将对性能产生巨大影响.

通常,您希望文件/文件夹名称的开头部分为"random-ish",越随机越好......这样s3可以更好地分散工作负载.如果名称前缀完全相同,则会存在潜在的瓶颈.每个文件名开头的短随机哈希可能会给你最好的表现.

马(AWS)口:

键名中的序列模式引入了性能问题.为了解这个问题,我们来看看Amazon S3如何存储密钥名称.

Amazon S3在每个AWS区域中维护对象键名称的索引.对象键以字典方式存储在索引中的多个分区中.也就是说,Amazon S3按字母顺序存储键名.密钥名称指示密钥存储在哪个分区中.使用顺序前缀(例如时间戳或字母顺序)会增加Amazon S3针对大量密钥的特定分区的可能性,从而压倒I/O容量分区.如果在密钥名称前缀中引入一些随机性,则密钥名称以及I/O负载将分布在多个分区中.

如果您预计您的工作负载将始终超过每秒100个请求,则应避免使用顺序密钥名称.如果必须在密钥名称中使用序列号或日期和时间模式,请在密钥名称中添加随机前缀.前缀的随机性更均匀地在多个索引分区之间分配密钥名称.本主题后面将提供引入随机性的示例.

http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html

  • AWS 似乎已在 https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html 中更新了他们的建议。“...之前 Amazon S3 性能指南建议使用哈希字符随机化前缀命名,以优化频繁数据检索的性能。您不再需要为了性能而随机化前缀命名,并且可以对前缀使用基于日期的顺序命名。” (2认同)