DynamoDB Streams och globala tabeller
Bearbeta ändringar på objektnivå i realtid med Streams och replikera data mellan regioner med globala tabeller för läsningar med låg fördröjning världen över.
DynamoDB Streams och globala tabeller är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
DynamoDB Streams: insamling av dataändringar
DynamoDB Streams samlar en tidsordnad sekvens av ändringar på objektnivå i en DynamoDB-tabell. Varje gång ett objekt skapas, uppdateras eller tas bort skriver DynamoDB en post i streamen som beskriver ändringen. Streamposter är tillgängliga i 24 timmar efter att de har skrivits.
Streams är grunden för händelsestyrda arkitekturer med DynamoDB. Vanliga användningsområden är att utlösa Lambda-funktioner för realtidsbearbetning, underhålla en granskningslogg, replikera data till en annan lagringsplats eller ogiltigförklara en cache när data ändras.
# Enable a DynamoDB Stream on an existing table
aws dynamodb update-table \
--table-name Orders \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGESTyper av stream-vyer
När du aktiverar en stream väljer du en StreamViewType som avgör vilka data varje streampost innehåller:
- KEYS_ONLY: endast primärnyckelattributen för det ändrade objektet
- NEW_IMAGE: hela objektet så som det ser ut efter ändringen
- OLD_IMAGE: hela objektet så som det såg ut före ändringen
- NEW_AND_OLD_IMAGES: både objektets tillstånd före och efter ändringen
Välj NEW_AND_OLD_IMAGES för granskning (för att se vad som ändrades), NEW_IMAGE för replikering eller cacheuppdateringar och KEYS_ONLY när du bara behöver veta vilket objekt som ändrades och hämtar det aktuella tillståndet separat.
Bearbeta Streams med Lambda
Det vanligaste sättet att konsumera en DynamoDB Stream är med AWS Lambda. Lambda läser av streamen och anropar din funktion med en batch streamposter. Lambda hanterar automatiskt avläsning, checkpoint-hantering och nya försök.
Viktiga konfigurationsparametrar är batchstorlek (antal poster per anrop, upp till 10 000), bisect on error (delar en misslyckad batch för att isolera den felaktiga posten) och destination on failure (SQS eller SNS för poster som inte kan bearbetas). Lambda läser från varje shard parallellt, så parallelliteten motsvarar antalet shards i streamen.
# Add Lambda as a stream trigger via CLI
aws lambda create-event-source-mapping \
--function-name process-orders-stream \
--event-source-arn arn:aws:dynamodb:us-east-1:123456789:table/Orders/stream/2026-06-20T00:00:00.000 \
--starting-position LATEST \
--batch-size 100 \
--bisect-batch-on-function-errorAnvändningsområden för Streams
Praktiska användningsområden för DynamoDB Streams på SAA-C03-examen:
- Replikering mellan regioner: Lambda läser streamen och skriver ändringarna till en tabell i en annan Region (innan Global Tables fanns var detta standardmönstret)
- Ogiltigförklaring av ElastiCache: när ett DynamoDB-objekt ändras ogiltigförklarar eller uppdaterar Lambda motsvarande cache-nyckel
- Synkronisering av sökindex: skicka objektändringar till OpenSearch Service för att aktivera fulltextsökning i DynamoDB-data
- Granskningsloggning: skriv varje ändring till S3 eller ett lager för regelefterlevnad
- Händelsestyrda mikrotjänster: utlös nedströms tjänster när specifika objekt ändras
DynamoDB Global Tables: vad och varför
DynamoDB Global Tables tillhandahåller fullt hanterad replikering i flera regioner med aktiv-aktiv-drift. Varje Region får en fullständig kopia av tabellen, och alla kopior kan ta emot skrivningar samtidigt. Skrivningar i valfri Region replikeras asynkront till alla andra Regioner inom ungefär 1 sekund.
Global Tables möjliggör två viktiga scenarier: läsningar och skrivningar med låg latens för användare över hela världen (varje användare skriver till och läser från närmaste Region) samt aktiv-aktiv-katastrofåterställning i flera regioner (programmet fortsätter att köras i valfri överlevande Region utan dataförlust utöver den senaste replikeringen).
Skapa Global Tables
För att skapa en Global Table skapar du först en tabell med DynamoDB Streams aktiverat (NEW_AND_OLD_IMAGES krävs internt för Global Tables). Därefter lägger du till replikregioner. AWS skapar en replikatabell i varje tillagd Region och börjar synkronisera data i båda riktningarna.
Global Tables (Version 2019.11.21) är den aktuella standarden och stöder On-Demand eller Provisioned capacity med Auto Scaling. Varje regionsreplik måste ha samma tabellnamn. Du kan lägga till eller ta bort Regioner från en Global Table när som helst.
# Create a global table replica in eu-west-1
aws dynamodb create-global-table \
--global-table-name GlobalOrders \
--replication-group RegionName=us-east-1 RegionName=eu-west-1Konfliktlösning i Global Tables
Eftersom Global Tables tillåter skrivningar i flera Regioner samtidigt kan skrivkonflikter uppstå om två Regioner uppdaterar samma objekt nästan samtidigt. DynamoDB löser konflikter med metoden last-writer-wins, baserat på tidsstämplar som lagras i streamposterna.
I praktiken innebär det att två nästan samtidiga motstridiga uppdateringar leder till att den ena vinner och den andra skrivs över. Program bör utformas så att samtidiga skrivningar till samma objekt från olika Regioner undviks. Om konflikter är vanliga bör du överväga att dirigera alla skrivningar för en viss användare eller entitet till en enda hemregion.
Global Tables och kapacitetsöverväganden
Med Global Tables replikeras skrivningar i en Region automatiskt till alla andra Regioner. Varje replikerad skrivning förbrukar WCU:er i målregionerna – om du har 3 Regioner kostar en enda skrivning ungefär 3× WCU:er i alla Regioner sammanlagt. Planera kapaciteten därefter.
Läsningar i varje Region förbrukar den lokala replikans RCU:er. Eventually consistent-läsningar (standardinställningen) använder lokala data, medan strongly consistent-läsningar inte stöds mellan Regioner. För de flesta globala program är eventual consistency med en fördröjning på cirka 1 sekund mellan Regioner acceptabelt.
Global Tables kontra läsreplikor mellan regioner (RDS)
En viktig skillnad inför SAA-C03-examen: DynamoDB Global Tables är multi-active (alla Regioner accepterar både läsningar OCH skrivningar), medan RDS Read Replicas mellan regioner är read-only (du kan endast befordra en replik så att den kan ta emot skrivningar, vilket bryter replikeringen).
Använd DynamoDB Global Tables när du behöver: aktiv-aktiv-skrivningar i flera regioner, åtkomst under 100 ms globalt eller DR i flera regioner med zero RPO för NoSQL-data. Använd RDS-replikor mellan regioner när du behöver: global lässkalning för en relationsdatabas eller en varm DR-standby som du kan befordra vid failover.
Arkitekturmönster med Streams och Lambda
Vanliga arkitekturmönster som kombinerar Streams och Lambda:
- Fan-out: Lambda läser streamen och publicerar till SNS, som distribuerar med fan-out till flera SQS-köer för oberoende konsumenter
- Aggregering: Lambda samlar ändringar och uppdaterar aggregerade totaler i en separat DynamoDB-tabell (till exempel det dagliga antalet order)
- Write-behind-cache: vid varje streamhändelse uppdaterar Lambda ElastiCache så att läsningar kan betjänas från cachen
- Avisering: streamen utlöser Lambda, som skickar ett SES-e-postmeddelande eller en SNS-pushavisering när ett specifikt villkor ändras
Integration med DynamoDB Kinesis Data Streams
Som ett alternativ till DynamoDB Streams kan ni styra ändringar på objektnivå till en Amazon Kinesis Data Stream. Detta är användbart när ni behöver längre lagring (upp till 1 år jämfört med 24 timmar för inbyggda DynamoDB Streams), fler konsumenter eller integration med tjänster som läser från Kinesis.
Integrering med Kinesis Data Streams aktiveras per tabell och ersätter inte DynamoDB Streams – ni kan ha båda aktiverade samtidigt. Detta är en nyare funktion (2021) som utökar pipelinen för ändringshändelser i DynamoDB utan att anpassad replikeringslogik krävs.
# Enable Kinesis Data Streams for a DynamoDB table
aws dynamodb enable-kinesis-streaming-destination \
--table-name Orders \
--stream-arn arn:aws:kinesis:us-east-1:123456789:stream/ddb-changesSnabbtest
Testa er förståelse av begreppen i AWS Solutions Architect (SAA-C03) från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har ni lärt er att DynamoDB Streams fångar ändringar på objektnivå i 24 timmar och integreras med Lambda för händelsestyrd bearbetning, att Global Tables tillhandahåller multiaktiv replikering mellan flera regioner med konflikthantering enligt principen att den senaste skrivningen vinner, samt att integrering med Kinesis Data Streams förlänger lagringstiden bortom strömfönstret på 24 timmar. Härnäst utforskar vi Route 53-hostade zoner och typer av DNS-poster.
Lär dig Cloud & IT Cert Prep med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 150
- Lektioner
- 600
Vanliga frågor
Är lektionen ”DynamoDB Streams och globala tabeller” gratis?
Ja – hela texten till ”DynamoDB Streams och globala tabeller” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Vad lär jag mig i ”DynamoDB Streams och globala tabeller”?
Bearbeta ändringar på objektnivå i realtid med Streams och replikera data mellan regioner med globala tabeller för läsningar med låg fördröjning världen över. Ni övar på Cloud & IT Cert Prep med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cloud & IT Cert Prep?
Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”DynamoDB Streams och globala tabeller”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cloud & IT Cert Prep-lektionen?
Ja. Varje Cloud & IT Cert Prep-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Tabeller, objekt och primärnycklar
- Provisionerad kapacitet jämfört med On-Demand
- Globala sekundära index och lokala sekundära index
- DynamoDB Streams och globala tabeller