Tehingute haldamine andmebaasihaldussüsteemis: olekud, tüübid ja ACID
⚡ Nutikas kokkuvõte
Andmebaasi tehingute haldus käsitleb ühte või mitut andmebaasi toimingut ühe loogilise üksusena, mis liigutab andmebaasi ühest järjepidevast olekust teise. See tugineb ACID omadustele, määratletud tehingute olekutele ja ajakavadele, et samaaegne juurdepääs oleks korrektne.

Mis on andmebaasi tehing?
A Andmebaasi tehing on andmebaasihaldussüsteemi loogiline töötlemisüksus, mis hõlmab ühte või mitut andmebaasile juurdepääsu toimingut. Lühidalt öeldes esindavad andmebaasitehingud iga ettevõtte reaalseid sündmusi.
Kõik andmebaasile juurdepääsu toimingud, mis toimuvad tehingu algus- ja lõpplausete vahel, loetakse andmebaasihaldussüsteemis üheks loogiliseks tehinguks. Tehingu ajal on andmebaas ebajärjekindel. Alles pärast tehingu kinnitamist muutub olek ühest järjepidevast olekust teise.

Faktid andmebaasitehingute 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 PÜSIVALT OLEKUST teise.
- Andmebaasihaldussüsteemi tehingud peavad olema atomaarsed, järjepidevad, isoleeritud ja vastupidavad.
- 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. Seda kasutavad samaaegselt paljud kasutajad ja protsessid. Näideteks on pangandussüsteemid, raudtee- ja lennupiletite broneerimissüsteemid, börsi jälgimine ning supermarketite inventuur ja kassasüsteemid.
Samaaegse juurdepääsu mittehaldamine võib põhjustada selliseid probleeme nagu:
- Riistvararike ja süsteemi krahhid.
- sama tehingu samaaegne teostamine, ummikseisvõi aeglane jõudlus.
Selle jagatud juurdepääsu kontrollimine on ülesanne samaaegsuse kontroll, mis kasutab tehingute turvaliseks põimimiseks lukustamist ja ajatempleid. Enne seda on kasulik teada, milliseid olekuid tehing läbib.
Tehingute olekud
DBMS-i tehingukontseptsiooni erinevad olekud on loetletud allpool.
| riik | Kirjeldus |
|---|---|
| Aktiivne olek | Tehing läheb aktiivsesse olekusse, kui täitmisprotsess algab. Selle oleku ajal saab teha lugemis- või kirjutamisoperatsioone. |
| Osaliselt pühendunud | Pärast tehingu lõppu läheb tehing osaliselt kinnitatud olekusse. |
| Pühendunud olek | Kui tehing jõuab kinnitatud olekusse, on selle täitmine edukalt lõpule viidud ja kõik muudatused salvestatakse andmebaasi jäädavalt. |
| Ebaõnnestunud olek | Tehing loetakse ebaõnnestunuks, kui mõni kontrollidest ebaõnnestub või kui tehing katkestatakse aktiivses olekus. |
| Lõpetatud riik | Tehingu olek jõuab lõpetatud olekusse, kui tehing lahkub süsteemist ja seda ei saa enam taaskäivitada. |
Uurime ühte oleku ülemineku diagramm mis näitab, kuidas tehing nende erinevate olekute vahel liigub.
- Kui tehing on käivitatud, muutub see aktiivseks. See saab käivitada READ (lugemise) või WRITE (kirjutamise) operatsiooni.
- Kui lugemis- ja kirjutamistoimingud on lõpule viidud, jõuab tehing osaliselt kinnitatud olekusse.
- Järgmiseks peavad mõned taasteprotokollid tagama, et süsteemi rike ei põhjustaks tehingu muudatuste jäädavat salvestamist. Kui see kontroll õnnestub, siis tehing kinnitatakse ja läheb kinnitatud olekusse.
- Kui kontroll ebaõnnestub, läheb tehing ebaõnnestunud olekusse.
- Kui tehing katkestatakse aktiivses olekus olles, läheb see ebaõnnestunud olekusse. Tehing tuleks tagasi pöörata, et tühistada selle kirjutamisoperatsioonide mõju andmebaasile.
- Lõpetatud olek viitab süsteemist väljuvale tehingule.
Mis on happe omadused?
HAPE omadused kasutatakse andmebaasi terviklikkuse säilitamiseks tehingute töötlemise ajal. ACID tähistab andmebaasihaldussüsteemides 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 teostada teistest tehingutest eraldi. Samaaegse teostamise ajal ei tohiks samaaegselt teostatud tehingute vahetulemusi üksteisele kättesaadavaks teha.
- Vastupidavus: Pärast tehingu edukat lõpuleviimist peaksid andmebaasis tehtud muudatused püsima isegi süsteemi rikete korral.
ACID omadus andmebaasihaldussüsteemis koos näitega
Allpool on näide ACID omadusest andmebaasihaldussüsteemis:
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 mingit garantiid, et tehing 1 täidetakse enne tehingut 2 või vastupidi. Järjekorrast olenemata peab tulemus olema selline, nagu tehingud toimuksid järjestikku, üksteise järel.
Tehingute tüübid
Rakendusvaldkondade põhjal:
- Jaotamata vs. jaotatud.
- Kompenseerivad tehingud.
- Tehingute ajastus.
- Veebipõhine vs partiipõhine.
Toimingute põhjal:
- Kaheastmeline.
- Piiratud.
- Tegevusmudel.
Struktuuri põhjal:
- Lamedad ehk lihtsad tehingud: koosnevad primitiivsete toimingute jadast, mis täidetakse algus- ja lõpp-toimingu vahel.
- Pesastatud tehingud: tehing, mis sisaldab teisi tehinguid.
- Töövoog.
Mis on ajakava?
Ajakava on protsess, mille käigus luuakse mitu paralleelset tehingut korraga ja neid ükshaaval täidetakse. See peaks säilitama käskude järjestuse igas tehingus. Kui kaks tehingut täidetakse samaaegselt, võib ühe tehingu tulemus mõjutada teise tehingu 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.
Paralleeltäitmine andmebaasis on vältimatu. Kuid paralleeltäitmine on lubatud, kui samaaegselt täidetavate tehingute vahel on ekvivalentsusseos. Seda ekvivalentsust on kolme tüüpi.
Tulemuste samaväärsus: Kui kaks ajakava kuvavad pärast täitmist sama tulemust, nimetatakse seda tulemustega samaväärseks ajakavaks. Need võivad pakkuda sama tulemust mõne väärtuse puhul ja erinevaid tulemusi teise väärtuste komplekti puhul. Näiteks üks tehing uuendab toote kogust, samas kui teine uuendab kliendi andmeid.
Vaata samaväärsust: Vaate ekvivalentsus ilmneb siis, kui mõlema ajakava tehingud sooritavad sarnase toimingu. Näiteks lisab üks tehing toote üksikasjad tootetabelisse, teine aga arhiivitabelisse. Tehing on sama, aga tabelid on erinevad.
Konfliktide samaväärsus: Sellisel juhul uuendavad või vaatavad kaks tehingut sama andmekogumit. Tehingute vahel on konflikt, kuna täitmisjärjekord mõjutab väljundit.
Mis on serialiseeritavus?
Serialiseeritavus on protsess, mille käigus otsitakse samaaegset ajakava, mille väljund on võrdne järjestikuse ajakavaga, kus tehingud täidetakse üksteise järel. Sõltuvalt ajakava tüübist on kahte tüüpi serialiseeritavust:
- Konfliktide serialiseeritavus.
- Vaata serialiseeritavust.
Need kaks erinevad selle poolest, kui rangelt nad samaväärsust hindavad, nagu allpool kokku võetud.
| Aspekt | Konfliktide järjestatavus | Vaate serialiseeritavus |
|---|---|---|
| Alus | Vastuoluliste toimingute järjekord | Lugemis- ja kirjutamissuhted |
| test | Eelistusgraaf peab olema atsükliline | Vaate ekvivalentsus jadagraafikuga |
| Rangus | Rangem alamhulk | Laiem, hõlmab pimekirjutusi |
| Kontrollimise hind | Tõhus | Arvutuslikult keeruline |
Iga konfliktide serialiseeritav ajakava on ka vaatamiseks serialiseeritav, aga mitte vastupidi, mistõttu on konfliktide serialiseeritavus praktiline test, mida andmebaasisüsteem rakendab.

