Basis van databases
Welke beschrijving van de CAP-stelling voor een gedistribueerde database die kopieën van gegevens op meerdere servers bewaart, is passend?
- AWanneer het netwerk tussen de servers wordt opgesplitst, kunnen consistentie (elke server geeft de nieuwste waarde) en beschikbaarheid (elk verzoek krijgt een antwoord) niet tegelijk volledig worden gewaarborgd
- BMet een goed ontwerp kunnen consistentie, beschikbaarheid en partitietolerantie altijd tegelijk worden gewaarborgd
- CPartitietolerantie betekent dat netwerkverbindingen dubbel worden uitgevoerd, zodat het netwerk tussen de servers nooit wordt opgesplitst
Antwoord en toelichting tonen
Antwoord: A. Wanneer het netwerk tussen de servers wordt opgesplitst, kunnen consistentie (elke server geeft de nieuwste waarde) en beschikbaarheid (elk verzoek krijgt een antwoord) niet tegelijk volledig worden gewaarborgd
De CAP-stelling laat zien dat een gedistribueerde database niet alle drie de volgende eigenschappen tegelijk volledig kan waarborgen: consistentie (consistency: lezen van elke willekeurige server geeft het resultaat van de laatste schrijfactie), beschikbaarheid (availability: elke server die niet is uitgevallen, beantwoordt elk verzoek) en partitietolerantie (partition tolerance: het systeem blijft werken, ook als de communicatie tussen servers wordt verbroken). Omdat netwerkpartities in de praktijk niet te vermijden zijn, is de kern dat het systeem bij een partitie moet kiezen tussen voorrang voor consistentie, waarbij het antwoorden op sommige verzoeken stopt, en voorrang voor beschikbaarheid, waarbij het blijft antwoorden en verouderde waarden toestaat. Als er geen partitie is, kunnen consistentie en beschikbaarheid allebei worden gewaarborgd. Veel NoSQL-producten geven voorrang aan beschikbaarheid en passen eventual consistency toe, waarbij de kopieën na verloop van tijd gelijk worden. Partitietolerantie gaat niet over het dubbel uitvoeren van verbindingen; het is de eigenschap dat het systeem blijft werken, ook als er een partitie optreedt.