AWS Solutions Architect · Leçon

Tables, éléments et clés primaires

Concevez des tables DynamoDB avec des clés de partition et des clés primaires composites, et comprenez les limites de stockage au niveau des éléments.

Leçon 1 sur 413 étapes

Tables, éléments et clés primaires est une leçon AWS Solutions Architect gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AWS Solutions Architect, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AWS Solutions Architect comprend 4 leçons au total.

DynamoDB : magasin clé-valeur NoSQL

Amazon DynamoDB est une base de données clé-valeur et documentaire entièrement gérée et sans serveur, conçue pour offrir des performances de l’ordre de quelques millisecondes, quelle que soit l’échelle. Contrairement aux bases de données relationnelles, DynamoDB est sans schéma : chaque élément peut posséder un ensemble d’attributs différent, à condition que la clé primaire soit présente.

DynamoDB stocke les données dans des tables, qui constituent le conteneur de niveau supérieur analogue à une table SQL. Les tables sont automatiquement réparties entre plusieurs nœuds de stockage situés dans différentes AZ, ce qui fournit une redondance intégrée sans nécessiter de configuration de votre part.

Tables et éléments

Une table DynamoDB contient une collection d’éléments, chacun étant une collection d’attributs. Les attributs sont des valeurs typées : chaîne (S), nombre (N), binaire (B), booléen (BOOL), valeur nulle (NULL), liste (L), mappage (M) et ensembles (SS, NS, BS).

Chaque élément d’une table doit inclure les attributs de la clé primaire ; tous les autres attributs sont facultatifs et peuvent différer d’un élément à l’autre. La taille maximale d’un élément est de 400 KB, en incluant tous ses noms et valeurs d’attributs.

# Example DynamoDB item structure (JSON)
{
  'UserId': {'S': 'user-abc-123'},
  'Timestamp': {'N': '1719000000'},
  'Username': {'S': 'alice'},
  'Score': {'N': '4200'},
  'Tags': {'SS': ['premium', 'verified']}
}

Clé primaire simple : clé de partition uniquement

Une clé primaire simple se compose d’un seul attribut appelé clé de partition (également appelée clé de hachage). DynamoDB applique une fonction de hachage interne à la valeur de la clé de partition afin de déterminer quelle partition de stockage contient l’élément. Tous les éléments ayant la même valeur de clé de partition sont stockés ensemble.

Avec une clé primaire simple, aucun élément de la table ne peut avoir la même valeur de clé de partition qu’un autre : cette valeur identifie chaque élément de manière unique. Cette conception convient aux tables dans lesquelles vous accédez toujours aux données à l’aide d’un identifiant unique, comme un ID utilisateur ou un ID de commande.

# Create a table with a simple (partition key only) primary key
aws dynamodb create-table \
  --table-name Users \
  --attribute-definitions AttributeName=UserId,AttributeType=S \
  --key-schema AttributeName=UserId,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST

Clé primaire composite : clé de partition + clé de tri

Une clé primaire composite utilise à la fois une clé de partition et une clé de tri (également appelée clé de plage). Les éléments ayant la même clé de partition sont stockés ensemble et triés selon la valeur de la clé de tri, ce qui permet d’effectuer des requêtes par plage au sein d’une partition.

Cette conception est extrêmement flexible : plusieurs éléments peuvent partager la même clé de partition, à condition que leurs clés de tri soient différentes. Par exemple, une table Orders peut utiliser CustomerId comme clé de partition et OrderDate comme clé de tri, ce qui vous permet d’interroger toutes les commandes d’un client, triées par date.

# Create a table with a composite primary key
aws dynamodb create-table \
  --table-name Orders \
  --attribute-definitions \
    AttributeName=CustomerId,AttributeType=S \
    AttributeName=OrderDate,AttributeType=S \
  --key-schema \
    AttributeName=CustomerId,KeyType=HASH \
    AttributeName=OrderDate,KeyType=RANGE \
  --billing-mode PAY_PER_REQUEST

