Composants de base d'Amazon DynamoDB - 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.

Composants de base d'Amazon DynamoDB

Dans DynamoDB, les tables, les éléments et les attributs sont les principaux composants que vous utilisez. ATableauest un ensemble d'Eléments, et chaque élément est un ensemble d'attributs. DynamoDB utilise les clés primaires pour identifier de façon unique chaque élément d'une table et les index secondaires pour fournir une plus grande flexibilité d'interrogation. Vous pouvez utiliser les DynamoDB Streams pour capturer les événements de modification de données dans les tables DynamoDB.

Il y a des limites dans DynamoDB. Pour plus d'informations, consultez Quotas de service, de compte et de table dans Amazon DynamoDB.

Tables, éléments et attributs

Voici les composants de base de DynamoDB :

  • Tables— De même que les autres systèmes de base de données, DynamoDB stocke les données dans des tables. Une table est un ensemble de données. Par exemple, consultez l'exemple de table appelée People que vous pouvez utiliser pour stocker les informations sur vos amis, votre famille ou toute autre personne de votre choix. Vous pouvez également avoir une table Cars pour stocker les informations sur les véhicules que les personnes conduisent.

  • Items— Chaque table contient zéro ou plusieurs éléments. Un élément est un groupe d'attributs identifiable de façon unique parmi tous les autres éléments. Dans une table People, chaque élément représente une personne. Pour une table Cars, chaque élément représente un véhicule. Les éléments de DynamoDB sont similaires en de nombreux points aux lignes, enregistrements ou tuples des autres systèmes de base de données. Dans DynamoDB, il n'existe pas de limite au nombre d'éléments que vous pouvez stocker dans une table.

  • Attributes— Chaque élément se compose d'un ou de plusieurs attributs. Un attribut est un élément de donnée fondamental, qui n'a pas besoin d'être décomposé plus avant. Par exemple, un élément d'une table People contient les attributs appelés PersonID, LastName, FirstName, et ainsi de suite. Pour une table Department, un élément peut avoir des attributs tels que DepartmentID, Name,Manager, etc. Les attributs de DynamoDB sont similaires en de nombreux points aux champs ou colonnes des autres systèmes de base de données.

Le schéma suivant montre une table nommée Personnes avec certains exemples d'éléments et d'attributs.

Notez ce qui suit à propos de la table Personnes :

  • Chaque élément de la table possède un identifiant unique, ou clé primaire, qui distingue l'élément de tous les autres éléments de la table. Dans la table Personnes, la clé primaire se compose d'un seul attribut (IDPersonne).

  • En dehors de la clé primaire, la table Personnes est sans schéma, ce qui signifie que ni les attributs ni leurs types de données ne doivent être définis au préalable. Chaque élément peut avoir ses propres attributs distincts.

  • La plupart des attributs sont scalaires, ce qui signifie qu'ils ne peuvent avoir qu'une seule valeur. Les chaînes et les nombres sont des exemples courants de scalaires.

  • Certains éléments ont un attribut imbriqué (Address). DynamoDB prend en charge les attributs imbriqués jusqu'à 32 niveaux de profondeur.

Ce qui suit est un autre exemple de table nommée Musique que vous pouvez utiliser pour effectuer le suivi de votre collection musicale.

Notez ce qui suit à propos de la table Musique :

  • La clé primaire de la table Musique se compose de deux attributs (Artiste et TitreDeChanson). Chaque élément de la table doit avoir ces deux attributs. La combinaison de Artiste et de TitreDeChanson distingue chaque élément de la table de tous les autres.

  • En dehors de la clé primaire, la table Musique est sans schéma, ce qui signifie que ni les attributs ni leurs types de données ne doivent être définis au préalable. Chaque élément peut avoir ses propres attributs distincts.

  • L'un des éléments a un attribut imbriqué (PromotionInfo), qui contient d'autres attributs imbriqués. DynamoDB prend en charge les attributs imbriqués jusqu'à 32 niveaux de profondeur.

Pour plus d'informations, consultez Utilisation de tables et de données dans DynamoDB.

Clé primaire

