DynamoDB: Indexe, Streams und Optimierung

Nutzung von Datenspeichern in AWS

Dunieski Otano

AWS Solutions Architect

Die unmögliche Abfrage

  • Tabelle: userId (Partition Key), orderDate (Sort Key)
  • Bedarf: Bestellungen per E-Mail-Adresse finden
  • Problem: Keine Abfragen auf Nicht-Schlüssel-Attributen
  • Lösung: Global Secondary Index
    • Indexe ermöglichen mehrere Zugriffsmuster

GSI

Nutzung von Datenspeichern in AWS

Global Secondary Index (GSI)

  • Anderer Partition Key als Basistabelle
  • Kann jederzeit nach Tabellenerstellung hinzugefügt werden
  • Nur eventually consistent Reads
  • Einsatz: Abfragen auf Nicht-Primärschlüssel-Attributen

GSI_1

Nutzung von Datenspeichern in AWS

Local Secondary Index (LSI)

  • Gleicher Partition Key, anderer Sort Key
  • Muss bei Tabellenerstellung angelegt werden
  • Unterstützt stark konsistente Reads
  • Einsatz: Alternative Sortierung innerhalb der Partition

LSI

Nutzung von Datenspeichern in AWS

GSI vs. LSI – wann welches nutzen

  • GSI: Anderer Partition Key, jederzeit hinzufügen, eventual consistency
  • LSI: Gleicher Partition Key, bei Erstellung anlegen, starke Konsistenz
  • Am häufigsten: GSI für flexible Zugriffsmuster

GSI oder LSI

Nutzung von Datenspeichern in AWS

Datenserialisierung für DynamoDB

  • Problem: DynamoDB speichert keine Python-Objekte
  • Lösung: In JSON oder Binärdaten serialisieren
  • JSON: Einfache Daten (dicts, Listen) – json.dumps()
  • Base64: Binärdaten (Bilder, Tokens)

Serialisierung

Nutzung von Datenspeichern in AWS

DynamoDB Streams für Change Data Capture

  • Streams: Geordnetes Protokoll aller Tabellenänderungen
  • Erfasst: Inserts, Updates, Deletes
  • Anwendungsfälle: Audit-Logs, Replikation, Trigger
  • Mit Lambda für Reaktionen in Echtzeit verarbeiten

Streams

Nutzung von Datenspeichern in AWS

Time-to-Live für automatische Ablaufsteuerung

  • TTL: Automatisches Löschen nach Ablauf
  • Unix-Zeitstempel im TTL-Attribut setzen
  • Ideal für: Sessions, temporäre Tokens, Cache
  • Keine Kosten für TTL-Löschungen

TTL

Nutzung von Datenspeichern in AWS

Index-Projektionstypen und Abfrageleistung

  • KEYS_ONLY: Nur Schlüsselattribute, kleinste Größe
  • INCLUDE: Schlüssel + angegebene Attribute
  • ALL: Alle Attribute, größte Größe, keine Nachladevorgänge
  • Trade-off: Speicherkosten vs. Abfrageleistung

Index

Nutzung von Datenspeichern in AWS

Batch-Operationen und Transaktionen

  • BatchGetItem: Bis zu 100 Items lesen, max. 16 MB
  • BatchWriteItem: Bis zu 25 Items schreiben
  • TransactWriteItems: ACID über bis zu 100 Items
  • Einsatz: Effizienz (Batch) oder Konsistenz (Transaktionen)

Batch

Nutzung von Datenspeichern in AWS

Lass uns üben!

Nutzung von Datenspeichern in AWS

Preparing Video For Download...