Index, flux et optimisation DynamoDB

Utiliser les magasins de données dans AWS

Dunieski Otano

AWS Solutions Architect

La requête impossible

  • Table : userId (clé de partition), orderDate (clé de tri)
  • Besoin : Trouver les commandes par e-mail
  • Problème : Impossible d'interroger des attributs non clés
  • Solution : Global Secondary Index
    • Les index permettent plusieurs schémas d'accès

gsi

Utiliser les magasins de données dans AWS

Global Secondary Index (GSI)

  • Clé de partition différente de la table de base
  • Peut être ajouté après création de la table
  • Lectures à cohérence éventuelle uniquement
  • Cas d'usage : Interroger des attributs non primaires

gsi_1

Utiliser les 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 : Ordres de tri alternatifs dans la partition

lsi

Utiliser les magasins de données dans AWS

GSI vs LSI : quand utiliser chacun

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

gsi_ou_lsi

Utiliser les 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)

sérialisation

Utiliser les magasins de données dans AWS

DynamoDB Streams pour la capture de changements

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

flux

Utiliser les magasins de données dans AWS

Time-to-Live pour l'expiration automatique

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

ttl

Utiliser les magasins de données dans AWS

Types de projection d'index et performance

  • KEYS_ONLY : Uniquement les clés, taille minimale
  • INCLUDE : Clés + attributs spécifiés
  • ALL : Tous les attributs, taille max, pas de fetchs
  • Arbitrage : Coût de stockage vs performance de requête

index

Utiliser les 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é (batch) ou cohérence (transactions)

batch

Utiliser les magasins de données dans AWS

Passons à la pratique !

Utiliser les magasins de données dans AWS

Preparing Video For Download...