Types de données et règles de dénomination pris en charge dans 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.

Types de données et règles de dénomination pris en charge dans Amazon DynamoDB

Cette section décrit les règles de dénomination dans Amazon DynamoDB, ainsi les différents types de données que DynamoDB prend en charge. Des limites s'appliquent aux types de données. Pour de plus amples informations, veuillez consulter Types de données.

Règles de dénomination

Les tables, attributs et autres objets dans DynamoDB doivent avoir des noms. Les noms doivent être éloquents et concis. Par exemple, des noms tels que Produits, Livres et Auteurs sont explicites.

Voici les règles de dénomination pour DynamoDB.

  • Tous les noms doivent être codés à l'aide d'UTF-8 et sont sensibles à la casse.

  • Les noms de table et les noms d'index doivent être compris entre 3 et 255 caractères, et peuvent contenir uniquement les caractères suivants :

    • a-z

    • A-Z

    • 0-9

    • _ (soulignement)

    • - (tiret)

    • . (point)

  • Un nom d'attribut doit compter au moins un caractère, mais sa taille doit être inférieure à 64 Ko. Une bonne pratique consiste à utiliser des noms d'attribut aussi courts que possible. Cela permet de réduire le nombre d'unités de demande de lecture consommées, car les noms d'attributs sont inclus dans la mesure du stockage et de l'utilisation de débit.

    Les éléments suivants sont les exceptions. Ces noms d'attribut ne doivent pas dépasser 255 caractères :

    • Noms de clés de partition d'index secondaire

    • Noms de clés de tri d'index secondaire

    • Noms d'attributs projetés spécifiés par l'utilisateur (applicables uniquement aux index secondaires locaux)

Mots réservés et caractères spéciaux

DynamoDB comprend une liste de mots réservés et de caractères spéciaux. Pour obtenir la liste complète, consultez Mots réservés dans DynamoDB. Les caractères suivants ont également une signification spéciale dans DynamoDB : # (dièse) et : (deux points).

Même si DynamoDB vous permet d'utiliser ces mots réservés et ces caractères spéciaux pour les noms, nous vous recommandons d'éviter de le faire, car vous devez définir les variables d'espace réservé chaque fois que vous utilisez ces noms dans une expression. Pour de plus amples informations, veuillez consulter Noms d'attributs d'expression dans DynamoDB.

Types de données

DynamoDB prend en charge différents types de données pour les attributs au sein d'une table. Ils peuvent être classés comme suit :

  • Types scalar (scalaire) – Un type scalar peut représenter exactement une valeur. Les types scalar sont les suivants : number, string, binary, Boolean et null.

  • Types document – Un type document peut représenter une structure complexe constituée d'attributs imbriqués, comme vous pouvez en trouver dans un document JSON. Les types document sont les suivants : list et map.

  • Types set (ensemble) – Un type set peut représenter plusieurs valeurs scalaires. Les types set sont les suivants : string set, number set et binary set.

Lorsque vous créez une table ou un index secondaire, vous devez spécifier les noms et les types de données de chaque attribut de clé primaire (clé de partition et clé de tri). En outre, chaque attribut de clé primaire doit être défini en tant que type string, number ou binary (chaîne, nombre ou binaire).

DynamoDB est une base de données NoSQL et est sans schéma. Cela signifie que, en dehors des attributs de clé primaire, vous n'avez pas besoin de définir d'attributs ou de types de données lorsque vous créez des tables. En comparaison, vous devez, pour les bases de données relationnelles, définir les noms et les types de données de chaque colonne lorsque vous créez une table.

Les descriptions suivantes concernent chaque type de données, ainsi que des exemples au format JSON.

Types scalar

Les types scalar sont les suivants : number, string, binary, Boolean et null.

Nombre

Les nombres peuvent être positifs, négatifs ou nuls. La précision maximum des nombres est de 38 chiffres. Tout dépassement entraîne une exception. Si vous avez besoin d'une précision supérieure à 38 chiffres, vous pouvez utiliser des chaînes.

  • Plage positive : 1E-130 à 9,9999999999999999999999999999999999999E+125

  • Plage négative : -9,9999999999999999999999999999999999999E+125 à -1E-130

