Je me demandais si quelqu'un savait ce qu'est exactement un préfixe s3 et comment il interagit avec les limites de taux publié s3 d'Amazon :
Amazon S3 s'adapte automatiquement à des taux de demande élevés. Par exemple, votre application peut atteindre au moins 3 500 PUT/POST/DELETE et 5 500 GET demandes par seconde par préfixe dans un compartiment. Il n'y a pas de limites à le nombre de préfixes dans un seau.
Bien que ce soit vraiment clair, je ne suis pas tout à fait sûr de ce qu’est un préfixe.
Un préfixe nécessite-t-il un délimiteur?
Si nous avons un compartiment dans lequel nous stockons tous les fichiers au niveau "racine" (complètement à plat, sans préfixe/délimiteur), cela compte-t-il comme "préfixe" unique et est-il soumis aux limites de débit indiquées ci-dessus?
La façon dont j'interprète la documentation de Amazon me suggère que cela IS est le cas et que la structure plate serait considérée comme un "préfixe" unique. (c’est-à-dire qu’il serait soumis aux limites de taux publiées ci-dessus)
Supposons que votre compartiment (créé par l’administrateur) comporte quatre objets avec le clés d'objet suivantes:
Développement/Projects1.xls
Finance/statement1.pdf
Private/taxdocument.pdf
s3-dg.pdf
La clé s3-dg.pdf n'a pas de préfixe, son objet apparaît donc directement au niveau racine du seau. Si vous ouvrez le développement / dossier, vous voyez l’objet Projects.xlsx.
Ce qui est encore plus déroutant, c'est que j'ai lu quelques blogs sur Amazon utilisant les N premiers octets comme clé de partition et encourageant à utiliser des préfixes de cardinalité élevée. .
Cela ressemble à une réponse obscure dans une communication de version Amazon
Les performances évoluent par préfixe, vous pouvez donc utiliser autant de préfixes que vous le souhaitez besoin en parallèle pour atteindre le débit requis. Il n'y a pas limite au nombre de préfixes.
Cette augmentation de la performance du taux de requête S3 supprime tout précédent conseils pour randomiser les préfixes d’objet afin d’accroître les performances . Cela signifie que vous pouvez maintenant utiliser des modèles de dénomination logiques ou séquentiels dans S3 nommer des objets sans aucune incidence sur les performances. Cette amélioration est maintenant disponible dans toutes les régions AWS. Pour plus d'informations, visitez le Amazon S3 Guide du développeur.
Pour qu'AWS puisse traiter des milliards de demandes par seconde, ils doivent partager les données afin d'optimiser le débit. Pour ce faire, ils divisent les données en partitions sur la base des 6 à 8 premiers caractères de la clé d'objet. N'oubliez pas que S3 n'est pas un système de fichiers hiérarchique, il s'agit uniquement d'un magasin clé-valeur, bien que la clé soit souvent utilisée comme chemin de fichier pour organiser les données, préfixe + nom de fichier.
Maintenant, ce n'est pas un problème si vous attendez moins de 100 demandes par seconde, mais si vous avez des exigences sérieuses à ce sujet, vous devez penser à nommer.
Pour un débit parallèle maximal, vous devez tenir compte de la façon dont vos données sont consommées et utiliser les caractères les plus variables au début de votre clé, ou même générer 8 caractères aléatoires pour les 8 premiers caractères de la clé.
par exemple. en supposant que les 6 premiers caractères définissent la partition:
files/user/bob
serait bad comme tous les objets seraient sur une partition files/
.
2018-09-21/files/bob
serait presque aussi mauvais si seules les données actuelles sont lues à partir de la partition 2018-0
. Mais légèrement mieux si les objets sont lus des années passées.
bob/users/files
serait plutôt bon si différents utilisateurs sont susceptibles d'utiliser les données en même temps à partir de la partition bob/us
. Mais pas si bon si Bob est de loin l’utilisateur le plus occupé.
3B6EA902/files/users/bob
serait best pour la performance, mais plus difficile à référencer, où la première partie est une chaîne aléatoire, elle serait assez uniformément répartie.
En fonction de vos données, vous devez penser à un moment donné, savoir qui lit quoi et vous assurer que les clés commencent par suffisamment de variations pour permettre une partition appropriée.
Pour votre exemple, supposons que la partition soit prise à partir des 6 premiers caractères de la clé:
pour la clé Development/Projects1.xls
la clé de partition serait Develo
pour la clé Finance/statement1.pdf
la clé de partition serait Financ
pour la clé Private/taxdocument.pdf
la clé de partition serait Privat
pour la clé s3-dg.pdf
la clé de partition serait s3-dg.