我有一个社交媒体网络应用程序。用户上传图片,例如个人资料图片,项目图片等。在S3存储桶中组织这些文件的最佳方法是什么?
我想创建一个文件夹,其名称为userid
,在存储桶中以及在其他多个文件夹(即个人资料,项目等)的内部。
不确定这是否是最好的方法!
答案 0 :(得分:0)
坦率地说,您在Amazon S3中分配对象的名称(键)是不相关的。
重要的是,您有一个数据库来跟踪对象,它们的所有权和用途。
您不应将Amazon S3对象的文件名(密钥)用作存储有关该对象的信息的方式,因为您的应用程序可能在S3中包含数百万个对象,并且扫描对象列表以查看是否太慢哪些存在。相反,请查询数据库以查找它们。
要回答您的问题:是的,如果需要,可以按用户名创建前缀,但是只需给它提供一个唯一的名称(例如Universally unique identifier - Wikipedia)即可,避免名称冲突。
>答案 1 :(得分:0)
以前,为了获得更好的性能,需要添加随机前缀。 here和here的更多详细信息。
以下是其中一页的摘录
在以下情况下,请注意您的命名方案:
分发密钥名称
不保存对象的键名以日期或标准键开头 名称,它会提高S3索引编制的复杂度,并会减少 性能,因为基于索引的对象保存在单个 存储分区。
Amazon S3在其内部索引中按字典顺序维护密钥。
但是,从17 Jul 2018 announcement开始,不需要为S3键添加随机前缀以提高性能