Bonnes pratiques de stockage d'éléments volumineux et d'attributs - Amazon DynamoDB

Bonnes pratiques de stockage d'éléments volumineux et d'attributs

Amazon DynamoDB limite actuellement la taille de chaque élément que vous stockez dans une table (voir Quotas de service, de compte et de table dans Amazon DynamoDB). Si votre application a besoin de stocker dans un élément davantage de données que ne le permet la limite de taille dans DynamoDB, vous pouvez essayer de compresser un ou plusieurs attributs volumineux, ou de les scinder en plusieurs éléments (indexés efficacement par des clés de tri). Vous pouvez stocker l'élément en tant qu'objet dans Amazon Simple Storage Service (Amazon S3), puis stocker l'identifiant d'objet Amazon S3 dans votre élément DynamoDB.

Compression de valeurs d'attribut volumineux

La compression de valeurs d'attribut volumineuses permet de maintenir celles-ci dans les limites de l'élément dans DynamoDB, et de réduire les coûts de stockage. Les algorithmes de compression comme GZIP ou LZO génèrent une sortie binaire que vous pouvez ensuite stocker dans un type d'attribut Binary.

Par exemple, la table Reply de la section Création de tables et chargement de données pour des exemples de code dans DynamoDB stocke les messages rédigés par les utilisateurs du forum. Ces réponses utilisateur peuvent être constituées de longues chaînes de texte, ce qui en fait d'excellentes candidates pour la compression.

Pour l'exemple de code qui montre comment compresser de tels messages dans DynamoDB, consultez les ressources suivantes :

Stockage de valeurs d'attribut volumineuses dans Amazon S3

Comme mentionné précédemment, vous pouvez également utiliser Amazon S3 pour stocker des valeurs d'attribut volumineuses qui ne peuvent pas tenir dans un élément DynamoDB. Vous pouvez les stocker en tant qu'objet dans Amazon S3, puis stocker l'identifiant d'objet dans votre élément DynamoDB.

Vous pouvez aussi utiliser la prise en charge des métadonnées d'objet dans Amazon S3 pour fournir un lien vers l'élément parent dans DynamoDB. Stockez la valeur de clé primaire de l'élément en tant que métadonnée Amazon S3 de l'objet dans Amazon S3. Cela facilite souvent la maintenance des objets Amazon S3.

Par exemple, considérons la table ProductCatalog de la section Création de tables et chargement de données pour des exemples de code dans DynamoDB. Les éléments de cette table stockent les informations sur le prix de l'article, sa description, les auteurs de livres et les dimensions d'autres produits. Si vous souhaitiez stocker une image de chaque produit trop volumineuse pour tenir dans un élément, vous pourriez stocker les images dans Amazon S3 plutôt que dans DynamoDB.

Lorsque vous implémentez cette politique, gardez à l'esprit les éléments suivants :

  • DynamoDB ne prend pas en charge les transactions entre Amazon S3 et DynamoDB. Votre application doit donc gérer les échecs, dont le nettoyage d'objets Amazon S3 orphelins.

  • Amazon S3 limite la longueur des identifiants d'objet. Vous devez donc organiser vos données afin d'éviter la génération d'identifiants d'objet de longueur excessive et la violation de toute autre contrainte Amazon S3.

Pour plus d'informations sur l'utilisation d'Amazon S3, consultez le Guide du l'utilisateur Amazon Simple Storage Service.