Dans DynamoDB, les nombres sont représentés en tant que longueur variable. Les zéros de début et de fin sont tronqués.

Tous les nombres sont envoyés à DynamoDB via le réseau sous forme de chaînes afin d'optimiser la compatibilité entre les langages et les bibliothèques. Toutefois, DynamoDB les traite en tant qu'attributs de type number (nombre) pour les opérations mathématiques.

Vous pouvez utiliser le type de données number pour représenter une date ou un horodatage. Une façon de procéder consiste à utiliser l'heure epoch, à savoir le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC. Par exemple, l'heure Posix 1437136300 correspond au 17 juillet 2015, 12:31:40 UTC.

Pour plus d'informations, consultez la page http://fr.wikipedia.org/wiki/Heure_Unix.

Chaîne

Les chaînes sont Unicode avec codage binaire UTF-8. La longueur minimale d'une chaîne peut être zéro si l'attribut n'est pas utilisé comme clé pour un index ou une table, et est contrainte par la limite de taille d'élément de 400 Ko dans DynamoDB.

Les contraintes supplémentaires suivantes s'appliquent aux attributs de clé primaire définis comme type string (chaîne) :

  • Pour une clé primaire unique, la longueur maximale de la première valeur d'attribut (la clé de partition) est de 2 048 octets.

  • Pour une clé primaire composite, la longueur maximale de la deuxième valeur d'attribut (la clé de tri) est de 1 024 octets.

DynamoDB collationne et compare les chaînes à l'aide des octets de l'encodage de chaîne UTF-8 sous-jacent. Par exemple, « a » (0x61) est supérieur à « A » (0x41) et « ¿ » (0xC2BF) est supérieur à « z » (0x7A).

Vous pouvez utiliser le type de données string pour représenter une date ou un horodatage. Une solution pour cela consiste à utiliser les chaînes ISO 8601, comme illustré dans ces exemples :

  • 2016-02-15

  • 2015-12-21T17:42:34Z

  • 20150311T122706Z

Pour plus d'informations, consultez http://en.wikipedia.org/wiki/ISO_8601.

Note

Contrairement aux bases de données relationnelles classiques, DynamoDB ne prend pas en charge de manière native un type de données de date et d'heure. Il peut être utile de stocker les données et les données temporelles sous forme de type de données numériques, en utilisant le temps d'époque Unix.

Binaire

Les attributs de type binary peuvent stocker n'importe quelle donnée binaire, telle que texte compressé, données chiffrées ou images. Chaque fois que DynamoDB compare des valeurs binaires, il traite chaque octet de données binaires comme non signé.

La longueur d'un binary attribute peut être zéro si l'attribut n'est pas utilisé comme clé pour un index ou une table, et est contrainte par la limite de taille d'élément de 400 Ko dans DynamoDB.

Si vous définissez un attribut de clé primaire comme attribut de type binary (binaire), les contraintes supplémentaires suivantes s'appliquent :

  • Pour une clé primaire unique, la longueur maximale de la première valeur d'attribut (la clé de partition) est de 2 048 octets.

  • Pour une clé primaire composite, la longueur maximale de la deuxième valeur d'attribut (la clé de tri) est de 1 024 octets.

Vos applications doivent encoder les valeurs binaires dans un format encodé en base 64 avant de les envoyer à DynamoDB. À la réception de ces valeurs, DynamoDB les décode dans un tableau d'octets non signés, et utilise ces informations comme longueur du binary attribute.

L'exemple suivant est un binary attribute, utilisant un texte codé en base64.

dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk

Booléen

Un attribut de type Boolean peut stocker true ou false.

Null

Null représente un attribut avec un état inconnu ou non défini.

Types document

Les types document sont les suivants : list et map. Ces types de données peuvent être imbriqués les uns dans les autres pour représenter des structures de données complexes jusqu'à 32 niveaux de profondeur.

