Index, flux et optimisation dans DynamoDB

Utiliser des magasins de données dans AWS

Dunieski Otano

AWS Solutions Architect

La requête impossible à exécuter

  • Table : userId (clé de partition), orderDate (clé de tri)
  • Besoin : trouver des commandes par adresse courriel
  • Problème : requêtes impossibles sur des attributs non clés
  • Solution : Global Secondary Index
    • Les index permettent plusieurs modes d'accès

gsi

Utiliser des magasins de données dans AWS

Global Secondary Index (GSI)

  • Clé de partition différente de la table de base
  • Peut être ajouté en tout temps après la création
  • Lectures à cohérence éventuelle seulement
  • Cas d'usage : requêtes sur des attributs non primaires

gsi_1

Utiliser des magasins de données dans AWS

Local Secondary Index (LSI)

  • Même clé de partition, clé de tri différente
  • Doit être créé lors de la création de la table
  • Prend en charge les lectures fortement cohérentes
  • Cas d'usage : autres ordres de tri dans la partition

lsi

Utiliser des magasins de données dans AWS

GSI vs LSI : quand utiliser chacun

  • GSI : Clé de partition différente, ajout en tout temps, cohérence éventuelle
  • LSI : Même clé de partition, création à la création de la table, forte cohérence
  • Le plus courant : GSI pour des modes d'accès flexibles

gsi_or_lsi

Utiliser des magasins de données dans AWS

Sérialisation des données pour DynamoDB

  • Problème : DynamoDB ne stocke pas les objets Python
  • Solution : sérialiser en JSON ou binaire
  • JSON : données simples (dict, listes) - json.dumps()
  • Base64 : données binaires (images, jetons)

serialization

Utiliser des magasins de données dans AWS

DynamoDB Streams pour la capture de données de changement

  • Streams : journal ordonné de tous les changements
  • Capture : insertions, mises à jour, suppressions
  • Cas d'usage : audit, réplication, déclencheurs
  • Traiter avec Lambda pour des réactions en temps réel

streams

Utiliser des magasins de données dans AWS

Time-to-Live pour l'expiration automatique

  • TTL : suppression automatique après expiration
  • Inscrire l'horodatage Unix dans l'attribut TTL
  • Idéal pour : sessions, jetons temporaires, cache
  • Aucuns frais pour les suppressions TTL

ttl

Utiliser des magasins de données dans AWS

Types de projection d'index et performance des requêtes

  • KEYS_ONLY : seules les clés, taille minimale
  • INCLUDE : clés + attributs précisés
  • ALL : tous les attributs, taille max, pas de récupérations
  • Compromis : coût de stockage vs performance des requêtes

index

Utiliser des magasins de données dans AWS

Opérations par lots et transactions

  • BatchGetItem : lire jusqu'à 100 éléments, 16 Mo max
  • BatchWriteItem : écrire jusqu'à 25 éléments
  • TransactWriteItems : ACID sur jusqu'à 100 éléments
  • À utiliser pour : efficacité (lot) ou cohérence (transactions)

batch

Utiliser des magasins de données dans AWS

Passons à la pratique !

Utiliser des magasins de données dans AWS

Preparing Video For Download...