Datakonsistens betyder, at de samme data ser ens ud overalt. En kundes adresse i faktureringssystemet matcher adressen i forsendelsessystemet. Lagertællingen på lageret matcher optællingen på hjemmesiden. Når systemerne er uenige, går beslutningerne forkert. Ordrer sendes til gamle adresser. Kunder køber produkter, der er udsolgt. Konsistens er ikke valgfrit for systemer, der er afhængige af hinanden.
Distribuerede systemer gør konsistens vanskelig. Data, der replikeres på tværs af flere servere, kan komme ud af synkronisering. En netværkspartition isolerer én region fra en anden. Begge regioner accepterer skrivninger. Når partitionen heler, opstår der datakonflikter. CAP-teoremet siger, at man kan have konsistens, tilgængelighed og partitionstolerance, men ikke alle tre på én gang. De fleste distribuerede databaser vælger tilgængelighed og eventuel konsistens. Det betyder, at dataene konvergerer over tid, men der er et vindue, hvor forskellige noder ser forskellige værdier. Stærk konsistens kræver koordinering, hvilket koster latenstid. Valget afhænger af applikationen. En bankbogholder har brug for stærk konsistens. Et feed på sociale medier kan tolerere eventuel konsistens. Det rigtige svar er ikke universelt. Det afhænger af, hvad der går i stykker, når dataene er uenige.
Konsistensmodeller
- Stærk — alle noder ser de samme data med det samme
- Eventuelt — knuder konvergerer over tid
- Kausale — relaterede operationer ses i rækkefølge
- Læs-dine-skrivelser — du ser dine egne opdateringer med det samme
Konsistens er et spektrum. Spørgsmålet er, hvor meget inkonsistens applikationen kan tolerere, før den går i stykker.
Comments
No comments yet. Be the first to share a thought.
Leave a comment