Lorsque vous créez une table, en plus du nom de la table, vous devez spécifier la clé primaire de la table. La clé primaire identifie de manière unique chaque élément de la table, afin qu'aucun deux éléments n'ait la même clé.

DynamoDB prend en charge deux différents types de clés primaires :

  • Clé de partition— Clé primaire simple, composée d'un attribut appeléclé de partition.

    DynamoDB utilise la valeur de la clé de partition comme entrée d'une fonction de hachage interne. La sortie de la fonction de hachage détermine la partition (stockage physique interne de DynamoDB) dans laquelle l'élément est stocké.

    Dans une table comportant une seule clé de partition, deux éléments d'une table ne peuvent pas avoir la même valeur de clé de partition.

    La table Personnes décrite dans Tables, éléments et attributs est un exemple de table avec une clé primaire simple (IDPersonne). Vous pouvez accéder directement à n'importe quel élément de la table Personnes en fournissant la valeur IDPersonne de cet élément.

  • Clé de partition et clé de tri— Désigné sous le nom deClé primaire composite, ce type de clé se compose de deux attributs. Le premier attribut est la clé de partition et le second attribut est la clé de tri.

    DynamoDB utilise la valeur de clé de partition comme entrée d'une fonction de hachage interne. La sortie de la fonction de hachage détermine la partition (stockage physique interne de DynamoDB) dans laquelle l'élément est stocké. Tous les éléments avec la même valeur de clé de partition sont stockés ensemble, par ordre de valeur de la clé de tri.

    Dans une table comportant une clé de partition et une clé de tri, deux éléments d'une table peuvent avoir la même valeur de clé de partition. Toutefois, ces deux éléments doivent avoir des valeurs de clé de tri différentes.

    La table Musique décrite dans Tables, éléments et attributs est un exemple de table avec une clé primaire composite (Artiste et TitreDeChanson). Vous pouvez accéder directement à n'importe quel élément de la table Musique, si vous fournissez les valeurs Artiste et TitreDeChanson de cet élément.

    Une clé primaire composite vous offre plus de flexibilité lors de l'interrogation des données. Par exemple, si vous fournissez uniquement la valeur pourArtiste, DynamoDB récupère tous les morceaux de cet artiste. Pour récupérer uniquement un sous-ensemble de titres d'un artiste en particulier, vous pouvez fournir une valeur pour Artiste et une plage de valeurs TitreDeChanson.

Note

La clé de partition d'un élément est également appelée attribut de hachage. Le termeAttribut de hachagedérive de l'utilisation d'une fonction de hachage interne dans DynamoDB qui répartit uniformément les éléments de données entre les partitions, en fonction de leurs valeurs de clé de partition.

La clé de tri d'un élément est également appelée attribut de plage. Le termeattribut rangedérive de la façon dont DynamoDB stocke les éléments avec la même clé de partition physiquement proches les uns des autres, dans l'ordre de la valeur de la clé de tri.

Chaque attribut de clé primaire doit être un scalaire (ce qui signifie qu'il ne peut contenir qu'une seule valeur). Les seuls types de données autorisés pour les attributs de clé primaires sont string, number ou binary. Il n'y a aucune restriction semblable pour les autres attributs non-clés.

Index secondaires

Vous pouvez créer un ou plusieurs index secondaires sur une table. Aindex secondaireVous permet d'interroger les données de la table à l'aide d'une clé secondaire, en plus des requêtes sur la clé primaire. DynamoDB ne requiert pas que vous utilisiez des index, mais ceux-ci offrent à vos applications plus de flexibilité lorsqu'il s'agit d'interroger vos données. Une fois que vous avez créé un index secondaire sur une table, vous pouvez lire les données à partir de l'index de la même façon que vous le feriez à partir de la table.

DynamoDB prend en charge deux types d'index :

  • Index secondaires globaux : Index avec une clé de partition et une clé de tri qui peuvent être différentes de celles de la table.

  • Index secondaire local : index possédant la même clé de partition que la table, mais une clé de tri différente.

Chaque table dans DynamoDB possède un quota de 20 index secondaires globaux (quota par défaut) et de 5 index secondaires locaux.

