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
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
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
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
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)
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
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
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
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)
Laten we oefenen!
Dataopslagdiensten gebruiken in AWS
Preparing Video For Download...