S3 ne respecte pas les espaces de noms hiérarchiques. Chaque compartiment contient simplement un certain nombre de mappages de clé à objet (avec les métadonnées associées, les ACL, etc.).
Même si la clé de votre objet peut contenir un «/», S3 traite le chemin comme une chaîne simple et place tous les objets dans un espace de noms plat.
D'après mon expérience, les opérations LIST prennent (de manière linéaire) plus de temps à mesure que le nombre d'objets augmente, mais c'est probablement un symptôme de l'augmentation des E / S requises sur les serveurs Amazon et du câble vers votre client.
Cependant, les temps de recherche ne semblent pas augmenter avec le nombre d'objets - c'est probablement une sorte d'implémentation de la table de hachage O (1) de leur côté - donc avoir de nombreux objets dans le même compartiment devrait être tout aussi performant que de petits compartiments pour une utilisation normale (c.-à-d. pas LISTs).
En ce qui concerne l'ACL, les subventions peuvent être définies sur le compartiment et sur chaque objet individuel. Comme il n'y a pas de hiérarchie, ce sont vos deux seules options. Évidemment, définir autant de subventions à l'échelle du compartiment réduira massivement vos maux de tête d'administration si vous avez des millions de fichiers, mais rappelez-vous que vous ne pouvez accorder des autorisations, pas les révoquer, de sorte que les subventions à l'échelle du compartiment devraient être le sous-ensemble maximal de l'ACL pour tous. son contenu.
Je recommanderais de diviser en seaux séparés pour:
- contenu totalement différent - avoir des seaux séparés pour les images, le son et d'autres données permet une architecture plus saine
- ACL significativement différentes - si vous pouvez avoir un compartiment avec chaque objet recevant une ACL spécifique, ou deux compartiments avec différentes ACL et aucune ACL spécifique à un objet, prenez les deux compartiments.