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. Une table est une collection d'éléments et chaque élément est une collection d'attributs. DynamoDB utilise des clés primaires pour identifier de façon unique chaque élément d'une table, ainsi que des index secondaires afin d'offrir une plus grande flexibilité d'interrogation. Vous pouvez utiliser DynamoDB Streams pour récupérer les événements de modification des données dans des tables DynamoDB.

Il existe des limites dans DynamoDB. Pour plus d’informations, consultez Quotas de service, de compte et de table dans Amazon DynamoDB.

La vidéo suivante présente des tables, des éléments et des attributs.

Tables, éléments et attributs

Tables, éléments et attributs

Voici les composants DynamoDB de base :

  • Tables – Comme d'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.

  • Eléments – 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 dans DynamoDB sont similaires à maints égards aux lignes, registres ou tuples dans d'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.

  • Attributs – 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 des attributs appelés PersonId LastName, FirstName,, etc. Pour une table Department, un élément peut avoir des attributs tels que DepartmentID, Name, Manager, etc. Les attributs dans DynamoDB sont similaires à maints égards à des champs ou colonnes dans d'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.

People { "PersonID": 101, "LastName": "Smith", "FirstName": "Fred", "Phone": "555-4321" } { "PersonID": 102, "LastName": "Jones", "FirstName": "Mary", "Address": { "Street": "123 Main", "City": "Anytown", "State": "OH", "ZIPCode": 12345 } } { "PersonID": 103, "LastName": "Stephens", "FirstName": "Howard", "Address": { "Street": "123 Main", "City": "London", "PostalCode": "ER3 5K8" }, "FavoriteColor": "Blue" }

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.

Music { "Artist": "No One You Know", "SongTitle": "My Dog Spot", "AlbumTitle": "Hey Now", "Price": 1.98, "Genre": "Country", "CriticRating": 8.4 } { "Artist": "No One You Know", "SongTitle": "Somewhere Down The Road", "AlbumTitle": "Somewhat Famous", "Genre": "Country", "CriticRating": 8.4, "Year": 1984 } { "Artist": "The Acme Band", "SongTitle": "Still in Love", "AlbumTitle": "The Buck Starts Here", "Price": 2.47, "Genre": "Rock", "PromotionInfo": { "RadioStationsPlaying": [ "KHCR", "KQBX", "WTNR", "WJJH" ], "TourDates": { "Seattle": "20150622", "Cleveland": "20150630" }, "Rotation": "Heavy" } } { "Artist": "The Acme Band", "SongTitle": "Look Out, World", "AlbumTitle": "The Buck Starts Here", "Price": 0.99, "Genre": "Rock" }

Notez ce qui suit à propos de la table Musique :

  • La clé primaire de Music se compose de deux attributs (Artiste et SongTitle). Chaque élément de la table doit avoir ces deux attributs. La combinaison de Artist et C SongTitledistingue chaque élément du tableau 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 possède 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 des tables et des 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 genres de clés primaires :

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

    DynamoDB utilise la valeur de la clé de partition comme entrée pour 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 sera 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 du tableau Personnes en fournissant la PersonIdvaleur de cet élément.

  • Clé de partition et clé de tri – Appelée clé 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 pour 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 sera 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, plusieurs éléments d'une table peuvent avoir la même valeur clé de partition. Toutefois, ces éléments doivent avoir des valeurs clé de tri différentes.

    La table Music décrite dans Tables, éléments et attributs est un exemple de table dotée d'une clé primaire composite (Artist et SongTitle). Vous pouvez accéder directement à n'importe quel élément du tableau Musique, si vous indiquez l'artiste et SongTitleles valeurs 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 pour Artiste, DynamoDB extrait tous les morceaux de cet artiste. Pour récupérer uniquement un sous-ensemble de chansons d'un artiste en particulier, vous pouvez fournir une valeur pour Artist ainsi qu'une plage de valeurs pour SongTitle.

Note

La clé de partition d'un élément est également appelée attribut de hachage. L'expression attribut de hachage dé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. L'expression attribut de plage dérive de la façon dont DynamoDB stocke des éléments ayant la même clé de partition à proximité physique les uns des autres, dans un ordre trié sur la valeur de 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. Un index secondaire vous permet d'interroger les données de la table à l'aide d'une clé alternative, en plus des requêtes sur la clé primaire. DynamoDB n'exige pas l'utilisation d'index, mais ceux-ci apportent à vos applications davantage de flexibilité pour l'interrogation des 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 secondaire global – Index avec une clé de partition et une clé de tri pouvant différer de celles de la table.

  • Index secondaire local – Index avec la même clé de partition que la table, mais une clé de tri différente.

