Sandoriai yra pagrindinės operacijos, leidžiančios mums keisti ir gauti duomenis. Tačiau norint užtikrinti duomenų bazės vientisumą, svarbu, kad šios operacijos būtų vykdomos taip, kad būtų išlaikytas nuoseklumo teisingumas ir patikimumas net ir gedimų/klaidų atveju. Čia atsiranda ACID savybės.
ACID reiškia atomiškumo konsistencijos izoliaciją ir patvarumą.
RŪGŠTIS savybės:
Yra keturios RŪGŠTIS savybės
1. Atomiškumas
Atomiškumas reiškia, kad sandoris yra „viskas arba nieko“, arba visos operacijos sėkmingos, arba netaikoma nė viena. Jei kuri nors dalis nepavyksta, visa operacija atšaukiama, kad duomenų bazė būtų nuosekli.
- Įsipareigokite : jei operacija sėkminga, pakeitimai taikomi visam laikui.
- Nutraukti / atšaukti : Jei operacija nepavyksta, bet kokie operacijos metu atlikti pakeitimai atmetami.
Pavyzdys : Apsvarstykite šią operaciją T susidedantis iš T1 ir T2 : 0 pervedimas iš sąskaitos X atsiskaityti IR .
AtomiškumasJei operacija nepavyksta užbaigus T1, bet iki T2 pabaigos, duomenų bazė liktų nenuoseklioje būsenoje. Naudojant „Atomity“, jei kuri nors operacijos dalis nepavyksta, visas procesas grąžinamas į pradinę būseną ir neatliekami jokie daliniai pakeitimai.
Sandorių nuoseklumas reiškia, kad duomenų bazė turi išlikti galiojančios būsenos prieš ir po operacijos.
java konstantos
- Galiojanti būsena atitinka visus apibrėžtus taisyklių apribojimus ir ryšius (pvz., pirminių raktų išorinius raktus ir kt.).
- Jei operacija pažeidžia kurią nors iš šių taisyklių, ji grąžinama, kad būtų išvengta sugadintų ar neteisingų duomenų.
- Jei atliekant operaciją pinigai išskaitomi iš vienos sąskaitos, bet nepridedami į kitą (pervedant), tai pažeidžia nuoseklumą.
Pavyzdys : Tarkime, kad visų banko sistemos likučių suma visada turi būti pastovi. Prieš pervedimą bendras likutis yra 0. Po operacijos bendras likutis turi likti 0. Jei operacija nepavyksta per vidurį (pvz., atnaujinant vieną sąskaitą, bet ne), sistema turėtų išlaikyti savo nuoseklumą atšaukdama operaciją.
Iš viso prieš įvykstant T = 500 + 200 = 700 .
Iš viso po to, kai įvyksta T = 400 + 300 = 700 .
Nuoseklumas3. Izoliacija
Izoliavimas užtikrina, kad operacijos vyktų nepriklausomai, nedarant įtakos viena kitai. Vieno sandorio pakeitimai nėra matomi kitiems, kol jie nepatvirtinti.
Tai užtikrina, kad tuo pačiu metu atliekamų operacijų rezultatas būtų toks pat, tarsi jie būtų vykdomi vienas po kito, užkertant kelią tokioms problemoms kaip:
„Java“ eilutėje yra
- Nešvarūs skaito: neįsipareigotų duomenų skaitymas
- Nepakartojami skaitiniai: duomenys keičiasi tarp dviejų skaitymų
- Phantom skaito: operacijos metu atsiranda naujų eilučių
Pavyzdys : Apsvarstykite du sandorius T ir T''.
- X = 500 Y = 500
IsolationPaaiškinimas:
1. Sandoris T:
- T nori perkelti iš X į Y.
- T skaito IR (reikšmė: 500) atima iš X (naujas X = 450) ir prideda prie Y (naujas Y = 550).
2. Sandoris T'':
- T' ' paleidžiamas ir nuskaito X (500) ir Y (500).
- Jis apskaičiuoja sumą: 500 + 500 = 1000.
- Tuo tarpu X ir Y reikšmės atitinkamai pasikeičia į 450 ir 550.
- Taigi teisinga suma turėtų būti 450 + 550 = 1000.
- Izoliavimas užtikrina, kad T“ neskaitys pasenusių verčių, kol vis dar vykdoma kita operacija (T).
- Sandoriai turėtų būti nepriklausomi, o T“ turėtų pasiekti galutines vertes tik po T įsipareigojimų.
- Taip išvengiama nenuoseklių rezultatų, pvz., neteisingos sumos, apskaičiuotos pagal T''.
4. Patvarumas:
Patvarumas užtikrina, kad atlikus operaciją jos pakeitimai išsaugomi visam laikui, net jei sistema sugenda. Duomenys saugomi nepastovioje atmintyje, todėl duomenų bazė gali atkurti savo paskutinę būseną neprarandant duomenų.
Pavyzdys : Sėkmingai pervedus pinigus iš sąskaitos A į sąskaitą B, pakeitimai išsaugomi diske. Net jei iškart po įsipareigojimo įvyksta gedimas, sistemai atsistačius perdavimo detalės vis tiek bus nepažeistos, užtikrinant patvarumą.
Kaip ACID savybės veikia DBVS dizainą ir veikimą
The ACID ypatybių visuma suteikia mechanizmą, užtikrinantį duomenų bazės teisingumą ir nuoseklumą tokiu būdu, kad kiekviena operacija yra operacijų grupė, kuri veikia kaip vienas vienetas, duoda nuoseklius rezultatus, veikia atskirai nuo kitų operacijų, o jos atliekami atnaujinimai yra ilgai saugomi.
ACID savybės apsaugo DBVS duomenų vientisumą užtikrindamos, kad operacijos būtų sėkmingai baigtos arba nepaliktų jokių pėdsakų, jei jos būtų pertrauktos. Jie neleidžia daliniams naujinimams sugadinti duomenų ir užtikrina, kad duomenų bazė pereis tik tarp galiojančių būsenų.
2. Lygiagretumo kontrolė
ACID savybės suteikia tvirtą pagrindą vienu metu vykstantiems sandoriams valdyti. Izoliavimas užtikrina, kad operacijos netrukdytų viena kitai, užkertant kelią duomenų anomalijoms, pvz., prarastiems naujinimams laikiniems neatitikimams ir neįpareigotiems duomenims.
3. Atkūrimas ir atsparumas gedimams
Patvarumas užtikrina, kad net jei sistema sugenda, duomenų bazė gali atkurti nuoseklią būseną. Dėl atomiškumo ir patvarumo savybių, jei operacija nepavyksta įpusėjus, duomenų bazė išlieka nuoseklios būsenos.
| Turtas | Atsakomybė už nuosavybės priežiūrą |
|---|---|
| Atomiškumas | Sandorių vadybininkas |
| Nuoseklumas | Programų programuotojas |
| Isolation | Lygiagretumo kontrolės vadovas |
| Patvarumas | Atsigavimas |
Kritiniai ACID naudojimo atvejai duomenų bazėse
Šiuolaikinėse programose itin svarbu užtikrinti duomenų patikimumą ir nuoseklumą. ACID savybės yra esminės tokiuose sektoriuose kaip:
- Bankininkystė : operacijos, susijusios su pinigų pervedimu įnešimu ar išėmimu, turi išlaikyti griežtą nuoseklumą ir patvarumą, kad būtų išvengta klaidų ir sukčiavimo.
- Elektroninė prekyba : norint užtikrinti, kad užsakymai skaičiuotų atsargas, o klientų duomenys būtų tvarkomi teisingai ir nuosekliai net esant dideliam srautui, būtina laikytis ACID.
- Sveikatos priežiūra : Paciento įrašų tyrimo rezultatai ir receptai turi atitikti griežtus vientisumo ir saugumo standartus.