Composants de base d'Amazon DynamoDB - Amazon DynamoDB

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.

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 nommé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.

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) contenant 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 de la table Personnes en fournissant la valeur IDPersonne 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 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 pour Artiste, DynamoDB extrait 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. 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.

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 les éléments de données par Artist (clé de partition), ou par Artist et SongTitle (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 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 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 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 avec AWS Lambda pour créer un déclencheur, c'est-à-dire un 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 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.

En plus des déclencheurs, DynamoDB Streams permet de bénéficier de solutions puissantes telles que la réplication de données au sein des régions AWS ou entre elles, les vues matérialisées de données de tables DynamoDB, l'analyse de données à l'aide des 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.