Conception de la clé de partition et partitions surchargées

Le choix de la clé de partition appropriée est la décision de conception la plus importante dans DynamoDB. Une bonne clé de partition présente une forte cardinalité (de nombreuses valeurs distinctes) et répartit les accès uniformément entre les partitions. Les mauvais choix entraînent des partitions surchargées, dans lesquelles une partition reçoit une part disproportionnée du trafic, ce qui provoque une limitation de débit.

Modèles à éviter : utiliser un indicateur booléen (seulement deux valeurs), une date qui regroupe toutes les écritures du jour ou un champ d’état à faible cardinalité. Bons choix : ID utilisateur, ID d’appareil, UUID aléatoire ou valeurs composites telles que tenantId#entityType.

PutItem, GetItem et DeleteItem

Les trois opérations fondamentales de DynamoDB sur les éléments sont les suivantes :

  • PutItem : écrit un nouvel élément ou remplace complètement un élément existant ayant la même clé primaire
  • GetItem : récupère un seul élément à partir de sa clé primaire exacte (la clé complète est requise : clé de partition et, si elle est composite, clé de tri)
  • DeleteItem : supprime un élément à partir de sa clé primaire exacte

Ces trois opérations sont atomiques au niveau de l’élément. Par défaut, GetItem utilise des lectures à cohérence éventuelle ; l’ajout de --consistent-read force une lecture fortement cohérente qui renvoie toujours la dernière valeur écrite.

# PutItem
aws dynamodb put-item \
  --table-name Users \
  --item '{"UserId":{"S":"user-123"},"Name":{"S":"Alice"}}'

# GetItem
aws dynamodb get-item \
  --table-name Users \
  --key '{"UserId":{"S":"user-123"}}' \
  --consistent-read

UpdateItem et expressions conditionnelles

UpdateItem modifie certains attributs d’un élément existant sans le remplacer entièrement, contrairement à PutItem. Vous pouvez ajouter ou supprimer des attributs, ou effectuer atomiquement des opérations arithmétiques sur des attributs Number (par exemple, incrémenter un compteur).

Les expressions conditionnelles vous permettent de spécifier qu’une opération ne doit réussir que si une condition est vraie. Par exemple, vous pouvez mettre à jour l’état d’un élément uniquement s’il est actuellement PENDING. Cela permet d’implémenter des mécanismes de verrouillage optimiste sans transactions et constitue une technique de conception essentielle pour DynamoDB.

# Atomically increment a counter, only if item exists
aws dynamodb update-item \
  --table-name Orders \
  --key '{"CustomerId":{"S":"c-123"},"OrderDate":{"S":"2026-06-20"}}' \
  --update-expression 'SET ItemCount = ItemCount + :inc' \
  --condition-expression 'attribute_exists(CustomerId)' \
  --expression-attribute-values '{":inc":{"N":"1"}}'

Query ou Scan

Query récupère les éléments qui partagent la même valeur de clé de partition, avec la possibilité d’appliquer des conditions sur la clé de tri. Query est efficace : l’opération ne lit que la partition ciblée. Vous pouvez utiliser des conditions sur la clé de tri telles que begins_with, between, =, < et > pour affiner les résultats au sein de la partition.

Scan lit chaque élément de la table, puis applique éventuellement une expression de filtrage. Les opérations Scan sont coûteuses sur les grandes tables et doivent être évitées dans les modèles de requêtes en production. Si vous constatez que vous devez effectuer fréquemment des opérations Scan, revoyez la conception de votre table ou ajoutez un index secondaire global.

# Query: get all orders for customer c-123 after a date
aws dynamodb query \
  --table-name Orders \
  --key-condition-expression 'CustomerId = :cid AND OrderDate >= :dt' \
  --expression-attribute-values \
    '{":cid":{"S":"c-123"},":dt":{"S":"2026-01-01"}}'

