Quel modèle de dénomination de clé d'objet dois-je appliquer avec Amazon S3 ?

Date de la dernière mise à jour : 30/03/2020

Il est probable que mon compartiment Amazon Simple Storage Service (Amazon S3) soit prochainement soumis à des taux de requêtes élevés. Quel modèle de dénomination de clé d'objet dois-je appliquer pour obtenir de meilleures performances ?

Solution

Votre compartiment Amazon S3 peut prendre en charge 3 500 requêtes PUT/COPY/POST/DELETE et 5 500 requêtes GET/HEAD par seconde et par préfixe partitionné. Pour optimiser votre compartiment afin qu'il puisse prendre en charge des taux de requêtes élevés, vous pouvez appliquer un modèle de dénomination de clé d'objet qui répartit vos objets au niveau de plusieurs préfixes. Chaque préfixe supplémentaire permet à votre compartiment de se mettre à l'échelle et de prendre en charge 3 500 requêtes PUT/COPY/POST/DELETE ou 5 500 requêtes GET/HEAD supplémentaires par seconde.

Par exemple, les objets suivants du compartiment awsexamplebucket sont tous regroupés dans le préfixe folderA :

awsexamplebucket/folderA/object-A1
awsexamplebucket/folderA/object-A2
awsexamplebucket/folderA/object-B1
awsexamplebucket/folderA/object-B2
awsexamplebucket/folderA/object-c1
awsexamplebucket/folderA/object-c2

Pour répartir ces objets au niveau de plusieurs préfixes, vous pouvez modifier le nom du préfixe :

awsexamplebucket/Afolder/object-A1
awsexamplebucket/Afolder/object-A2
awsexamplebucket/Bfolder/object-B1
awsexamplebucket/Bfolder/object-B2
awsexamplebucket/Cfolder/object-c1
awsexamplebucket/Cfolder/object-c2

Pour obtenir des informations supplémentaires et consulter des exemples de dénomination, reportez-vous à l'article Conseils et astuces pour augmenter les performances avec Amazon S3.

Applications s'exécutant sur un lac de données

Certaines applications s'exécutent sur des lacs de données qui induisent des conventions de dénomination basées sur la date, conformément aux paramètres de moteurs tels que Hive, Spark ou Presto. Si votre application présente un débit très élevé, cette convention de dénomination basée sur la date peut nécessiter un ajustement supplémentaire.

Important : un tel débit n'est pas habituel et concerne les cas d'utilisation induisant des pétaoctets dédiés au stockage et analysés à l'aide de milliers de cœurs de processeur. Si vous n'avez pas besoin de disposer d'une telle capacité, il n'est pas nécessaire d'effectuer cet ajustement supplémentaire.

Un nom de clé d'objet conforme à la convention de dénomination basée sur la date est souvent similaire à ce qui suit :

awsexamplebucket/HadoopTableName/dt=yyyy-mm-dd/objectname

Si une table mappée avec un seul préfixe de nom de clé Amazon S3 est associée à un taux de requêtes qui dépasse le nombre maximal pris en charge par préfixe, il est possible que l'application génère des erreurs 503. Afin de prendre en charge des taux de trafic plus élevés, il est recommandé de fractionner les tables mappées avec un préfixe de nom de clé à l'aide d'une partition à clé naturelle.

Par exemple, si une table « users » est mappée avec un préfixe Amazon S3, vous pouvez la partitionner en spécifiant le pays de l'utilisateur :

awsexamplebucket/users/US/dt=yyyy-mm-dd
awsexamplebucket/users/CA/dt=yyyy-mm-dd

Il est nécessaire de vérifier les conditions à respecter, avec votre application, pour ajouter des partitions à une table, ainsi que les conventions de dénomination prises en charge par celle-ci. Vous pouvez notamment consulter la section Partitionnement de données pour obtenir des informations supplémentaires sur le partitionnement des tables dans Amazon Athena. Amazon Athena utilise Hive pour partitionner les données.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?