Tehingute haldamine DBMS-is: mis on ACID-i omadused?
Mis on andmebaasi tehing?
A Andmebaasi tehing on loogiline tรถรถtlusรผksus DBMS-is, mis hรตlmab รผht vรตi mitut andmebaasi juurdepรครคsutoimingut. Lรผhidalt, andmebaasitehingud esindavad mis tahes ettevรตtte reaalseid sรผndmusi.
Kรตiki andmebaasi juurdepรครคsutoiminguid, mida hoitakse tehingu alguse ja lรตpu avalduste vahel, kรคsitletakse DBMS-is รผhe loogilise tehinguna. Tehingu ajal on andmebaas ebaรผhtlane. Alles siis, kui andmebaas on loodud, muudetakse olek รผhest jรคrjekindlast olekust teise.

Faktid andmebaasi tehingute kohta
- Tehing on programmiรผksus, mille tรคitmine vรตib vรตi ei pruugi muuta andmebaasi sisu.
- DBMS-i tehingukontseptsioon tรคidetakse รผhe รผksusena.
- Kui andmebaasitoimingud ei vรคrskenda andmebaasi, vaid toovad ainult andmeid, nimetatakse seda tรผรผpi tehingut kirjutuskaitstud tehinguks.
- Edukas tehing vรตib muuta andmebaasi รผhest KOKKUVรTESEst olekust teise
- DBMS-i tehingud peavad olema tuumakad, jรคrjepidevad, isoleeritud ja pรผsivad
- Kui andmebaas oleks enne tehingut ebajรคrjekindlas olekus, jรครคks see ka pรคrast tehingut ebajรคrjekindlasse olekusse.
Miks on tehingutes vaja samaaegsust?
Andmebaas on jagatud ressurss, millele pรครคseb juurde. Seda kasutavad samaaegselt paljud kasutajad ja protsessid. Nรคiteks pangandussรผsteem, raudtee- ja lennubroneerimissรผsteemid, bรถrsi jรคlgimine, supermarketite laoseisud ja kassad jne.
Samaaegse juurdepรครคsu mittehaldamine vรตib pรตhjustada selliseid probleeme nagu:
- Riistvara rike ja sรผsteemi jookseb kokku
- sama tehingu samaaegne teostamine, ummikseisvรตi aeglane jรตudlus
Tehingute olekud
DBMS-i tehingukontseptsiooni erinevad olekud on loetletud allpool.
| riik | Tehingu tรผรผbid |
|---|---|
| Aktiivne olek | Tehing lรคheb tรคitmisprotsessi alguses aktiivsesse olekusse. Selles olekus saab teha lugemis- vรตi kirjutamistoiminguid. |
| Osaliselt pรผhendunud | Tehing lรคheb pรคrast tehingu lรตppu osaliselt seotud olekusse. |
| Pรผhendunud olek | Kui tehing on olekusse kinnitatud, on see juba tรคitmise edukalt lรตpetanud. Lisaks salvestatakse kรตik selle muudatused andmebaasi pรผsivalt. |
| Ebaรตnnestunud olek | Tehing loetakse nurjunuks, kui mรตni kontroll ebaรตnnestub vรตi kui tehing katkestatakse, kui see on aktiivses olekus. |
| Lรตpetatud riik | Tehingu olek jรตuab lรตpetatud olekusse, kui teatud sรผsteemist vรคljuvaid tehinguid ei saa taaskรคivitada. |

