Strumienie DynamoDB i tabele globalne
Będą przetwarzać zmiany elementów w czasie rzeczywistym za pomocą Streams i replikować dane między Regionami przy użyciu tabel globalnych, zapewniając odczyty o niskich opóźnieniach na całym świecie.
Strumienie DynamoDB i tabele globalne to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
DynamoDB Streams: przechwytywanie zmian danych
DynamoDB Streams przechwytuje uporządkowaną w czasie sekwencję modyfikacji elementów w tabeli DynamoDB. Za każdym razem, gdy element jest tworzony, aktualizowany lub usuwany, DynamoDB zapisuje rekord strumienia opisujący tę zmianę. Rekordy strumienia są dostępne przez 24 godziny od momentu zapisu.
Streams stanowią podstawę architektur sterowanych zdarzeniami z użyciem DynamoDB. Typowe zastosowania obejmują uruchamianie funkcji Lambda do przetwarzania w czasie rzeczywistym, prowadzenie dziennika audytowego, replikowanie danych do innego magazynu lub unieważnianie pamięci podręcznej po zmianie danych.
# Enable a DynamoDB Stream on an existing table
aws dynamodb update-table \
--table-name Orders \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGESTypy widoku strumienia
Podczas włączania strumienia należy wybrać StreamViewType, który określa, jakie dane zawiera każdy rekord strumienia:
- KEYS_ONLY: tylko atrybuty klucza głównego zmodyfikowanego elementu
- NEW_IMAGE: cały element w postaci po zmianie
- OLD_IMAGE: cały element w postaci sprzed zmiany
- NEW_AND_OLD_IMAGES: zarówno stan elementu sprzed zmiany, jak i po niej
W przypadku audytu należy wybrać NEW_AND_OLD_IMAGES, aby widzieć, co się zmieniło; w przypadku replikacji lub aktualizacji pamięci podręcznej — NEW_IMAGE; a KEYS_ONLY, gdy wystarczy wiedzieć, który element się zmienił, i pobrać jego bieżący stan osobno.
Przetwarzanie strumieni za pomocą Lambda
Najczęstszym sposobem korzystania z DynamoDB Stream jest użycie AWS Lambda. Lambda odczytuje strumień i wywołuje Państwa funkcję z partią rekordów strumienia. Lambda automatycznie obsługuje odpytywanie, zapisywanie punktów kontrolnych i ponawianie prób.
Najważniejsze parametry konfiguracji: batch size (liczba rekordów na wywołanie, maksymalnie 10 000), bisect on error (podział nieudanej partii w celu odizolowania błędnego rekordu) oraz destination on failure (SQS lub SNS dla rekordów, których nie można przetworzyć). Lambda odczytuje dane z każdego fragmentu równolegle, dlatego stopień równoległości jest równy liczbie fragmentów w strumieniu.
# 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-errorPrzypadki użycia strumieni
Praktyczne przypadki użycia DynamoDB Streams na egzaminie SAA-C03:
- Replikacja między regionami: Lambda odczytuje strumień i zapisuje zmiany w tabeli w innym regionie (przed wprowadzeniem Global Tables był to standardowy wzorzec)
- Unieważnianie ElastiCache: gdy element DynamoDB się zmienia, Lambda unieważnia lub aktualizuje odpowiadający mu klucz pamięci podręcznej
- Synchronizacja indeksu wyszukiwania: przekazywanie zmian elementów do OpenSearch Service w celu umożliwienia wyszukiwania pełnotekstowego danych DynamoDB
- Rejestrowanie audytowe: zapisywanie każdej zmiany w S3 lub magazynie zgodności z wymaganiami w celach regulacyjnych
- Mikrousługi sterowane zdarzeniami: uruchamianie usług zależnych, gdy zmienią się określone elementy
DynamoDB Global Tables: co to jest i do czego służy
DynamoDB Global Tables zapewniają w pełni zarządzaną, wieloregionową replikację multi-active. Każdy region otrzymuje pełną kopię tabeli, a wszystkie kopie mogą jednocześnie obsługiwać zapisy. Zapisy w dowolnym regionie są asynchronicznie replikowane do wszystkich pozostałych regionów w ciągu około 1 sekundy.
Global Tables umożliwiają realizację dwóch kluczowych scenariuszy: odczyty i zapisy z niskimi opóźnieniami dla użytkowników rozproszonych globalnie (każdy użytkownik zapisuje i odczytuje dane z najbliższego regionu) oraz aktywne-aktywne odzyskiwanie po awarii w wielu regionach (aplikacja działa nadal w każdym ocalałym regionie, bez utraty danych zapisanych po ostatniej replikacji).
Tworzenie Global Tables
Aby utworzyć Global Table, należy najpierw utworzyć tabelę z włączonym DynamoDB Streams (NEW_AND_OLD_IMAGES jest wymagane wewnętrznie przez Global Tables). Następnie należy dodać regiony replik. AWS utworzy tabelę repliki w każdym dodanym regionie i rozpocznie dwukierunkową synchronizację danych.
Global Tables (Version 2019.11.21) to obecny standard. Obsługują pojemność On-Demand lub Provisioned z Auto Scaling. Replika w każdym regionie musi mieć tę samą nazwę tabeli. Regiony można dodawać do Global Table i usuwać z niej w dowolnym momencie.
# 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-1Rozwiązywanie konfliktów w Global Tables
Ponieważ Global Tables umożliwiają jednoczesne zapisy w wielu regionach, mogą wystąpić konflikty zapisów, jeśli dwa regiony zaktualizują ten sam element niemal w tym samym czasie. DynamoDB rozwiązuje konflikty za pomocą podejścia last-writer-wins, opartego na znacznikach czasu przechowywanych w rekordach strumienia.
W praktyce oznacza to, że dwie niemal jednoczesne sprzeczne aktualizacje zakończą się zaakceptowaniem jednej z nich i nadpisaniem drugiej. Aplikacje należy projektować tak, aby unikać jednoczesnych zapisów tego samego elementu z różnych regionów. W przypadkach, w których konflikty występują często, należy rozważyć kierowanie wszystkich zapisów dotyczących konkretnego użytkownika lub encji do jednego regionu macierzystego.
Global Tables a kwestie pojemności
W przypadku Global Tables zapisy w jednym regionie są automatycznie replikowane do wszystkich pozostałych regionów. Każdy replikowany zapis zużywa WCU w regionach docelowych — jeśli mają Państwo 3 regiony, pojedynczy zapis kosztuje łącznie około 3× WCU. Należy odpowiednio zaplanować pojemność.
Odczyty w każdym regionie zużywają RCU lokalnej repliki. Odczyty eventual consistency (domyślne) korzystają z danych lokalnych, natomiast strongly consistent odczyty nie są obsługiwane między regionami. W przypadku większości aplikacji globalnych eventual consistency z opóźnieniem między regionami wynoszącym około 1 sekundy jest wystarczająca.
Global Tables a repliki odczytu między regionami (RDS)
Kluczowe rozróżnienie na egzaminie SAA-C03: DynamoDB Global Tables działają w trybie multi-active (wszystkie regiony akceptują odczyty ORAZ zapisy), podczas gdy repliki odczytu RDS między regionami są tylko do odczytu (replikę można jedynie promować, aby umożliwić jej zapisy, co przerywa replikację).
Global Tables należy użyć, gdy potrzebne są: zapisy multi-active w wielu regionach, globalny dostęp z opóźnieniem poniżej 100 ms lub odzyskiwanie po awarii w wielu regionach dla danych NoSQL bez utraty danych (RPO równy zero). Repliki RDS między regionami należy wybrać, gdy potrzebne są: globalne skalowanie odczytów relacyjnej bazy danych lub gotowa replika zapasowa, którą można promować podczas przełączania awaryjnego.
Wzorce architektury Streams + Lambda
Typowe wzorce architektury łączące Streams i Lambda:
- Fan-out: Lambda odczytuje strumień i publikuje dane w SNS, które przekazuje je do wielu kolejek SQS dla niezależnych odbiorców
- Agregacja: Lambda gromadzi zmiany i aktualizuje zagregowane wartości w osobnej tabeli DynamoDB (np. dzienną liczbę zamówień)
- Pamięć podręczna write-behind: przy każdym zdarzeniu strumienia Lambda aktualizuje ElastiCache, aby odczyty mogły być obsługiwane z pamięci podręcznej
- Powiadomienia: strumień uruchamia Lambdę, która wysyła wiadomość e-mail za pośrednictwem SES lub powiadomienie push SNS po zmianie określonego warunku
Integracja DynamoDB Kinesis Data Streams
Jako alternatywę dla DynamoDB Streams można kierować zmiany na poziomie elementów do usługi Amazon Kinesis Data Stream. Jest to przydatne, gdy potrzebują Państwo dłuższego przechowywania danych (do 1 roku w porównaniu z 24 godzinami w natywnej usłudze DynamoDB Streams), większej liczby konsumentów lub integracji z usługami odczytującymi dane z Kinesis.
Integrację z Kinesis Data Streams włącza się dla poszczególnych tabel i nie zastępuje ona DynamoDB Streams — obie funkcje mogą być włączone jednocześnie. Jest to nowsza funkcja (z 2021 roku), która rozszerza potok zdarzeń zmian w DynamoDB bez konieczności implementowania własnej logiki replikacji.
# 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-changesSzybkie sprawdzenie
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo następujące zagadnienia: DynamoDB Streams przechwytuje zmiany na poziomie elementów przez 24 godziny i integruje się z Lambda na potrzeby przetwarzania sterowanego zdarzeniami, Global Tables zapewniają replikację multi-active w wielu regionach z rozwiązywaniem konfliktów według zasady „wygrywa ostatni zapis”, a integracja z Kinesis Data Streams wydłuża okres przechowywania poza 24-godzinne okno strumienia. W następnej części omówimy strefy hostowane Route 53 i typy rekordów DNS.
Często zadawane pytania
Czy lekcja „Strumienie DynamoDB i tabele globalne” jest bezpłatna?
Tak — pełny tekst „Strumienie DynamoDB i tabele globalne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Strumienie DynamoDB i tabele globalne”?
Będą przetwarzać zmiany elementów w czasie rzeczywistym za pomocą Streams i replikować dane między Regionami przy użyciu tabel globalnych, zapewniając odczyty o niskich opóźnieniach na całym świecie. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Strumienie DynamoDB i tabele globalne”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tabele, elementy i klucze główne
- Pojemność aprowizowana a tryb On-Demand
- Globalne i lokalne indeksy pomocnicze
- Strumienie DynamoDB i tabele globalne