Dans DynamoDB, les index secondaires globaux (GSI) sont des index qui s'étendent sur l'ensemble de la table, ce qui vous permet d'effectuer des requêtes sur toutes les clés de partition. Les index secondaires locaux (LSI) sont des index dotés de la même clé de partition que la table de base, mais d'une clé de tri différente.

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

Dans l'exemple de table Music présenté précédemment, vous pouvez interroger des éléments de données par artiste (clé de partition) ou par artiste et SongTitle(clé de partition et clé de tri). Et si vous vouliez également interroger les données par genre et AlbumTitle? Pour ce faire, vous pouvez créer un index sur Genre AlbumTitle, puis interroger l'index de la même manière que vous interrogeriez la table Music.

Le schéma suivant montre l'exemple de table musicale, avec un nouvel index appelé GenreAlbumTitle. Dans l'index, Genre est la clé de partition et AlbumTitlela clé de tri.

Table Music GenreAlbumTitle
{ "Artist": "No One You Know", "SongTitle": "My Dog Spot", "AlbumTitle": "Hey Now", "Price": 1.98, "Genre": "Country", "CriticRating": 8.4 }
{ "Genre": "Country", "AlbumTitle": "Hey Now", "Artist": "No One You Know", "SongTitle": "My Dog Spot" }
{ "Artist": "No One You Know", "SongTitle": "Somewhere Down The Road", "AlbumTitle": "Somewhat Famous", "Genre": "Country", "CriticRating": 8.4, "Year": 1984 }
{ "Genre": "Country", "AlbumTitle": "Somewhat Famous", "Artist": "No One You Know", "SongTitle": "Somewhere Down The Road" }
{ "Artist": "The Acme Band", "SongTitle": "Still in Love", "AlbumTitle": "The Buck Starts Here", "Price": 2.47, "Genre": "Rock", "PromotionInfo": { "RadioStationsPlaying": { "KHCR", "KQBX", "WTNR", "WJJH" }, "TourDates": { "Seattle": "20150622", "Cleveland": "20150630" }, "Rotation": "Heavy" } }
{ "Genre": "Rock", "AlbumTitle": "The Buck Starts Here", "Artist": "The Acme Band", "SongTitle": "Still In Love" }
{ "Artist": "The Acme Band", "SongTitle": "Look Out, World", "AlbumTitle": "The Buck Starts Here", "Price": 0.99, "Genre": "Rock" }
{ "Genre": "Rock", "AlbumTitle": "The Buck Starts Here", "Artist": "The Acme Band", "SongTitle": "Look Out, World" }

Notez ce qui suit à propos de l'GenreAlbumTitleindex :

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

  • DynamoDB tient à jour les index automatiquement. Lorsque vous ajoutez, mettez à jour ou supprimez un élément dans la table de base, DynamoDB ajoute, met à jour ou supprime l'élément correspondant dans les index appartenant à 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 de clé de la table de base dans 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 consulter l'GenreAlbumTitleindex pour trouver tous les albums d'un genre donné (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 récupère les événements de modification de données dans des 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 sur une table, DynamoDB Streams écrit un registre de flux chaque fois que l'un des événements suivants se produit :

  • Un nouvel élément est ajouté à la table : le flux récupère 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é de la table : Le flux saisit 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 conjointement AWS Lambda pour créer un déclencheur, c'est-à-dire un code qui s'exécute automatiquement chaque fois qu'un événement intéressant 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 sur cette table, puis associer le flux à une fonction Lambda. La fonction Lambda s'exécute chaque fois qu'un nouveau registre de flux apparaît, mais traite uniquement les nouveaux éléments ajoutés à la table Customers. Pour tout élément ayant un attribut EmailAddress, 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'attribut EmailAddress.

Outre les déclencheurs, DynamoDB Streams propose des solutions puissantes telles que la réplication de données au sein des AWS régions et entre celles-ci, les vues matérialisées des données dans des tables DynamoDB, l'analyse des données à l'aide de vues matérialisées Kinesis, et bien plus encore.

Pour plus d’informations, consultez Modifier la récupération de données pour DynamoDB Streams.