我脑子里有一个简单的效率问题。
我已经创建了一个PHP代码,它可以将文件夹中的所有文件上传到亚马逊S3上的桶中。我的代码也可以上传子文件中的文件,而不会失去它的结构。
基本上,用户必须登录到我的网站,然后根据用户的帐户名称,他们可以上传照片到我的桶亚马逊s3。用户可以上传多达10张照片,然后修改成子文件类型,例如修改和缩略图。
我应该如何在亚马逊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或者它在亚马逊的S3中没有什么不同吗?
发布于 2014-03-04 13:56:54
对于组织而言,这并没有什么不同,S3文件夹实际上只是对像我们这样的人的一种幻觉,所以看起来很熟悉--实际上没有像您自己的机器上有这样的物理独立的文件夹。
然而,您使用的命名约定将对性能产生巨大的影响,一旦您到达某个点(对于少量的文件,它可能不会被注意到)。
通常,您希望文件/文件夹名称的开头部分是“随机的-ish”,s3可以更好地分散工作负载的s3越随机。如果名称前缀都是相同的,就会出现潜在的瓶颈。每个文件名开头的一个简短的随机散列可能会给您最好的性能。
从马的嘴里说:
键名中的序列模式带来了性能问题。为了理解这个问题,让我们看看Amazon如何存储密钥名。 Amazon在每个S3区域都维护一个对象密钥名索引。对象键按字典顺序存储在索引中的多个分区中。也就是说,亚马逊S3按字母顺序存储密钥名。键名指示密钥存储在哪个分区中。使用顺序前缀,如时间戳或字母顺序,增加了亚马逊S3针对大量密钥的特定分区的可能性,从而使分区的I/O能力不堪重负。如果您在密钥名前缀中引入了一些随机性,则键名以及I/O加载将分布在多个分区中。 如果您预期工作负载将始终超过每秒100个请求,则应避免顺序键名。如果必须在密钥名中使用序列号或日期和时间模式,则在密钥名称中添加一个随机前缀。前缀的随机性更均匀地分布在多个索引分区之间。在本主题后面将提供引入随机性的示例。
http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html
发布于 2014-03-04 11:46:36
这在亚马逊的S3上并没有什么不同。只有目标键。
https://stackoverflow.com/questions/22167125
复制相似问题