web-dev-qa-db-fra.com

S3 - Qu'est-ce qu'un préfixe? Et quels sont les Ratelimits applicables?

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.

Dans l'exemple ci-dessus, s3-dg.pdf serait-il soumis à une limite de débit différente de 5500 demandes GET/second débit que chacun des autres préfixes (développement/finances/privé)?

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. .

7
dm03514

Cela ressemble à une réponse obscure dans une communication de version Amazon

https://aws.Amazon.com/about-aws/whats-new/2018/07/Amazon-s3-announces-increased-request-rate-per-performance/

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.

2
dm03514

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.

2
Matt D