我们是否需要目录结构逻辑来在Amazon S3 / Cloudfront上存储数百万个图像?

时间:2013-10-23 12:35:06

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

为了支持数以百万计的潜在图像,我们之前遵循了这种目录结构:

/profile/avatars/44/f2/47/48px/44f247d4e3f646c66d4d0337c6d415eb.jpg

文件名是md5哈希,然后我们提取字符串中的前6个字符并从中构建文件夹结构。

所以在上面的例子中是文件名:

44f247d4e3f646c66d4d0337c6d415eb.jpg

生成以下目录结构:

/44/f2/47/

我们总是这样做是为了尽量减少任何单个目录中的照片数量,最终有助于提高文件系统的性能。

但是,我们的新应用正在使用Amazon S3和Cloudfront

我的理解是,您在Amazon S3上创建的任何文件夹实际上只是引用,而不是文件系统上的目录。

如果这是正确的,还是建议拆分成上面的文件夹/目录,或类似的方法?或者我们可以简单地在应用程序代码中消除这种复杂性并提供如下的图像链接:

/profile/avatars/48px/filename.jpg

请注意,此应用程序旨在为数百万张照片提供服务。

非常感谢任何指导。

2 个答案:

答案 0 :(得分:9)

虽然S3文件夹基本上只是另一种编写密钥名称的方式(正如@ E.J.Brennan在他的回答中已经说过的那样),理由考虑“文件夹”的命名结构。

根据您当前的照片数量以及可能的访问模式,考虑一种加速S3键名查找的方法可能是有意义的,确保照片上的操作分散在多个分区上。有great article on the AWS blog解释所有细节。

答案 1 :(得分:3)

除非您为了方便起见,否则不需要在s3上设置该结构。您在s3上创建的所有文件夹对您来说实际上只是一种幻想,文件存储在一个大的连续容器中,因此如果您没有理由在伪文件夹层次结构中组织文件,那么请& #39;打扰。

如果您需要根据文件夹结构控制对不同人群的访问,这可能是保留结构的一个原因,但除此之外可能没有任何好处/