V distribuovaném systému, který ukládá data, je nemožné dosáhnout současně všech tří následujících vlastností:
[!important] Pravidlo “Vyber si dvě” Teoreticky si můžeš vybrat libovolné dvě vlastnosti. V reálných distribuovaných systémech je ale volba složitější, protože P (Partition Tolerance) je nutnost.
Protože sítě nejsou spolehlivé (kabely se trhají, routery padají), Partition Tolerance (P) musí být vždy zapnutá. Nemůžeme si dovolit, aby pád sítě shodil celý systém.
Reálná volba se tedy zužuje na rozhodování: Co se stane, když se síť rozpadne?
Máme jen dvě možnosti: CP nebo AP.
Priorita: Bezpečnost dat.
Reakce: Abychom zabránili nekonzistenci (aby si A a B nemysleli různé věci), systém odmítne odpovídat na jedné (nebo obou) stranách rozpadu. Vrací chybu nebo timeout.
readConcern: majority, Redis v určité konfg.).
Priorita: Dostupnost služby.
Oběť: Obětujeme Konzistenci (C). Máme jen modely konzistence distribuovaného systému#Eventual Consistency (Případná).
Příklad: Sociální sítě (lajky), DNS, Cassandra, Amazon Dynamo (nákupní košík).
Teoretická kategorie.
Znamená to systém, který je konzistentní a dostupný, ale nesmí se rozpadnout síť.
V distribuovaném systému to prakticky neexistuje. Jakmile se síť rozpadne, systém přestane být C nebo A.
Příklad: Relační databáze (SQL) běžící na jednom stroji.