Dans l'exemple de table Musique précédent, vous pouvez interroger les éléments de données par Artiste (clé de partition) ou par Artiste et TitreDeChanson (clé de partition et clé de tri). Que faire si vous souhaitez également interroger les données par Genre et TitreAlbum ? Pour ce faire, vous pouvez créer un index sur Genre et TitreAlbum, puis interroger l'index à peu près de la même manière que vous interrogeriez la table Musique.

Le schéma suivant illustre la table Musique avec un nouvel index appelé GenreAlbumTitre. Dans l'index, Genre est la clé de partition et TitreAlbum est la clé de tri.

Notez ce qui suit à propos de l'index GenreTitreAlbum :

  • Chaque index appartient à une table, qui est appelée la table de base de l'index. Dans l'exemple précédent, Musique est la table de base de l'index GenreTitreAlbum.

  • DynamoDB gère les index automatiquement. Lorsque vous ajoutez, mettez à jour ou supprimez un élément de la table de base, DynamoDB ajoute, met à jour ou supprime l'élément correspondant dans les index qui appartiennent à cette table.

  • Lorsque vous créez un index, vous spécifiez quels attributs seront copiés, ou projetés, depuis la table de base vers l'index. Au minimum, DynamoDB projette les attributs clés de la table de base vers l'index. Tel est le cas avec GenreAlbumTitle, où seuls les attributs clés de la table Music sont projetés dans l'index.

Vous pouvez interroger l'index GenreAlbumTitle pour rechercher tous les albums d'un genre particulier (par exemple, tous les albums Rock). Vous pouvez également interroger l'index pour rechercher tous les albums dans un genre particulier avec certains titres d'album (par exemple, tous les albums Country dont les titres commencent par la lettre H).

Pour plus d'informations, consultez Amélioration de l'accès aux données avec les index secondaires.

DynamoDB Streams

DynamoDB Streams est une fonction facultative qui capture les événements de modification de données dans les tables DynamoDB. Les données sur ces événements apparaissent dans le flux de données presque en temps réel et dans l'ordre où les événements se sont produits.

Chaque événement est représenté par un enregistrement de flux. Si vous activez un flux de données sur une table, DynamoDB Streams écrit un enregistrement de flux chaque fois que l'un des événements suivants se produit :

  • Un nouvel élément est ajouté au tableau : Le flux capture une image de la totalité de l'élément, y compris l'ensemble de ses attributs.

  • Un élément est mis à jour : Le flux capture l'image « avant » et « après » des attributs qui ont été modifiés dans l'élément.

  • Un élément est supprimé du tableau : Le flux capture une image de la totalité de l'élément avant qu'il n'ait été supprimé.

Chaque enregistrement de flux contient aussi le nom de la table, l'horodatage de l'événement et autres métadonnées. Les enregistrements de flux ont une durée de vie de 24 heures ; passé ce délai, ils sont automatiquement supprimés du flux.

Vous pouvez utiliser DynamoDB Streams avec AWS Lambda pour créer unDéclencheur : code qui s'exécute automatiquement chaque fois qu'un événement d'intérêt apparaît dans un flux. Par exemple, imaginons une table Clients qui contient les informations client d'une entreprise. Supposons que vous souhaitiez envoyer un e-mail de bienvenue à chaque nouveau client. Vous pouvez activer un flux de données sur cette table, puis associer le flux à une fonction Lambda. La fonction Lambda s'exécute chaque fois qu'un nouvel enregistrement de flux s'affiche, mais traite uniquement les nouveaux éléments ajoutés à la tableLes clientsTable. Pour tout élément qui a unEmailAddress, la fonction Lambda appelle Amazon Simple Email Service (Amazon SES) pour envoyer un e-mail à cette adresse.

Note

Dans cet exemple, le dernier client, Craig Roe, ne reçoit pas d'e-mail, car il n'a pas d'attributEmailAddress.

En plus des déclencheurs, DynamoDB Streams permet des solutions puissantes telles que la réplication des données au sein des régions AWS ou entre elles, les vues matérialisées des données des tables DynamoDB, l'analyse des données à l'aide des vues matérialisées Kinesis et plus encore.

Pour plus d'informations, consultez Capture DynamoDB Streams.