Definicja #
Amazon DynamoDB to zarządzana baza danych NoSQL dostępna jako usługa AWS, uruchomiona w 2012 roku. Inspirowana wewnętrznym systemem Dynamo opisanym w słynnym papers Amazon z 2007 roku, oferuje:
- Model danych — tabele z elementami (items); każdy item ma klucz partycji (partition key) i opcjonalny klucz sortowania (sort key). Atrybuty mogą być dowolnymi typami skalarnymi, dokumentami JSON i zbiorami.
- Automatyczne skalowanie — DynamoDB automatycznie skaluje przepustowość (read/write capacity units) lub działa w trybie on-demand bez konfiguracji.
- Globalnie rozproszona — Global Tables zapewniają replikację multi-region z aktywną replikacją active-active.
- DynamoDB Streams — strumień zmian danych (CDC) do integracji z Lambda, Kinesis i innymi serwisami.
- TTL (Time To Live) — automatyczne usuwanie wygasłych elementów bez dodatkowych kosztów.
- Transakcje — ACID transactions (TransactWriteItems, TransactGetItems) do operacji atomowych na wielu elementach.
DynamoDB wymaga starannego projektowania schematu (access patterns-first design) i dobrego doboru kluczy partycji dla uniknięcia hot partitions. Kluczowe jest zrozumienie Single Table Design.
Zastosowania #
- Backend sesji użytkowników w aplikacjach mobilnych — szybki odczyt profilu i preferencji.
- Katalog produktów e-commerce z możliwością wyszukiwania po wielu atrybutach (GSI).
- Leaderboardy i rankingi w grach online — sortowane struktury z kluczem sortowania.
- Przechowywanie metadanych plików i stanu zadań w architekturach serverless (Lambda + DynamoDB).
- Systemy IoT — ingesting dużych wolumenów danych z urządzeń w czasie rzeczywistym.
Ścieżka nauki #
DynamoDB wymaga przestawienia myślenia z relacyjnego na access-pattern-oriented design:
- Zacznij od AWS Free Tier — DynamoDB ma hojną warstwę bezpłatną (25 GB, 25 RCU/WCU).
- AWS dokumentacja i "Amazon DynamoDB Developer Guide" — szczegółowa i aktualna.
- Kurs "The DynamoDB Book" Alexa DeBrie — najlepsza praktyczna pozycja o Single Table Design.
- Naucz się projektowania kluczy: partition key, sort key, GSI (Global Secondary Index), LSI.
- AWS re:Invent talks na YouTube — Rick Houlihan's sessions o DynamoDB Advanced Patterns.
- Ćwicz z AWS SDK (Python boto3, JavaScript AWS SDK v3, .NET AWS SDK).
FAQ #
- Kiedy wybrać DynamoDB zamiast relacyjnej bazy danych?
- DynamoDB sprawdza się, gdy masz dobrze zdefiniowane wzorce dostępu (access patterns), potrzebujesz ekstremalnej skalowalności i niskich opóźnień, dane mają strukturę hierarchiczną (dokumenty), a schemat jest elastyczny. Relacyjna baza jest lepsza przy złożonych zapytaniach ad-hoc, JOIN-ach i silnych wymaganiach ACID.
- Co to jest Single Table Design?
- Single Table Design to wzorzec projektowania DynamoDB, gdzie wiele typów encji (np. użytkownicy, zamówienia, produkty) przechowywanych jest w jednej tabeli. Klucze partycji i sortowania są zaprojektowane tak, aby obsłużyć wszystkie wzorce dostępu. Zmniejsza koszty i poprawia wydajność kosztem złożoności projektu schematu.
- Ile kosztuje DynamoDB?
- DynamoDB oferuje dwa tryby rozliczeń: on-demand (płatność za rzeczywiste odczyty/zapisy) i provisioned capacity (rezerwacja RCU/WCU z opcją auto-scaling). Free Tier obejmuje 25 GB storage, 25 RCU i 25 WCU miesięcznie. Ceny zależą od regionu AWS.
- Czy DynamoDB obsługuje transakcje?
- Tak — DynamoDB obsługuje ACID transactions przez API TransactWriteItems i TransactGetItems, które pozwalają na atomowe operacje na do 100 elementach w jednej lub wielu tabelach. Transakcje mają dodatkowy koszt (2x RCU/WCU).