如果我有一百万个图像,将它们存储在某个文件夹/子文件夹层次结构中还是将它们全部直接转储到存储桶中(没有任何文件夹)会更好吗?
将所有图像转储到无层次结构的存储桶中会降低LIST操作的速度吗?
快速创建文件夹和子文件夹并设置其ACL(以编程方式而言)会产生大量开销吗?
Answers:
S3不尊重分层名称空间。每个存储桶仅包含从键到对象的许多映射(以及关联的元数据,ACL等)。
即使对象的键可能包含'/',S3也会将路径视为纯字符串,并将所有对象置于平面命名空间中。
以我的经验,随着对象数量的增加,LIST操作确实会(线性地)花费更长的时间,但这可能是Amazon服务器上所需的I / O数量增加以及客户端连接的症状。
但是,查找时间似乎并不随对象数的增加而增加-最有可能是在其末尾采用某种O(1)哈希表实现-因此,在同一存储桶中有许多对象,其性能应与常规使用的小存储桶一样好(即而不是列表)。
至于ACL,可以在存储桶和每个单独的对象上设置授权。由于没有层次结构,因此它们只是您的两个选择。显然,如果您拥有数百万个文件,则设置尽可能多的存储桶级授予将大大减轻您的管理麻烦,但请记住,您只能授予权限,而不能撤消它们,因此存储桶级授予应是所有用户的ACL的最大子集它的内容。
我建议拆分成多个单独的存储桶以进行以下操作:
原始问题“ S3中每个目录的最大文件数”的答案是:无限。另请参阅S3限制存储桶中的对象。