首页 > 解决方案 > 优化 Amazon S3 上的照片存储命名法

问题描述

我必须存储大量照片(+1 000 000,一张最大 5MB)并且我有一个数据库,每条记录都有 5 张照片,那么最好的解决方案是什么:

我使用 Amazon S3 服务器。

标签: amazon-web-servicesoptimizationamazon-s3storage

解决方案


这在很大程度上取决于您的用例,例如如何使用数据库和照片。这里没有足够的信息来给出明确的答案。

但是,对于存储方面的一些建议...

最简单的选择就是为每张照片使用一个UUID。这实际上是一个没有意义的随机名称。将该名称存储在您的数据库中,您的系统将知道哪个图像与哪个记录相关。无需重命名图像,因为名称只是唯一 ID,不会传达更多信息。

当您想要提供对特定图像的访问权限时,您的应用程序可以生成一个Amazon S3 预签名 URL,该 URL 授予对对象的限时访问权限。到期时间过后,URL 将不起作用,因此该对象仍然是私有的。以这种方式授予访问权限意味着无需按“所有者”将图像分组到目录中,因为访问权限是按对象授予的,而不是按所有者授予的。

另外,请注意Amazon S3 实际上并不支持文件夹。相反,对象的(“文件名”)是整个路径(例如user-2/foo.jpg)。这使其更具人类可读性(因为对象“似乎”在文件夹中),但实际上并不影响数据在幕后存储的方式。

底线:如何存储图像并不重要。重要的是您将图像名称存储在数据库中,以便您知道哪个图像与哪个记录匹配。避免需要重命名图像的情况 - 只需给它们一个名称并保留它。


推荐阅读