Lectures à cohérence forte ou éventuelle

DynamoDB stocke trois copies de vos données dans plusieurs zones de disponibilité (AZ). Les lectures à cohérence éventuelle (par défaut) peuvent renvoyer une valeur légèrement obsolète si une écriture récente ne s’est pas encore propagée à toutes les copies, mais elles consomment la moitié des unités de capacité de lecture des lectures à cohérence forte.

Les lectures à cohérence forte renvoient toujours la dernière écriture validée, mais coûtent deux fois plus de RCU et ne sont pas disponibles sur les Global Secondary Indexes. Choisissez les lectures à cohérence éventuelle pour les charges de travail à haut débit et principalement orientées lecture, et les lectures à cohérence forte uniquement lorsque votre application nécessite les données les plus récentes.

Transactions DynamoDB

DynamoDB prend en charge les transactions ACID via TransactWriteItems et TransactGetItems. Une transaction peut regrouper jusqu’à 100 opérations d’écriture sur plusieurs éléments, voire plusieurs tables, en garantissant que toutes réussissent ou que toutes soient annulées de manière atomique.

Utilisez les transactions dans des scénarios tels que le transfert d’argent entre comptes (débiter un élément et en créditer un autre) ou la réservation d’une place (vérifier sa disponibilité et la réserver de manière atomique). Les transactions coûtent deux fois plus de RCU/WCU que les opérations normales ; utilisez-les donc uniquement lorsqu’une atomicité entre plusieurs éléments est réellement nécessaire.

Limite de taille des éléments et conseils de modélisation des données

La limite de 400 Ko par élément de DynamoDB influence la modélisation des données. Pour les charges utiles volumineuses (par exemple, des images ou de gros documents), stockez les données binaires dans S3 et uniquement la clé de l’objet S3 dans DynamoDB. Pour les données hiérarchiques profondément imbriquées, modélisez chaque type de nœud avec son propre modèle de clé de partition en utilisant une conception à table unique : une seule table contient plusieurs types d’entités, différenciés par le préfixe de la clé de partition et le modèle de clé de tri.

La conception à table unique réduit le nombre de tables et permet des modes d’accès efficaces en regroupant les éléments associés dans la même partition. Il s’agit d’une technique avancée qui réduit la charge opérationnelle et améliore les performances pour les modes d’accès complexes.

Vérification rapide

Vérifiez votre compréhension des concepts d’architecte de solutions AWS (SAA-C03) présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que les tables DynamoDB contiennent des éléments sans schéma limités à 400 Ko, que les clés primaires simples utilisent uniquement une clé de partition, tandis que les clés composites ajoutent une clé de tri pour les requêtes par plage, et que les clés de partition à forte cardinalité évitent les partitions surchargées. Utilisez Query plutôt que Scan pour accéder efficacement aux données. Nous allons ensuite étudier les modes de capacité provisionnée et à la demande.

Gratuit pour commencer

Apprends AWS Solutions Architect avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « Tables, éléments et clés primaires » est-elle gratuite ?

Oui — le texte complet de « Tables, éléments et clés primaires » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AWS Solutions Architect, passe à CoddyKit PRO. Le cours AWS Solutions Architect comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Tables, éléments et clés primaires » ?

Concevez des tables DynamoDB avec des clés de partition et des clés primaires composites, et comprenez les limites de stockage au niveau des éléments. Tu pratiques AWS Solutions Architect avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AWS Solutions Architect ?

Aucune expérience préalable n'est requise. AWS Solutions Architect sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Tables, éléments et clés primaires » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AWS Solutions Architect ?

Oui. Chaque leçon AWS Solutions Architect inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Tables, éléments et clés primaires
  2. Capacité provisionnée ou à la demande
  3. Index secondaires globaux et index secondaires locaux
  4. Flux DynamoDB et tables globales
← Retour à AWS Solutions Architect