Amazon DynamoDB

Amazon DynamoDB je plně spravovaná (fully managed), serverless NoSQL databáze typu klíč-hodnota (key-value) a dokument, kterou vyvíjí a poskytuje cloudová platforma Amazon Web Services (AWS). Byla navržena s primárním cílem poskytovat předvídatelnou, jednocifernou milisekundovou odezvu (latenci) při zpracování dat v jakémkoliv měřítku.

Technologie vychází z původního interního výzkumu společnosti Amazon z roku 2007 (popsaného ve slavném dokumentu Dynamo: Amazon's Highly Available Key-value Store), kdy Amazon potřeboval databázi schopnou ustát extrémní nápor během nákupních svátků. Dnes jde o jednu z nejpoužívanějších cloudových databází na světě.

Architektura a datový model

Na rozdíl od tradičních relačních databází (SQL) nemá DynamoDB pevnou strukturu schématu. Záznamy v tabulce se nazývají položky (Items) a každá položka se může skládat z různého počtu atributů. Založení nového atributu (např. přidání věku uživatele) nevyžaduje žádnou změnu schématu napříč celou tabulkou.

Jediným pevně definovaným prvkem při zakládání tabulky je primární klíč (Primary Key). Ten jednoznačně identifikuje každou položku. Může se skládat buď ze samotného klíče oddílu (Partition Key), podle kterého databáze pomocí hashovací funkce fyzicky distribuuje data napříč SSD disky na serverech AWS, nebo z kombinace klíče oddílu a třídicího klíče (Sort Key).

V kontextu CAP teorému byla původní myšlenka koncipována primárně jako AP systém (upřednostňující dostupnost a toleranci k výpadku nad konzistencí). Jako moderní služba však DynamoDB výchozím nastavením poskytuje konečnou konzistenci (Eventual Consistency), přičemž vývojáři mohou u každého čtení explicitně požádat o silnou konzistenci (Strong Consistency). Z tohoto pohledu je služba vysoce flexibilní.

Škálování a výkon

Zásadní výhodou DynamoDB je její serverless povaha. Vývojář se nestará o provizi serverů, instalaci softwaru ani záplatování operačních systémů. Údržbu hardwaru a automatické replikace dat napříč třemi různými zónami dostupnosti (Availability Zones) v rámci jednoho datového regionu řeší AWS zcela automaticky na pozadí.

Platforma nabízí dva hlavní modely škálování: On-Demand a Provisioned. V režimu On-Demand zákazník platí pouze za přesný počet přečtených a zapsaných požadavků, což je ideální pro aplikace s nepředvídatelnou zátěží a nárazovými špičkami. U Provisioned modelu (rezervovaná kapacita) si administrátor předem specifikuje maximální propustnost, což je násobně levnější pro aplikace s konstantním a předvídatelným provozem.

Pro extrémně kritické aplikace, kde je i milisekundová odezva příliš pomalá, nabízí AWS službu nazvanou DAX (DynamoDB Accelerator). Jde o plně spravovanou in-memory cache, která dokáže snížit latenci čtení na úroveň mikrosekund, aniž by vývojáři museli přepisovat aplikační logiku.

Typické případy užití

Díky své schopnosti obsloužit desítky milionů požadavků za vteřinu je DynamoDB ideální volbou pro aplikace s masivním měřítkem.

V e-commerce se využívá pro ukládání nákupních košíků, uživatelských relací (sessions) nebo produktových katalogů. V těchto případech je rychlost čtení kritická a pevné relační schéma zbytečné.

V herním průmyslu slouží jako vysoce výkonný backend pro ukládání stavu hráčů, globálních žebříčků (leaderboards) a herních inventářů v masivně multiplayerových hrách, kde je nutné zpracovávat statisíce asynchronních zápisů v reálném čase.

Výrazné zastoupení má databáze také v systémech IoT (Internet of Things), kde díky vysoké propustnosti zápisu dokáže absorbovat a rychle ukládat obrovské množství telemetrických dat ze statisíců souběžně připojených chytrých senzorů.

Výhody a nevýhody

Výhody DynamoDB	Nevýhody a omezení
Extrémně nízká a předvídatelná latence v jakémkoliv měřítku.	Složité dotazování. Nelze snadno provádět komplexní JOIN operace známé ze SQL.
Plně spravovaná serverless architektura (nulová údržba infrastruktury).	Riziko Vendor Lock-in (technologie je pevně svázána s ekosystémem AWS).
Flexibilní schéma a podpora dokumentového ukládání (JSON).	Omezení maximální velikosti jedné položky (Item) je stanoveno na 400 KB.
Funkce Global Tables pro okamžitou replikaci dat napříč světadíly.	Cena může při obrovském a datově neoptimalizovaném provozu velmi rychle růst.

Související pojmy: AWS, NoSQL, Databáze klíč-hodnota, CAP teorém, Serverless, DAX, Cloud Computing, Amazon Web Services, Eventual Consistency.