Amazon MemoryDB
Amazon MemoryDB for Redis
Trwała baza in-memory kompatybilna z Redis. Mikrosekundowe odczyty, jednomilisekundowe zapisy i pełna trwałość danych - używaj jako główną bazę danych, nie tylko cache.
Amazon MemoryDB for Redis to w pełni zarządzana, trwała baza danych in-memory kompatybilna z Redis. W przeciwieństwie do ElastiCache (który jest cache), MemoryDB przechowuje dane trwale - dzięki replikacji Multi-AZ i transaction log. Możesz go używać jako główną bazę danych, a nie tylko warstwę cache.
MemoryDB oferuje mikrosekundowe opóźnienia odczytów i jednomilisekundowe zapisy. Jest w pełni kompatybilny z Redis - istniejące aplikacje i sterowniki Redis działają bez zmian. Idealny gdy potrzebujesz zarówno ekstremalnej wydajności, jak i trwałości danych.
Amazon MemoryDB powstał, bo wielu klientów AWS używało ElastiCache jako "głównej bazy danych" mimo braku gwarancji trwałości. AWS zaprojektował MemoryDB od zera z trwałym transaction log, zachowując kompatybilność z Redis. Rezultat: ta sama wydajność in-memory (mikrosekundy), ale z trwałością porównywalną do tradycyjnych baz danych. To jedyna usługa Redis w chmurze oferująca jednocześnie trwałość Multi-AZ i mikrosekundowe odczyty.
Jeśli używasz ElastiCache + RDS razem (cache + baza danych), rozważ zamianę obu na sam MemoryDB. Upraszczasz architekturę (jedna baza zamiast dwóch), eliminujesz problem cache invalidation i zyskujesz lepszą wydajność. Ale pamiętaj - MemoryDB przechowuje wszystko w RAM, więc koszt za GB jest wyższy niż RDS. Sprawdź czy Twoje dane zmieszczą się w budżecie.
Amazon MemoryDB for Redis to w pelni zarzadzana, trwala baza danych in-memory kompatybilna z Redis. W przeciwienstwie do ElastiCache, MemoryDB gwarantuje trwalosc danych dzieki rozproszonemu logowi transakcyjnemu w wielu Availability Zones. Laczy mikrosekundowe odczyty z pelna trwaloscia.
Tworzenie klastra MemoryDB
Klaster sklada sie z shardow (1-500), kazdy shard ma primary node i do 5 replik. Wybierasz typ instancji (db.r6g, db.r7g - memory optimized, Graviton). Definiujesz subnet group (subnety w roznych AZ) i security group. Caly klaster jest w jednym VPC.
Trwalosc przez Multi-AZ Transaction Log
Kazdy zapis jest synchronicznie replikowany do rozproszonego transaction logu w wielu AZ przed potwierdzeniem klientowi. To gwarantuje, ze dane przezyja awarie noda, calej AZ, a nawet restart calego klastra. W przeciwienstwie do ElastiCache (ktory jest cache i moze stracic dane), MemoryDB jest trwala baza danych.
Wydajnosc odczytow i zapisow
Odczyty z primary i replik maja latency ponizej 500 mikrosekund. Zapisy sa nieco wolniejsze (single-digit milisekundy) ze wzgledu na synchroniczna replikacje do transaction logu. Throughput skaluje sie liniowo z liczba shardow - dodajesz shardy online bez downtime. Kazdy shard obsluguje do 25,000 requests/s.
Kompatybilnosc z Redis
MemoryDB implementuje Redis 6.2 i 7.0. Obsluguje wszystkie struktury danych Redis: strings, hashes, lists, sets, sorted sets, streams, HyperLogLog. Obsluguje klasterowy tryb Redis (hash sloty, MOVED redirects). Istniejace aplikacje Redis lacza sie bez zmian w kodzie - wystarczy zmienic endpoint.
Snapshoty i odtwarzanie
Automatyczne dzienne snapshoty (retencja 1-35 dni) plus snapshoty on-demand. Snapshot to pelny obraz danych w formacie RDB. Mozesz odtworzyc klaster z snapshota do dowolnego punktu w czasie. Snapshoty moga byc kopiowane miedzy regionami. Eksport snapshota do S3 umozliwia analize offline.
Skalowanie i resharding online
Skalowanie horyzontalne: dodajesz shardy (scale out) lub usuwasz (scale in) bez downtime. Dane sa automatycznie rebalansowane miedzy shardami. Skalowanie wertykalne: zmieniasz typ instancji (np. z r6g.large na r6g.xlarge) z rolling update - repliki sa aktualizowane najpierw, potem failover primary.
Praktyczne wskazowki do uzycia MemoryDB - od wyboru miedzy MemoryDB a ElastiCache po wzorce architektoniczne i optymalizacje.
MemoryDB vs ElastiCache - kiedy co wybrac
ElastiCache: cache warstwy (dane moga byc odtworzone ze zrodla), najnizsza mozliwa latency, koszt nizszy. MemoryDB: primary database (dane musza przetrwac awarie), sesje uzytkownikow, koszyk zakupowy, leaderboardy, real-time inventory. Regula: jezeli utrata danych wymaga przebudowy ze zrodla - ElastiCache. Jezeli utrata danych = utrata danych biznesowych - MemoryDB.
PoczatkujacyRedis Streams jako trwaly message broker
MemoryDB z Redis Streams to trwaly broker wiadomosci z mikrosekundowa latency. XADD dodaje wiadomosci, XREADGROUP obsluguje consumer groups z potwierdzeniami (XACK). W przeciwienstwie do ElastiCache, wiadomosci w MemoryDB przezyja restart nodow. Idealny do event sourcing, real-time analytics i communication miedzy mikroserwisami.
ZaawansowanyDobor rozmiaru instancji - RAM to klucz
MemoryDB trzyma 100% danych w RAM. Oblicz: rozmiar danych * 1.5 (overhead Redis) * 1.2 (bufor na peak). Dla 10 GB danych potrzebujesz min. 18 GB RAM. Monitoruj metryki BytesUsedForMemoryDB i DatabaseMemoryUsagePercentage. Powyzej 80% uzycia RAM - skaluj (wiecej shardow lub wieksze instancje).
PoczatkujacyWzorzec session store z TTL
MemoryDB jako session store: SET session:{id} {data} EX 3600 (wygasniecie po godzinie). Trwalosc gwarantuje, ze sesje przezyja restart infrastruktury. Uzywaj hash type dla zlozonych sesji: HSET session:{id} field value. Monitoruj eviction metryki - jezeli widzisz evictions, potrzebujesz wiecej RAM.
PoczatkujacyMigracja z samodzielnego Redis do MemoryDB
Uzyj snapshota RDB: BGSAVE na istniejacym Redis, upload RDB do S3, stworz klaster MemoryDB z seed z S3. Dla migracji online: skonfiguruj istniejacy Redis jako source i uzyj replikacji do MemoryDB. Po synchronizacji przejdz na nowy endpoint. Testuj kompatybilnosc komend - MemoryDB nie obsluguje niektorych administracyjnych komend Redis.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon MemoryDB bezposrednio w konsoli AWS.
Do czego sluzy Amazon MemoryDB?
Sesje użytkowników i koszyki
Przechowuj sesje i koszyki zakupowe z mikrosekundowym dostępem. Dane są trwałe - nie znikną po awarii węzła, w przeciwieństwie do zwykłego cache.
Leaderboardy i rankingi w czasie rzeczywistym
Sorted Sets w Redis idealnie modelują rankingi. MemoryDB daje pewność, że wyniki nie znikną - trwałe przechowywanie z wydajnością in-memory.
Kolejki i strumieniowanie zdarzeń
Redis Streams jako trwała kolejka wiadomości z mikrosekundowymi opóźnieniami. Alternatywa dla SQS gdy liczy się minimalne latency.
Baza danych dla mikroserwisów
Użyj MemoryDB jako główną bazę dla mikroserwisów wymagających ultra-niskich opóźnień. Struktury danych Redis (hashes, lists, sets) zastępują tabele SQL.
Co musisz wiedziec?
Trwałość (Durability)
MemoryDB zapisuje każdą operację do rozproszonego transaction log w wielu AZ. Dane przetrwają awarię węzła, restarty, a nawet awarię całej AZ.
Multi-AZ Transaction Log
Dziennik transakcji replikowany synchronicznie do wielu Availability Zones. Gwarantuje trwałość danych bez utraty wydajności.
Cluster Mode
Tryb, w którym dane są partycjonowane (shardowane) na wiele węzłów. Pozwala skalować pojemność i przepustowość horyzontalnie.
Kompatybilność z Redis
MemoryDB obsługuje API Redis - te same komendy, struktury danych i sterowniki. Migracja z Redis lub ElastiCache jest bezproblemowa.
Snapshot
Pełna kopia danych w danym momencie, przechowywana w S3. Możesz tworzyć snapshoty ręcznie lub automatycznie (daily backup).
Architektura: Real-time leaderboard i sesje z MemoryDB
Architektura aplikacji gamingowej z MemoryDB jako trwala baza danych in-memory. Sorted sets obsluguja rankingi z mikrosekundowa latency, a trwalosc gwarantuje, ze wyniki graczy nigdy nie zostana utracone.
Ile kosztuje Amazon MemoryDB?
Węzły On-Demand
Płacisz za godzinę działania węzła. Cena zależy od typu instancji (ilość pamięci i CPU).
db.r6g.large (13.07 GB): ~$0.335/godz. (~$245/mies.)
Dane zapisane
Opłata za GB danych przechowywanych w MemoryDB (poza kosztem węzła).
~$0.20/GB/mies. za dane w transaction log
Snapshot storage
Snapshoty do rozmiaru pamięci klastra są bezpłatne. Dodatkowy storage jest płatny.
Dodatkowy snapshot: ~$0.085/GB/mies.
Transfer danych
Transfer w ramach tego samego AZ jest bezpłatny. Transfer między AZ i do internetu jest płatny.
Między AZ: ~$0.01/GB, do internetu: od $0.09/GB
Przyklady AWS CLI
Utwórz klaster MemoryDB
Tworzy nowy klaster MemoryDB z 2 shardami
aws memorydb create-cluster \
--cluster-name moj-memorydb \
--node-type db.r6g.large \
--num-shards 2 \
--num-replicas-per-shard 1 \
--acl-name open-access \
--subnet-group-name moja-subnet-group
Sprawdź status klastra
Lista klastrów MemoryDB z ich statusem
aws memorydb describe-clusters \
--query "Clusters[].{Name:Name,Status:Status,Shards:NumberOfShards,NodeType:NodeType}" \
--output table
Utwórz snapshot
Ręczny snapshot klastra MemoryDB
aws memorydb create-snapshot \
--cluster-name moj-memorydb \
--snapshot-name moj-memorydb-snap-2024
Zaktualizuj klaster
Zmień typ węzła klastra (vertical scaling)
aws memorydb update-cluster \
--cluster-name moj-memorydb \
--node-type db.r6g.xlarge
Quiz: Amazon MemoryDB
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Czym MemoryDB różni się od ElastiCache for Redis?
2. Jakie opóźnienia odczytów oferuje MemoryDB?
3. Czy MemoryDB może zastąpić tradycyjną bazę danych?
4. Co to jest Cluster Mode w MemoryDB?
Czesto uzywane razem z Amazon MemoryDB
Chcesz poznac Amazon MemoryDB w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon MemoryDB krok po kroku. Teoria + praktyka od zera.