FAGPORTALEN

CAP-teoremet (Consistency, Availability, Partition tolerance)

It A · STX · A-niveau · Databaser og datamodellering

💻 CAP-teoremet (Consistency, Availability, Partition tolerance)

CAP-teoremet (Eric Brewer 2000, formelt bevist 2002 af Gilbert & Lynch): et distribueret system kan kun garantere TO ud af tre egenskaber.

C — Consistency: alle noder ser samme data på samme tid. Læsning får altid den seneste skrivning.

A — Availability: hvert request får et svar (også selvom det er gammelt).

P — Partition tolerance: systemet fortsætter med at fungere selvom netværk-forbindelser mellem noder fejler.

Praktisk betydning: i den virkelige verden ER netværks-partitioner uundgåelige (P er givet) — så valget er reelt mellem CP (consistency + partition tolerance, taber availability) og AP (availability + partition tolerance, taber consistency).

CP-eksempler: MongoDB (ved standard-konfiguration), HBase, Redis, banktransaktioner. Stærk consistency, men kan blive utilgængelige ved netværksfejl.

AP-eksempler: Cassandra, DynamoDB, CouchDB. Eventual consistency — data kan være midlertidigt forkert, men systemet er altid tilgængeligt. CA (uden P) er kun teoretisk — kun ét-node-systemer har dette. PACELC-teoremet (Daniel Abadi 2010) udvider: hvis Partition (P) sker, vælg mellem A og C. ELSE (E) når systemet er normalt, vælg mellem Latency (L) og Consistency (C).

BASE vs. ACID: BASE = Basically Available, Soft state, Eventually consistent — NoSQL-tilgang. ACID = Atomicity, Consistency, Isolation, Durability — SQL-transaktion.

Anvendelse

vælg database baseret på applikationskrav. Bank → CP/ACID. Social media feed → AP/BASE.

Læringsmål

Sådan kan du arbejde med emnet

Arbejd iterativt med prototyper og dokumentation. Test, evaluér og dokumentér.

Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.

Prøv Fagportalen gratis

🤖 Denne side er skrevet med kunstig intelligens og fagligt gennemgået af Fagportalen, som har det redaktionelle ansvar. Finder du en fejl, så skriv til support@fagportalen.dk.