AWS Solutions Architect · Oppitunti

DynamoDB Streams ja Global Tables

Käsittelette alkiotason muutoksia reaaliajassa Streamsin avulla ja replikoitte tietoja Region-alueiden välillä Global Tables -taulujen avulla maailmanlaajuisten lukujen viiveen pienentämiseksi.

Oppitunti 4/413 vaihetta

DynamoDB Streams ja Global Tables on ilmainen AWS Solutions Architect-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu AWS Solutions Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.

DynamoDB Streams: muutosten sieppaus

DynamoDB Streams tallentaa aikajärjestyksessä olevan sarjan DynamoDB-taulun item-tason muutoksia. Aina kun item luodaan, sitä päivitetään tai se poistetaan, DynamoDB kirjoittaa muutosta kuvaavan stream-tietueen. Stream-tietueet ovat käytettävissä 24 tuntia niiden kirjoittamisen jälkeen.

Streams on DynamoDB:n tapahtumaohjautuvien arkkitehtuurien perusta. Yleisiä käyttötapoja ovat Lambda-funktioiden käynnistäminen reaaliaikaista käsittelyä varten, auditointilokin ylläpito, tietojen replikointi toiseen säilöön sekä välimuistin mitätöinti tietojen muuttuessa.

# Enable a DynamoDB Stream on an existing table
aws dynamodb update-table \
  --table-name Orders \
  --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES

Stream-näkymätyypit

Kun otatte streamin käyttöön, valitsette StreamViewType-tyypin, joka määrittää, mitä tietoja kukin stream-tietue sisältää:

  • KEYS_ONLY: vain muutetun itemin primary key -attribuutit
  • NEW_IMAGE: koko item sellaisena kuin se on muutoksen jälkeen
  • OLD_IMAGE: koko item sellaisena kuin se oli ennen muutosta
  • NEW_AND_OLD_IMAGES: itemin tila sekä ennen muutosta että sen jälkeen

Valitkaa NEW_AND_OLD_IMAGES auditointia varten, jotta näette, mitä muuttui, NEW_IMAGE replikointia tai välimuistin päivityksiä varten ja KEYS_ONLY, kun tarvitsette vain tiedon muuttuneesta itemistä ja haette sen nykyisen tilan erikseen.

Streamien käsittely Lambdalla

Yleisin tapa käyttää DynamoDB Streamia on AWS Lambda. Lambda lukee streamia ja kutsuu funktiotanne stream-tietueiden erissä. Lambda huolehtii automaattisesti lukemisesta, tarkistuspisteiden tallentamisesta ja uudelleenyrityksistä.

Keskeiset määritysparametrit ovat batch size (tietueiden määrä kutsua kohden, enintään 10 000), bisect on error (epäonnistuneen erän jakaminen virheellisen tietueen eristämiseksi) ja destination on failure (SQS tai SNS käsittelemättömille tietueille). Lambda lukee jokaisesta shardista rinnakkain, joten rinnakkaisuus vastaa streamin shardien määrää.

# 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-error

Streamien käyttötapaukset

DynamoDB Streamsin käytännön käyttötapauksia SAA-C03-kokeessa:

  • Alueiden välinen replikointi: Lambda lukee streamia ja kirjoittaa muutokset toisella Region-alueella olevaan tauluun (ennen Global Tables -ominaisuutta tämä oli vakiintunut malli)
  • ElastiCache-välimuistin mitätöinti: kun DynamoDB-item muuttuu, Lambda mitätöi vastaavan välimuistiavaimen tai päivittää sen
  • Hakuindeksin synkronointi: itemien muutokset lähetetään OpenSearch Serviceen, jotta DynamoDB:n tiedoista voidaan tehdä kokotekstihakuja
  • Auditointilokien kirjaaminen: jokainen muutos kirjoitetaan S3:een tai vaatimustenmukaisuuden edellyttämään säilöön
  • Tapahtumaohjautuvat mikropalvelut: downstream-palvelut käynnistetään, kun tietyt itemit muuttuvat

DynamoDB Global Tables: mitä ne ovat ja miksi niitä käytetään

