Nik*_*pte 84 directory performance file amazon-s3 limit
如果我有一百万张图片,最好将它们存储在某个文件夹/子文件夹层次结构中,或者直接将它们全部转储到存储桶中(没有任何文件夹)?
将所有图像转储到无层次结构的存储桶中会减慢LIST操作的速度吗?
是否有动态创建文件夹和子文件夹并设置其ACL(以编程方式说)的巨大开销?
Jam*_*ady 117
S3不尊重分层命名空间.每个桶只包含从密钥到对象的多个映射(以及相关的元数据,ACL等).
即使对象的键可能包含'/',S3也会将路径视为普通字符串,并将所有对象放在平面命名空间中.
根据我的经验,随着对象数量的增加,LIST操作确实会(线性地)延长,但这可能是亚马逊服务器所需的I/O增加以及客户端连接的一个症状.
但是,查找时间似乎并没有随着对象数量的增加而增加 - 它最有可能是它们端的某种O(1)哈希表实现 - 因此在同一个桶中有许多对象应该与正常使用的小桶一样高效(即不是列表).
对于ACL,可以在存储桶和每个单独的对象上设置授权.由于没有等级,他们只是你的两个选择.显然,如果你有数百万个文件,设置尽可能多的桶范围授权将大大减少你的管理麻烦,但是记住你只能授予权限,而不是撤销它们,因此桶范围的授权应该是所有ACL的最大子集它的内容.
我建议拆分成单独的桶: