亚马逊AWS S3目录结构效率

时间:2014-03-04 08:58:20

标签: php amazon-web-services amazon-s3

我遇到了一个简单的效率问题。

我创建了一个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

或者

选项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

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

2 个答案:

答案 0 :(得分:19)

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

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

通常,您希望文件/文件夹名称的开头部分为“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

答案 1 :(得分:1)

在Amazon S3中没有任何不同。只有对象键。