Max fichiers par répertoire dans S3

87

Si j'avais un million d'images, serait-il préférable de les stocker dans une hiérarchie de dossiers / sous-dossiers ou de les vider toutes directement dans un seau (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 une surcharge importante dans la création de dossiers et sous-dossiers à la volée et la configuration de leurs ACL (par programmation)?

Nikhil Gupte
la source

Réponses:

123

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.
James Brady
la source
dans S3, il y a des seaux et à l'intérieur, vous pouvez avoir des «dossiers» et des «objets» où un dossier est probablement un objet aux yeux du système
mwm
14
@mwm vous vous trompez. Les «dossiers» sont strictement des subtilités d'interface utilisateur fournies par l'outil que vous utilisez. James a raison de dire que les touches peuvent avoir des barres obliques, mais que s3 s'en fiche du tout - il ne les considère certainement pas comme des dossiers.
Ry4an Brase
S3 évalue
Anatoly
S3 Prefixes ne sont plus nécessaires ou recommandées: aws.amazon.com/about-aws/whats-new/2018/07/...
AEA
-3

J'utilise une structure de répertoires avec une racine puis au moins un sous-répertoire. J'utilise souvent "date d'importation du document" comme répertoire sous la racine. Cela peut rendre la gestion des sauvegardes un peu plus facile. Quel que soit le système de fichiers que vous utilisez, vous êtes obligé d'atteindre une limite de nombre de fichiers (une limite pratique sinon physique). Vous pourriez également penser à soutenir plusieurs racines.

Jim Blizard
la source