DynamoDB vs Amazon S3
DynamoDB et Amazon S3 résolvent des problèmes différents, donc la réponse honnête à « lequel » est généralement les deux. DynamoDB est une base de données clé-valeur et documentaire pour des enregistrements structurés que tu recherches, interroges et mets à jour par clé. Amazon S3 est un stockage d'objets pour fichiers et blobs — images, sauvegardes, journaux, vidéos — que tu stockes et récupères en entier. Ils sont complémentaires, pas l'un ou l'autre.
Dois-je utiliser DynamoDB ou S3 ?
Utilise DynamoDB quand tu as de nombreux petits enregistrements structurés que tu interroges, filtres et mets à jour par clé avec une latence de l'ordre de la milliseconde. Utilise Amazon S3 quand tu stockes et sers des fichiers ou blobs entiers — images, sauvegardes, exports — et que tu les récupères par nom. Ils sont complémentaires : un pattern très courant stocke l'objet dans S3 et ses métadonnées dans DynamoDB.
DynamoDB vs Amazon S3 en un coup d'œil
| Caractéristique | DynamoDB | Amazon S3 |
|---|---|---|
| Objectif principal | Base de données NoSQL clé-valeur / documentaire pour enregistrements structurés | Stockage d'objets pour fichiers, blobs et données non structurées |
| Unité de données | Élément (un ensemble d'attributs typés), adressé par clé primaire | Objet (octets + métadonnées), adressé par une clé au sein d'un bucket |
| Taille max par unité | 400 Ko par élément (noms d'attributs + valeurs) | 5 To par objet (PUT unique jusqu'à 5 Go ; les envois plus grands utilisent le multipart) |
| Requête / accès | GetItem, Query, Scan, BatchGetItem, PartiQL, index secondaires (GSI/LSI) | GET / PUT / DELETE par clé, LIST sur un bucket ; requête sur place via Amazon Athena (ou S3 Select pour les clients existants) |
| Profil de latence | Lectures/écritures de l'ordre de la milliseconde pour des éléments uniques à n'importe quelle échelle | Débit d'objets durable ; latence par requête plus élevée qu'une base clé-valeur, pas des recherches d'enregistrement en millisecondes |
| Cohérence | Cohérence à terme par défaut ; lectures fortement cohérentes disponibles par requête | Forte cohérence read-after-write pour tous les objets et toutes les requêtes (depuis 2020) |
| Modèle de tarification | Capacité de lecture/écriture (RCU/WCU — à la demande ou provisionnée) + stockage de données par Go-mois | Stockage par Go-mois (selon la classe de stockage) + frais de requête (PUT/GET/LIST) + récupération / transfert de données |
| Charges idéales | Profils utilisateur, sessions, paniers, enregistrements d'événements/d'état, métadonnées, accès de type OLTP à fort débit | Médias, sauvegardes, fichiers de data lake, ressources statiques, exports volumineux, archivage |
Chaque cellule ci-dessus provient de la documentation officielle AWS (voir la note de provenance en haut de ce fichier).
Quand utiliser DynamoDB
Tourne-toi vers DynamoDB quand tes données sont des enregistrements structurés auxquels tu accèdes par clé :
- De nombreux petits éléments (chacun sous la limite de 400 Ko) que tu lis, écris et mets à jour individuellement.
- Des recherches prévisibles à faible latence — DynamoDB vise des lectures et écritures de l'ordre de la milliseconde pour des éléments uniques à n'importe quelle échelle.
- Des patterns d'accès que tu peux exprimer avec une clé primaire et des index secondaires : get-by-id, requête-sur-une-partition, filtre-dans-une-partition.
- Un fort débit d'écriture avec des mises à jour à granularité fine (modifier un attribut sans réécrire tout l'enregistrement).
Si tu te retrouves à essayer de stocker un fichier de 5 Mo à l'intérieur d'un élément, c'est le signe que tu as atteint la limite de DynamoDB — voir limite de taille d'élément DynamoDB.
Quand utiliser S3
Tourne-toi vers Amazon S3 quand tes données sont un fichier ou blob entier que tu récupères par nom :
- Images, PDF, vidéos, audio et autres ressources binaires.
- Sauvegardes, exports de base de données et fichiers de data lake (Parquet, CSV, JSON) interrogés plus tard avec un outil comme Amazon Athena.
- Objets volumineux — S3 stocke des objets jusqu'à 5 To chacun, bien au-delà de tout enregistrement de base de données unique.
- Ressources de site web statiques et contenu servi directement aux utilisateurs.
S3 n'est pas une base de données : tu ne peux pas interroger le contenu d'objets arbitraires avec des index riches comme tu interroges les éléments DynamoDB. Le filtrage de style SQL sur place sur un objet est disponible via Amazon Athena (S3 Select reste disponible pour les clients existants mais a été fermé aux nouveaux clients en 2024).
Les utiliser ensemble
Les deux services sont les plus puissants combinés. La recommandation d'AWS elle-même pour des données trop volumineuses pour un élément DynamoDB est de stocker l'objet dans S3 et de garder un pointeur dans DynamoDB :
- Stocke le gros fichier (image, document, vidéo) comme objet dans S3.
- Stocke ses métadonnées — la clé d'objet S3, le type de contenu, le propriétaire, les tags, les horodatages — comme élément dans DynamoDB, où elles sont interrogeables à peu de frais.
- Recherche l'enregistrement dans DynamoDB par clé, puis récupère l'objet depuis S3 à l'aide de l'identifiant stocké.
Une réserve qu'AWS souligne : il n'y a pas de transactions couvrant DynamoDB et S3, donc ton application gère les échecs partiels (par exemple, nettoyer un objet S3 orphelin si l'écriture DynamoDB échoue).
Travailler avec DynamoDB
Une fois DynamoDB choisi pour la moitié structurée de tes données, DynoTable est un client desktop DynamoDB pour parcourir, éditer et interroger des tables sur macOS, Windows et Linux. Il lit ta chaîne d'identifiants AWS standard, donc il n'y a rien de spécifique à DynamoDB à migrer — pointe-le vers ta région et tes tables et tes données restent dans DynamoDB.
Quand tu as besoin de construire à la main les expressions GetItem, Query, Update ou de condition qui sous-tendent le pattern métadonnées-dans-DynamoDB ci-dessus, le DynamoDB Expression Builder gratuit génère la requête sous les formes AWS SDK, CLI et boto3. Pour dimensionner un élément par rapport à la limite de 400 Ko avant de décider ce qui appartient à S3, le calculateur de taille d'élément mesure la taille en octets d'un enregistrement.
FAQ
DynamoDB peut-il stocker des fichiers ou des images ?
Les petits, dans certaines limites. Un élément DynamoDB peut contenir des données binaires, mais l'élément entier — chaque nom et valeur d'attribut — doit rester sous 400 Ko. Pour tout ce qui est plus grand, la bonne pratique documentée d'AWS est de stocker le fichier comme objet dans Amazon S3 et de garder la clé d'objet S3 (plus les métadonnées) dans un élément DynamoDB.
S3 est-il moins cher que DynamoDB ?
Ils sont tarifés différemment, donc ça dépend de la charge de travail plutôt que d'une réponse tranchée. S3 facture le stockage par Go-mois plus des frais par requête et de récupération, et est généralement le foyer le moins cher pour de gros volumes d'octets rarement consultés. DynamoDB facture la capacité de lecture/écriture plus le stockage et est conçu pour un accès à fort débit et faible latence à de nombreux petits enregistrements. Stocker de gros blobs dans DynamoDB est à la fois limité en taille et comparativement coûteux — c'est pourquoi le partage objet-S3-plus-métadonnées-DynamoDB est le pattern standard.
DynamoDB ou S3 pour le JSON ?
Si le JSON est un enregistrement structuré que tu interroges et mets à jour par clé — un utilisateur, une commande, une session — DynamoDB convient, et il mappe le JSON vers des attributs typés et prend en charge PartiQL. Si le JSON est un document entier ou un fichier de data lake que tu stockes et scannes ensuite en masse (par exemple en l'interrogeant avec Amazon Athena), S3 convient. Un hybride fréquent garde les champs interrogeables dans DynamoDB et la charge JSON complète comme objet dans S3.
Voir aussi
- Apprendre : limite de taille d'élément DynamoDB · Quand utiliser DynamoDB
- Construis des requêtes visuellement avec le DynamoDB Expression Builder.
- Dimensionne des enregistrements avec le calculateur de taille d'élément DynamoDB.
- Télécharger DynoTable pour travailler avec tes tables DynamoDB.
Dernière vérification le 2026-07-12 par rapport à la documentation officielle AWS DynamoDB et Amazon S3. Amazon S3, DynamoDB et Athena sont des services d'Amazon Web Services, mentionnés ici à des fins d'identification uniquement.