Il n'existe aucune limite au nombre de valeurs dans un élément de type list (liste) ou map (mappage), pour autant que la taille de l'élément ne dépasse pas la limite de taille d'élément en vigueur dans DynamoDB (400 Ko).

Une valeur d'attribut peut être une chaîne vide ou une valeur binaire vide si l'attribut n'est pas utilisé pour une clé de table ou d'index. Une valeur d'attribut ne peut pas être un jeu vide (jeu de chaînes, jeu de chiffres ou jeu binaire). Cependant, les listes et les cartes vides sont autorisées. Les valeurs binaires et de chaînes vides sont autorisées dans les listes et les cartes. Pour de plus amples informations, veuillez consulter Attributs.

Liste

Un attribut de type list peut stocker une collection ordonnée de valeurs. Les types list sont entourés de crochets :[ ... ]

Une liste est similaire à un tableau JSON. Il n'y a aucune restriction sur les types de données qui peuvent être stockés dans un élément de type list et les éléments d'un élément de type list n'ont pas à être du même type.

L'exemple suivant montre une liste contenant deux chaînes et un nombre.

FavoriteThings: ["Cookies", "Coffee", 3.14159]
Note

DynamoDB vous permet d'utiliser des éléments individuels dans des listes, même si ces éléments sont profondément imbriqués. Pour de plus amples informations, veuillez consulter Utilisation d'expressions dans DynamoDB.

Map

Un attribut de type map peut stocker une collection non ordonnée de paires nom-valeur. Les types map sont placés entre accolades : { ... }

Un type map est similaire à un objet JSON. Il n'y a aucune restriction sur les types de données qui peuvent être stockés dans un élément de type map et les éléments d'un élément de type map n'ont pas à être du même type.

Les éléments de type map sont idéaux pour stocker des documents JSON dans DynamoDB. L'exemple suivant montre un élément de type map qui contient une chaîne, un nombre et une liste imbriquée contenant un autre élément de type map.

{ Day: "Monday", UnreadEmails: 42, ItemsOnMyDesk: [ "Coffee Cup", "Telephone", { Pens: { Quantity : 3}, Pencils: { Quantity : 2}, Erasers: { Quantity : 1} } ] }
Note

DynamoDB vous permet d'utiliser des éléments individuels dans des mappages, même si ces éléments sont profondément imbriqués. Pour de plus amples informations, veuillez consulter Utilisation d'expressions dans DynamoDB.

Sets

DynamoDB prend en charge des types représentant des ensembles de valeurs de type string (chaîne), number (nombre) ou binary (binaire). Tous les éléments au sein d'un ensemble doivent être du même type. Par exemple, un Number Set peut contenir uniquement des nombres, et un String Set peut contenir uniquement des chaînes.

Il n'existe aucune limite au nombre de valeurs dans un élément de type set (ensemble), pour autant que la taille de l'élément ne dépasse pas la limite de taille d'élément en vigueur dans DynamoDB (400 Ko).

Chaque valeur au sein d'un ensemble doit être unique. L'ordre des valeurs d'un ensemble n'est pas conservé. Par conséquent, vos applications ne doivent pas reposer sur un ordre particulier des éléments au sein de l'ensemble. DynamoDB ne prend pas en charge les ensembles vides. Cependant, des valeurs de type string (chaîne) et binary (binaire) vides sont autorisées dans un ensemble.

L'exemple suivant illustre un ensemble de chaînes, un ensemble de nombres et un ensemble de données binaires :

["Black", "Green", "Red"] [42.2, -19, 7.5, 3.14] ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]

Descripteurs de type de données

Le protocole d'API DynamoDB de bas niveau utilise des descripteurs de type de données comme jetons qui indiquent à DynamoDB comment interpréter chaque attribut.

La liste suivante est la liste complète des descripteurs de type de données DynamoDB :

  • S – String (chaîne)

  • N – Number (nombre)

  • B – Binary (binaire)

  • BOOL – Boolean (booléen)

  • NULL – Null

  • M – Map (mappage)

  • L – List (liste)

  • SS – String Set (ensemble de chaînes)

  • NS – Number Set (ensemble de nombres)

  • BS – Binary Set (ensemble de binaires)