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

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Amazon DynamoDB limite la taille de chaque élément que vous stockez dans une table à 400 Ko (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.

Il est recommandé d'utiliser ce ReturnConsumedCapacityparamètre lors de la rédaction d'éléments pour surveiller et signaler des tailles d'éléments approchant la taille maximale de 400 Ko. Le dépassement de la taille maximale des éléments entraînera l'échec des tentatives d'écriture. La surveillance et les alertes relatives à la taille des articles vous permettront d'atténuer les problèmes de taille des articles avant qu'ils n'aient un impact sur votre demande.

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 tels que GZIP ou LZO produisent une sortie binaire que vous pouvez ensuite stocker dans un type d'Binaryattribut au sein de l'élément.

Prenons l'exemple d'un tableau qui stocke les messages rédigés par les utilisateurs du forum. Ces messages contiennent souvent de longues chaînes de texte susceptibles d'être compressées. Bien que la compression puisse réduire la taille des éléments, l'inconvénient est que les valeurs d'attributs compressées ne sont pas utiles pour le filtrage.

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

Partitionnement vertical

Une autre solution pour traiter des éléments volumineux consiste à les décomposer en petits blocs de données et à associer tous les éléments pertinents par la valeur de la clé de partition. Vous pouvez ensuite utiliser une chaîne de clé de tri pour identifier les informations associées stockées à côté. En procédant ainsi, et en regroupant plusieurs éléments selon la même valeur de clé de partition, vous créez une collection d'éléments.

Pour plus d'informations sur cette approche, voir :

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.