DynamoDB-indexen, streams en optimalisatie

Dataopslagdiensten gebruiken in AWS

Dunieski Otano

AWS Solutions Architect

De query die niet kon

  • Tabel: userId (partition key), orderDate (sort key)
  • Nodig: Bestellingen zoeken op e-mailadres
  • Probleem: Kun je niet query'en op niet-sleutelattributen
  • Oplossing: Global Secondary Index
    • Indexen bieden meerdere toegangspatronen

gsi

Dataopslagdiensten gebruiken in AWS

Global Secondary Index (GSI)

  • Andere partition key dan basistabel
  • Kan altijd na het maken van de tabel worden toegevoegd
  • Alleen eventual consistent reads
  • Use case: Query'en op niet-primaire attributen

gsi_1

Dataopslagdiensten gebruiken in AWS

Local Secondary Index (LSI)

  • Zelfde partition key, andere sort key
  • Moet bij het aanmaken van de tabel worden gemaakt
  • Ondersteunt sterk consistente reads
  • Use case: Alternatieve sorteervolgorde binnen partitie

lsi

Dataopslagdiensten gebruiken in AWS

GSI vs LSI - wanneer gebruik je welke

  • GSI: Andere partition key, altijd toe te voegen, eventual consistency
  • LSI: Zelfde partition key, bij tabelcreatie maken, sterke consistentie
  • Meest gebruikt: GSI voor flexibele toegangspatronen

gsi_of_lsi

Dataopslagdiensten gebruiken in AWS

Dataserialisatie voor DynamoDB

  • Probleem: DynamoDB slaat geen Python-objecten op
  • Oplossing: Serialiseer naar JSON of binair
  • JSON: Simpele data (dicts, lists) - json.dumps()
  • Base64: Binaire data (afbeeldingen, tokens)

serialisatie

Dataopslagdiensten gebruiken in AWS

DynamoDB Streams voor change data capture

  • Streams: Geordend logboek van alle tabelwijzigingen
  • Legt vast: inserts, updates, deletes
  • Use cases: Auditlogs, replicatie, triggers
  • Verwerk met Lambda voor realtime reacties

streams

Dataopslagdiensten gebruiken in AWS

Time-to-Live voor automatische vervaldatum

  • TTL: Automatisch items verwijderen na verloop
  • Zet Unix-timestamp in het TTL-attribuut
  • Ideaal voor: Sessies, tijdelijke tokens, cache
  • Geen kosten voor TTL-deletes

ttl

Dataopslagdiensten gebruiken in AWS

Indexprojecties en query-prestaties

  • KEYS_ONLY: Alleen sleutels, kleinste omvang
  • INCLUDE: Sleutels + opgegeven attributen
  • ALL: Alle attributen, grootste omvang, geen fetches nodig
  • Afweging: Opslagkosten vs. query-prestaties

index

Dataopslagdiensten gebruiken in AWS

Batchbewerkingen en transacties

  • BatchGetItem: Lees tot 100 items, max 16 MB
  • BatchWriteItem: Schrijf tot 25 items
  • TransactWriteItems: ACID over max 100 items
  • Gebruik voor: Efficiëntie (batch) of consistentie (transacties)

batch

Dataopslagdiensten gebruiken in AWS

Laten we oefenen!

Dataopslagdiensten gebruiken in AWS

Preparing Video For Download...