Obsah

¨

CAP teorém

CAP teorém poprvé formuloval informatik Eric Brewer v roce 2000. Teoreticky dokazuje, že distribuovaná databáze (běžící na více uzlech/serverech naráz) nemůže současně zaručit Konzistenci, Dostupnost a Odolnost vůči rozdělení.

Tento princip je naprosto zásadní při návrhu moderních cloudových aplikací a výběru databázových technologií (SQL vs. NoSQL).


Tři pilíře CAP

Název je akronymem pro tři vlastnosti:


Proč nelze mít všechno?

V distribuovaném světě je Partition Tolerance (P) nutností – sítě nejsou stoprocentně spolehlivé. Pokud nastane rozdělení sítě (servery spolu nemluví), musíme si vybrat:

1. **CP (Consistency + Partition Tolerance):** Zvolíme konzistenci. Pokud servery nemohou synchronizovat data, systém raději odmítne požadavek (stane se nedostupným), aby předešel zobrazení neaktuálních dat.
2. **AP (Availability + Partition Tolerance):** Zvolíme dostupnost. Systém odpoví uživateli daty, která má aktuálně k dispozici, i když riskuje, že nejsou nejnovější, protože synchronizace s ostatními uzly selhala.

Poznámka: Kombinace CA (Konzistence + Dostupnost) je možná pouze v systémech, které nejsou distribuované (běží na jednom stroji), protože tam nemůže nastat rozdělení sítě.


Praktické příklady a databáze

Výběr mezi těmito vlastnostmi definuje charakter konkrétních databázových systémů:

Typ Priorita Příklady Vhodné pro
CP Konzistence MongoDB, Redis, Google Spanner Bankovní systémy, inventury.
AP Dostupnost Cassandra, DynamoDB, CouchDB Sociální sítě, komentáře, nákupní košíky.
CA Bez sítě Tradiční RDBMS (MySQL, PostgreSQL) Aplikace běžící na jednom serveru.

Moderní pohled: PACELC

Protože k rozdělení sítě (P) nedochází neustále, byl CAP teorém rozšířen o model PACELC. Ten říká: Pokud nastane rozdělení (Partition), volíme mezi Dostupností (Availability) a Konzistencí (Consistency). Else (jinak, v běžném stavu), volíme mezi Latencí (Latency) a Konzistencí (Consistency).

Tento model lépe vystihuje realitu, kde se často obětuje trocha konzistence pro bleskovou rychlost odezvy (nízkou latenci), i když síť funguje perfektně.


Související pojmy: Distribuované systémy, Databáze, SQL, NoSQL, Latence, Caching, Cloud Computing.