DynamoDB Global Tables tarjoaa täysin hallitun, usean Region-alueen ja usean aktiivisen kirjoitusalueen replikoinnin. Jokainen Region saa taulusta täyden kopion, ja kaikista kopioista voidaan kirjoittaa samanaikaisesti. Yhdellä Region-alueella tehdyt kirjoitukset replikoidaan asynkronisesti kaikille muille Region-alueille noin yhden sekunnin kuluessa.

Global Tables mahdollistaa kaksi keskeistä käyttötapausta: pienen viiveen lukemisen ja kirjoittamisen maailmanlaajuisesti hajautetuille käyttäjille (kukin käyttäjä kirjoittaa lähimpään Region-alueeseen ja lukee sieltä) sekä usean Region-alueen active-active-katastrofipalautuksen (sovellus jatkaa toimintaansa kaikilla eloonjääneillä Region-alueilla ilman tietojen menetystä viimeisen replikoinnin jälkeen).

Global Tables -taulujen luominen

Global Table -taulun luomiseksi luotte ensin taulun, jossa DynamoDB Streams on käytössä (NEW_AND_OLD_IMAGES vaaditaan Global Tables -ominaisuudessa sisäisesti). Sen jälkeen lisäätte replica-Region-alueet. AWS luo jokaiseen lisättyyn Region-alueeseen replica-taulun ja aloittaa tietojen kaksisuuntaisen synkronoinnin.

Global Tables (Version 2019.11.21) on nykyinen standardi, ja se tukee On-Demand- tai Provisioned-kapasiteettia Auto Scaling -ominaisuudella. Jokaisella Region-replicalla on oltava sama taulun nimi. Voitte lisätä Region-alueita Global Table -tauluun tai poistaa niitä siitä milloin tahansa.

# 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-1

Ristiriitojen ratkaiseminen Global Tables -tauluissa

Koska Global Tables sallii kirjoitukset useilla Region-alueilla samanaikaisesti, kirjoitusristiriitoja voi syntyä, jos kaksi Region-aluetta päivittää saman itemin lähes samaan aikaan. DynamoDB ratkaisee ristiriidat last-writer-wins-periaatteella stream-tietueisiin tallennettujen aikaleimojen perusteella.

Käytännössä tämä tarkoittaa, että kaksi lähes samanaikaista ristiriitaista päivitystä johtaa siihen, että toinen säilyy ja toinen korvataan. Sovellukset kannattaa suunnitella siten, että samaan itemiin ei tehdä samanaikaisia kirjoituksia eri Region-alueilta. Jos ristiriitoja esiintyy usein, harkitkaa tietyn käyttäjän tai entiteetin kaikkien kirjoitusten ohjaamista yhteen ensisijaiseen Region-alueeseen.

Global Tables ja kapasiteetin huomioiminen

Global Tables -tauluissa yhdellä Region-alueella tehdyt kirjoitukset replikoidaan automaattisesti kaikille muille Region-alueille. Jokainen replikoitu kirjoitus kuluttaa WCU-yksiköitä kohdealueilla – jos käytössä on kolme Region-aluetta, yksi kirjoitus maksaa kaikilla alueilla yhteensä noin 3× WCU:t. Suunnitelkaa kapasiteetti tämän mukaisesti.

Kunkin Region-alueen lukemiset kuluttavat paikallisen replican RCU-yksiköitä. Eventual consistency -lukemiset (oletus) käyttävät paikallisia tietoja, kun taas strong consistency -lukemista ei tueta Region-alueiden välillä. Useimmille maailmanlaajuisille sovelluksille Region-alueiden välinen noin yhden sekunnin eventual consistency on riittävä.

Global Tables ja alueiden väliset Read Replica -replicat (RDS)

Keskeinen SAA-C03-kokeen ero: DynamoDB Global Tables on multi-active (kaikki Region-alueet hyväksyvät sekä luku- että kirjoitusoperaatioita), kun taas RDS:n alueiden väliset Read Replica -replicat ovat read-only (replican voi vain ylentää kirjoitettavaksi, jolloin replikointi katkeaa).