Uurime a oleku รผlemineku diagramm mis nรคitab, kuidas tehing nende erinevate olekute vahel liigub.
- Kui tehing mรคrgib tรคitmist, muutub see aktiivseks. See vรตib vรคljastada toimingu READ vรตi WRITE.
- Kui toimingud READ ja WRITE on lรตpule viidud, muutuvad tehingud osaliselt kinnistatud olekuks.
- Jรคrgmiseks peavad mรตned taasteprotokollid tagama, et sรผsteemitรตrge ei pรตhjustaks vรตimetust tehingu muudatusi pรผsivalt salvestada. Kui see kontroll รตnnestub, sooritatakse tehing ja lรคheb sooritatud olekusse.
- Kui kontroll ebaรตnnestus, lรคheb tehing olekusse Ebaรตnnestunud.
- Kui tehing katkestatakse, kui see on aktiivses olekus, lรคheb see nurjunud olekusse. Tehing tuleks tagasi pรถรถrata, et tรผhistada selle kirjutamistoimingute mรตju andmebaasile.
- Lรตpetatud olek viitab sรผsteemist vรคljuvale tehingule.
Mis on ACID omadused?
HAPE omadused kasutatakse andmebaasi terviklikkuse sรคilitamiseks tehingute tรถรถtlemise ajal. ACID DBMS-is tรคhistab Amรผrgisus, Cjรคrjekindlus, Ilohutus ja Dkasutatavus.
- Atomicity: Tehing on รผks operatsiooniรผhik. Te kas teostate selle tรคielikult vรตi ei tee seda รผldse. Osalist tรคitmist ei saa olla.
- Jรคrjepidevus: Kui tehing on sooritatud, peaks see liikuma รผhest jรคrjepidevast olekust teise.
- Isolatsioon: Tehing tuleks sooritada teistest tehingutest eraldatult (lukud puuduvad). Samaaegse tehingu teostamise ajal ei tohiks samaaegselt teostatud tehingute vahetehingutulemusi รผksteisele kรคttesaadavaks teha. (Tase 0,1,2,3)
- Vastupidavus:ยท Pรคrast tehingu edukat lรตpetamist peaksid muudatused andmebaasis pรผsima. Isegi sรผsteemitรตrgete korral.
ACID-i omadus DBMS-is koos nรคitega
Allpool on nรคide ACID-i atribuudist DBMS-is:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Tehing 1 kannab 50 dollarit kontolt X kontole Y.
Tehing 2 on iga konto krediteerimine 10% intressimaksega.
Kui mรตlemad tehingud esitatakse koos, ei ole garantiid, et tehing 1 sooritatakse enne 2. tehingut vรตi vastupidi. Olenemata tellimusest peab tulemus olema selline, nagu toimuksid tehingud jรคrjestikku.
Tehingute tรผรผbid
Pรตhineb rakendusaladel
- Jaotamata vs
- Tehingute hรผvitamine
- Tehingute ajastus
- On-line vs partii
Pรตhineb tegevustel
- Kaheastmeline
- Piiratud
- Tegevusmudel
Pรตhineb struktuuril
- Korralikud vรตi lihtsad tehingud: koosneb primitiivsete toimingute jadast, mis viiakse lรคbi alguse ja lรตpu operatsioonide vahel.
- Pesastatud tehingud: tehing, mis sisaldab muid tehinguid.
- Tรถรถvoo
Mis on ajakava?
Ajakava on protsess, mis loob mitme paralleelse tehingu รผhe rรผhma ja teostab need รผkshaaval. See peaks sรคilitama juhiste kuvamise jรคrjekorra igas tehingus. Kui sooritatakse kaks tehingut korraga, vรตib รผhe tehingu tulemus mรตjutada teise vรคljundit.
Nรคide
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Kui Tehing 2 sooritatakse enne Tehingut 1, loetakse toote koguse kohta aegunud infot. Seetรตttu on ajakava vaja.
Paralleelne tรคitmine andmebaasis on vรคltimatu. Kuid paralleelne tรคitmine on lubatud, kui samaaegselt tรคidetavate tehingute vahel on samavรครคrsuse seos. Seda samavรครคrsust on 3 tรผรผpi.
TULEMUSE VรRDVรรRSUS:
Kui kaks ajakava kuvavad pรคrast tรคitmist sama tulemuse, nimetatakse seda tulemusega samavรครคrseks ajakavaks. Need vรตivad pakkuda รผhe vรครคrtuse jaoks sama tulemust ja mรตne teise vรครคrtuste komplekti jaoks erinevaid tulemusi. Nรคiteks รผks tehing vรคrskendab toote kogust, teine โโaga kliendi andmeid.
Kuva samavรครคrsus
Vaate ekvivalentsus ilmneb siis, kui mรตlema ajakava tehing sooritab sarnase toimingu. Nรคiteks รผks tehing lisab toote รผksikasjad tootetabelisse, samas kui teine โโtehing lisab toote รผksikasjad arhiivitabelisse. Tehing on sama, kuid tabelid on erinevad.
KONFLIKTI Ekvivalentsus
Sel juhul vรคrskendavad/vaatavad kaks tehingut sama andmekogumit. Tehingu vahel on konflikt, kuna tรคitmise jรคrjekord mรตjutab vรคljundit.
Mis on serialiseeritavus?
Serialiseeritavus on samaaegse ajakava otsimise protsess, mille vรคljund on vรตrdne jadagraafikuga, kus tehingud tรคidetakse รผksteise jรคrel. Sรตltuvalt ajakavade tรผรผbist on serialiseeritavust kahte tรผรผpi:
- Konflikt
- vaade
kokkuvรตte
- Tehinguhaldus on DBMS-i tรถรถtlemise loogiline รผksus, mis hรตlmab รผhte vรตi mitut andmebaasi juurdepรครคsutoimingut
- See on tehing on programmiรผksus, mille tรคitmine vรตib vรตi ei pruugi muuta andmebaasi sisu.
- Samaaegse juurdepรครคsu haldamata jรคtmine vรตib pรตhjustada probleeme, nagu riistvaratรตrge ja sรผsteemijooks.
- Aktiivne, osaliselt toime pandud, toime pandud, ebaรตnnestunud ja lรตpetatud on olulised tehinguolekud.
- ACID Propertiesi tรคisvorm DB-sรผsteemid is Atomjรคikus, jรคrjepidevus, isoleeritus ja vastupidavus
- Kolm DBMS-i tehingutรผรผpi on rakendusalade alus, tegevus ja struktuur.
- Ajakava on protsess, mis loob mitme paralleelse tehingu รผhe rรผhma ja teostab need รผkshaaval.
- Serialiseeritavus on samaaegse ajakava otsimise protsess, mille vรคljund on vรตrdne jadagraafikuga, kus tehingud sooritatakse รผksteise jรคrel.
