Partitions et distribution des données - 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.

Partitions et distribution des données

Amazon DynamoDB stocke les données dans des partitions. Une partition est une allocation de stockage pour une table, soutenue par des disques SSD et répliquée automatiquement sur plusieurs zones de disponibilité au sein d'une AWS région. La gestion des partitions étant entièrement effectuée par DynamoDB, vous n'avez jamais besoin de vous en occuper.

Lorsque vous créez une table, l'état initial de la table est CREATING. Au cours de cette phase, DynamoDB alloue à la table des partitions en nombre suffisant pour qu'elle puisse gérer vos exigences de débit approvisionné. Vous pouvez commencer à écrire et à lire les données de table une fois que l'état de la table est devenu ACTIVE.

DynamoDB alloue des partitions supplémentaires à une table dans les cas suivants :

  • Si vous augmentez les paramètres de débit alloué de la table au-delà de ce que les partitions existantes peuvent prendre en charge.

  • Si la capacité d'une partition existante est pleine et qu'un espace de stockage supplémentaire est obligatoire.

La gestion de la partition s'effectue automatiquement à l'arrière-plan et est transparente pour vos applications. Votre table reste disponible tout au long et prend entièrement en charge vos besoins de débit alloué.

Pour en savoir plus, consultez Création de clés de partition.

Des index secondaires globaux dans DynamoDB sont également composés de partitions. Les données d'un index secondaire global sont stockées séparément des données de sa table de base, mais les partitions d'index se comportent de la même manière que les partitions de table.

Distribution de données : clé de partition

Si votre table possède une clé primaire simple (clé de partition uniquement), DynamoDB stocke et récupère chaque élément en fonction de sa valeur de clé de partition.

Pour écrire un élément dans la table, DynamoDB utilise la valeur de la clé de partition comme entrée pour une fonction de hachage interne. La valeur de sortie de la fonction de hachage détermine la partition dans laquelle l'élément sera stocké.

Pour lire un élément de la table, vous devez spécifier sa valeur de clé de partition. DynamoDB utilise cette valeur comme entrée pour sa fonction de hachage, donnant la partition dans laquelle se trouve l'élément.

Le schéma suivant montre une table nommée Animaux de compagnie, qui s'étend sur plusieurs partitions. La clé primaire de la table est AnimalType(seul cet attribut clé est affiché). DynamoDB utilise sa fonction de hachage pour déterminer où stocker un nouvel élément, en l'occurrence, en fonction de la valeur de hachage de la chaîne Dog. Notez que les éléments ne sont pas stockés selon un ordre trié. L'emplacement de chaque élément est déterminé par la valeur de hachage de sa clé de partition.

Note

DynamoDB est optimisé pour une distribution uniforme des éléments entre les partitions d'une table, quel que soit le nombre de partitions. Nous vous conseillons de choisir une clé de partition qui peut avoir un grand nombre de valeurs distinctes par rapport au nombre d'éléments de la table.

Distribution de données : clé de partition et clé de tri

Si la table possède une clé primaire composite (clé de partition et clé de tri), DynamoDB calcule la valeur de hachage de la clé de partition de la manière décrite dans Distribution de données : clé de partition. Cependant, il a tendance à conserver les éléments ayant la même valeur de clé de partition proches les uns des autres et triés en fonction de la valeur de l'attribut de clé de tri. L'ensemble des éléments qui ont la même valeur de clé de partition est appelé collection d'éléments. Les collections d'articles sont optimisées pour une récupération efficace des gammes d'articles de la collection. Si votre table ne possède pas d'index secondaires locaux, DynamoDB répartira automatiquement votre collection d'éléments sur autant de partitions que nécessaire pour stocker les données et optimiser le débit de lecture et d'écriture.

Pour écrire un élément dans la table, DynamoDB calcule la valeur de hachage de la clé de partition pour déterminer quelle partition doit contenir l'élément. Dans cette partition, plusieurs éléments peuvent avoir la même valeur de clé de partition. Ainsi, DynamoDB stocke l'élément parmi les autres éléments possédant la même clé de partition, dans l'ordre croissant de la clé de tri.

Pour lire un élément dans la table, vous devez spécifier les valeurs de ses clés de partition et de tri. DynamoDB calcule la valeur de hachage de la clé de partition, donnant la partition dans laquelle se trouve l'élément.

Vous pouvez lire plusieurs éléments de la table en une seule opération (Query) si les éléments souhaités ont la même valeur de clé de partition. DynamoDB renvoie tous les éléments ayant cette valeur de clé de partition. Le cas échéant, vous pouvez appliquer une condition à la clé de tri afin qu'elle retourne uniquement les éléments d'une plage de valeurs donnée.

Supposons que la table Pets possède une clé primaire composite composée de AnimalType(clé de partition) et de nom (clé de tri). Le diagramme suivant montre DynamoDB écrivant un élément avec une valeur de clé de partition Dog et une valeur de clé de tri Fido.

Pour lire cet élément dans la table Pets, DynamoDB calcule la valeur de hachage de Dog, donnant la partition dans laquelle ces éléments sont stockés. DynamoDB analyse ensuite les valeurs d'attribut de clé de tri jusqu'à trouver Fido.

Pour lire tous les éléments marqués AnimalTyped'un Dog, vous pouvez effectuer une Query opération sans spécifier de condition de clé de tri. Par défaut, les éléments sont retournés dans l'ordre où ils sont stockés (c'est-à-dire, en ordre croissant par clé de tri). Le cas échéant, vous pouvez demander à la place l'ordre décroissant.

Pour interroger uniquement certains éléments Chien, vous pouvez appliquer une condition à la clé de tri (par exemple, seuls les éléments ChienNom commence par une lettre située dans la plage A à K).

Note

Dans une table DynamoDB, il n'existe pas de limite supérieure au nombre de valeurs de clé de tri distinctes par valeur de clé de partition. Si vous avez besoin de stocker plusieurs milliards d'éléments Dog dans la table Pets, DynamoDB alloue automatiquement un stockage suffisant pour gérer cette exigence.