web-dev-qa-db-fra.com

Fichiers max par répertoire dans S3

Si j'avais un million d'images, serait-il préférable de les stocker dans une hiérarchie de dossiers/sous-dossiers ou simplement de les vider directement dans un compartiment (sans aucun dossier)?

Le dumping de toutes les images dans un compartiment sans hiérarchie ralentirait-il les opérations LIST?

Y a-t-il un surcoût important dans la création de dossiers et sous-dossiers à la volée et la configuration de leurs listes de contrôle d'accès (par programme)?

84
Nikhil Gupte

S3 ne respecte pas les espaces de noms hiérarchiques. Chaque compartiment contient simplement un certain nombre de mappages de la clé à l'objet (ainsi que les métadonnées associées, les listes de contrôle d'accès, etc.).

Même si la clé de votre objet peut contenir un '/', S3 traite le chemin d'accès 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 (linéairement) plus de temps à mesure que le nombre d'objets augmente, mais cela est probablement un symptôme de l'augmentation des E/S requises sur les serveurs Amazon et de la liaison avec votre client.

Cependant, les temps de recherche ne semblent pas augmenter avec le nombre d'objets - il s'agit très probablement d'une sorte d'implémentation de table de hachage O(1)) - donc avoir plusieurs objets dans le même compartiment devrait être tout aussi performant comme de petits seaux pour une utilisation normale (c'est-à-dire pas des listes).

Comme pour l'ACL, les autorisations 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. De toute évidence, la définition d'autant d'octrois à l'échelle du compartiment réduira considérablement vos maux de tête administratifs si vous avez des millions de fichiers, mais n'oubliez pas que vous ne pouvez que accorder autorisations, pas les révoquer, donc les octrois à l'échelle du compartiment devraient être les sous-ensemble maximal de l'ACL pour tout son contenu.

Je recommanderais la division en compartiments séparés pour:

  • contenu totalement différent - le fait d'avoir des compartiments séparés pour les images, le son et d'autres données permet une architecture plus saine
  • aCL significativement différents - si vous pouvez avoir un compartiment avec chaque objet recevant une ACL spécifique, ou deux compartiments avec des ACL différentes et aucune ACL spécifique à un objet, prenez les deux compartiments.
117
James Brady

La réponse à la question d'origine "Fichiers max par répertoire dans S3" est: ILLIMITÉE. Voir aussi S3 limite aux objets dans un compartiment .

55
Vacilando