Käyttäkää DynamoDB Global Tables -ominaisuutta, kun tarvitsette usean Region-alueen active-active-kirjoituksia, alle 100 millisekunnin käyttöviivettä maailmanlaajuisesti tai NoSQL-tietojen usean Region-alueen zero-RPO-katastrofipalautusta. Käyttäkää RDS:n alueiden välisiä replicoja, kun tarvitsette relaatiotietokannan maailmanlaajuista lukujen skaalausta tai lämpimän katastrofipalautuksen varapalvelua, jonka voitte ylentää vikatilanteessa.

Streams- ja Lambda-arkkitehtuurimallit

Yleisiä Streams- ja Lambda-palveluja yhdistäviä arkkitehtuurimalleja:

  • Fan-out: Lambda lukee streamia ja julkaisee tiedot SNS:ään, joka jakaa ne useisiin SQS-jonoihin erillisiä kuluttajia varten
  • Aggregointi: Lambda kerää muutoksia ja päivittää koostesummat erilliseen DynamoDB-tauluun (esimerkiksi päivittäisen tilausten määrän)
  • Write-behind-välimuisti: jokaisen stream-tapahtuman yhteydessä Lambda päivittää ElastiCachea, jotta lukemiset voidaan tarjota välimuistista
  • Ilmoitukset: stream käynnistää Lambdan, joka lähettää SES-sähköpostin tai SNS-push-ilmoituksen tietyn ehdon muuttuessa

DynamoDB Kinesis Data Streams -integraatio

DynamoDB Streams -palvelun vaihtoehtona voit ohjata kohdetason muutokset Amazon Kinesis Data Stream -virtaan. Tämä on hyödyllistä, kun tarvitset pidemmän säilytysajan (enintään 1 vuoden verrattuna natiivin DynamoDB Streams -palvelun 24 tuntiin), enemmän kuluttajia tai integraation Kinesis-palvelusta tietoja lukeviin palveluihin.

Kinesis Data Streams -integraatio otetaan käyttöön taulukohtaisesti, eikä se korvaa DynamoDB Streams -palvelua — molemmat voidaan ottaa käyttöön samanaikaisesti. Tämä vuonna 2021 julkaistu ominaisuus laajentaa DynamoDB:n muutos tapahtumien käsittelyketjua ilman mukautetun replikointilogiikan tarvetta.

# 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-changes

Pikatarkistus

Testaa, miten hyvin ymmärrät tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteet.

Oppitunnin yhteenveto

Tässä oppitunnissa opit, että DynamoDB Streams tallentaa kohdetason muutokset 24 tunnin ajan ja integroituu Lambdan kanssa tapahtumapohjaista käsittelyä varten, Global Tables tarjoaa aktiivisen monialueisen replikoinnin viimeksi kirjoitettu voittaa -ristiriidanratkaisulla ja Kinesis Data Streams -integraatio pidentää säilytysaikaa yli 24 tunnin stream-ikkunan. Seuraavaksi tutustumme Route 53:n isännöityihin vyöhykkeisiin ja DNS-tietuetyyppeihin.

Aloita maksutta

Opi AWS Solutions Architect tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”DynamoDB Streams ja Global Tables” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa AWS Solutions Architect-oppimispolun 3 oppituntia, myös oppitunnin “DynamoDB Streams ja Global Tables”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”DynamoDB Streams ja Global Tables”?

Käsittelette alkiotason muutoksia reaaliajassa Streamsin avulla ja replikoitte tietoja Region-alueiden välillä Global Tables -taulujen avulla maailmanlaajuisten lukujen viiveen pienentämiseksi. Harjoittelet AWS Solutions Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni AWS Solutions Architect-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin AWS Solutions Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”DynamoDB Streams ja Global Tables”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä AWS Solutions Architect-oppitunnilla?

Kyllä. Jokainen AWS Solutions Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Taulut, alkiot ja pääavaimet
  2. Varattu ja On-Demand-kapasiteetti
  3. Globaalit ja paikalliset toissijaiset indeksit
  4. DynamoDB Streams ja Global Tables
← Takaisin: AWS Solutions Architect