Transaktioiden hallinta tietokannan hallinnan järjestelmässä: tilat, tyypit ja ACID
⚡ Älykäs yhteenveto
Tietokannan tapahtumien hallinta käsittelee yhtä tai useampaa tietokannan operaatiota yhtenä loogisena yksikkönä, joka siirtää tietokannan yhdestä yhtenäisestä tilasta toiseen. Se perustuu ACID-ominaisuuksiin, määriteltyihin tapahtumatiloihin ja aikatauluihin pitääkseen samanaikaisen käytön oikein.

Mikä on tietokantatapahtuma?
A Tietokantatapahtuma on tietokannan hallintajärjestelmän looginen prosessointiyksikkö, joka sisältää yhden tai useamman tietokannan käyttöoperaation. Lyhyesti sanottuna tietokannan tapahtumat edustavat minkä tahansa yrityksen reaalimaailman tapahtumia.
Kaikki tietokannan käyttöoperaatiot, joita pidetään tapahtumalausekkeiden alussa ja lopussa, pidetään yhtenä loogisena tapahtumana tietokannan hallintajärjestelmässä. Tapahtuman aikana tietokanta on epäjohdonmukainen. Vasta tapahtuman vahvistamisen jälkeen tila muuttuu yhtenäisestä tilasta toiseen.

Tietoja tietokantatapahtumista
- Tapahtuma on ohjelmayksikkö, jonka suorittaminen voi muuttaa tietokannan sisältöä tai ei.
- DBMS:n tapahtumakonsepti suoritetaan yhtenä yksikkönä.
- Jos tietokantatoiminnot eivät päivitä tietokantaa, vaan vain hakevat tietoja, tämän tyyppistä tapahtumaa kutsutaan vain luku -tapahtumaksi.
- Onnistunut tapahtuma voi muuttaa tietokannan CONSISTENT STATE -tilasta toiseen.
- Tietokannan hallintajärjestelmien tapahtumien on oltava atomisia, yhdenmukaisia, erillisiä ja kestäviä.
- Jos tietokanta oli epäjohdonmukaisessa tilassa ennen tapahtumaa, se pysyisi epäjohdonmukaisessa tilassa tapahtuman jälkeen.
Miksi tarvitset samanaikaisuutta transaktioissa?
Tietokanta on jaettu resurssi. Sitä käyttävät useat käyttäjät ja prosessit samanaikaisesti. Esimerkkejä ovat pankkijärjestelmät, rautatie- ja lentovarausjärjestelmät, osakemarkkinoiden seuranta sekä supermarkettien varastot ja kassat.
Samanaikaisen käytön hallinta voi aiheuttaa ongelmia, kuten:
- Laitteistoviat ja järjestelmän kaatumiset.
- Saman tapahtuman suorittaminen samanaikaisesti, umpikujatai hidas suorituskyky.
Tämän jaetun käyttöoikeuden hallinta on tehtävä samanaikaisuuden hallinta, joka käyttää lukitusta ja aikaleimoja tapahtumien turvalliseen lomittamiseen. Ennen sitä on hyödyllistä tietää, minkä tilojen läpi tapahtuma kulkee.
Liiketoimien tilat
DBMS:n tapahtumakonseptin eri tilat on lueteltu alla:
| Osavaltio | Tuotetiedot |
|---|---|
| Aktiivinen tila | Tapahtuma siirtyy aktiiviseen tilaan, kun suoritusprosessi alkaa. Tämän tilan aikana voidaan suorittaa luku- tai kirjoitusoperaatioita. |
| Osittain sitoutunut | Transaktio siirtyy osittain vahvistettuun tilaan transaktion päättymisen jälkeen. |
| Sitoutunut tila | Kun tapahtuma saavuttaa vahvistettu-tilan, se on suorittanut suorituksen onnistuneesti ja kaikki sen muutokset tallennetaan tietokantaan pysyvästi. |
| Epäonnistunut tila | Tapahtuma katsotaan epäonnistuneeksi, kun jokin tarkistuksista epäonnistuu tai jos tapahtuma keskeytetään sen ollessa aktiivisessa tilassa. |
| Päätetty valtio | Transaktio saavuttaa terminoidun tilan, kun se poistuu järjestelmästä eikä sitä voida käynnistää uudelleen. |
Tutkitaanpa erästä tilasiirtymäkaavio joka korostaa, kuinka tapahtuma liikkuu näiden eri tilojen välillä.
- Kun transaktion suoritus alkaa, siitä tulee aktiivinen. Se voi suorittaa READ- tai WRITE-operaation.
- Kun READ- ja WRITE-toiminnot ovat valmistuneet, tapahtuma saavuttaa osittain vahvistettu -tilan.
- Seuraavaksi joidenkin palautusprotokollien on varmistettava, että järjestelmävirhe ei estä tapahtuman muutosten tallentamista pysyvästi. Jos tämä tarkistus onnistuu, tapahtuma committoidaan ja siirtyy commited-tilaan.
- Jos tarkistus epäonnistuu, tapahtuma siirtyy epäonnistuneeseen tilaan.
- Jos tapahtuma keskeytetään aktiivisessa tilassa, se siirtyy epäonnistuneeseen tilaan. Tapahtuma tulisi peruuttaa, jotta sen kirjoitustoimintojen vaikutus tietokantaan kumotaan.
- Lopetettu tila viittaa tapahtumaan, joka lähtee järjestelmästä.
Mitä ovat ACID-ominaisuudet?
ACID-ominaisuudet käytetään tietokannan eheyden ylläpitämiseen tapahtumien käsittelyn aikana. ACID tietokannan hallintajärjestelmässä on lyhenne sanoista Amyrkyllisyys, Cpysyvyys, Ilohdutusta ja Dkäytettävyyttä.
- Atomicity: Tapahtuma on yksi toimintayksikkö. Joko suoritat sen kokonaan tai et suorita sitä ollenkaan. Osittaista toteutusta ei voi tehdä.
- Johdonmukaisuus: Kun tapahtuma on suoritettu, sen pitäisi siirtyä johdonmukaisesta tilasta toiseen.
- Eristäminen: Transaktio tulisi suorittaa erillään muista transaktioista. Samanaikaisen toteutuksen aikana samanaikaisesti toteutettujen transaktioiden välituloksia ei tulisi asettaa toistensa saataville.
- Kestävyys: Transaktion onnistuneen suorittamisen jälkeen tietokannan muutosten tulisi säilyä, myös järjestelmävikojen sattuessa.
ACID-ominaisuus tietokannan hallinnan järjestelmässä esimerkin avulla
Alla on esimerkki ACID-ominaisuudesta tietokannan hallintajärjestelmässä:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Tapahtuma 1 siirtää 50 dollaria tililtä X tilille Y.
Tapahtuma 2 hyvitetään jokaiselle tilille 10 %:n korkomaksu.
Jos molemmat tapahtumat lähetetään yhdessä, ei ole takeita siitä, että tapahtuma 1 suoritetaan ennen tapahtumaa 2 tai päinvastoin. Järjestyksestä riippumatta tuloksen on oltava ikään kuin tapahtumat tapahtuisivat sarjassa peräkkäin.
Tapahtumatyypit
Sovellusalueiden perusteella:
- Hajauttamaton vs. hajautettu.
- Korvaavat tapahtumat.
- Transaktioiden ajoitus.
- Verkossa vs. eräajo.
Toimien perusteella:
- Kaksivaiheinen.
- Rajoitettu.
- Toimintamalli.
Rakenteen perusteella:
- Yksinkertaiset transaktiot: koostuvat sarjasta alkeellisia operaatioita, jotka suoritetaan aloitus- ja lopetusoperaation välillä.
- Sisäkkäiset tapahtumat: tapahtuma, joka sisältää muita tapahtumia.
- Työnkulku.
Mikä on aikataulu?
Aikataulu on prosessi, jossa luodaan yksi ryhmä useita rinnakkaisia tapahtumia ja suoritetaan ne yksi kerrallaan. Sen tulisi säilyttää käskyjen esiintymisjärjestys kussakin tapahtumassa. Jos kaksi tapahtumaa suoritetaan samanaikaisesti, toisen tapahtuman tulos voi vaikuttaa toisen tapahtuman tulosteeseen.
esimerkki
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Jos tapahtuma 2 suoritetaan ennen tapahtumaa 1, vanhentuneet tiedot tuotteen määrästä luetaan. Siksi aikatauluja tarvitaan.
Rinnakkainen suorittaminen tietokannassa on väistämätöntä. Mutta rinnakkainen suorittaminen on sallittua, kun samanaikaisesti suoritettavien tapahtumien välillä on ekvivalenssirelaatio. Tätä ekvivalenssia on kolmenlaisia.
Tulosten vastaavuus: Jos kaksi aikataulua näyttää saman tuloksen suorituksen jälkeen, sitä kutsutaan tulosekvivalenttiaikatauluksi. Ne voivat tarjota saman tuloksen joillekin arvoille ja eri tuloksia toisille arvoille. Esimerkiksi yksi tapahtuma päivittää tuotemäärän, kun taas toinen päivittää asiakastiedot.
Näytä vastaavuus: Näkymien vastaavuus tapahtuu, kun molempien aikataulujen tapahtumat suorittavat samanlaisen toiminnon. Esimerkiksi yksi tapahtuma lisää tuotetiedot tuotetaulukkoon, kun taas toinen tapahtuma lisää tuotetiedot arkistotaulukkoon. Tapahtuma on sama, mutta taulukot ovat erilaisia.
Konfliktien vastaavuus: Tässä tapauksessa kaksi tapahtumaa päivittää tai tarkastelee samaa datajoukkoa. Tapahtumien välillä on ristiriita, koska suoritusjärjestys vaikuttaa tulosteeseen.
Mitä on serialoitavuus?
Sarjoitettavuus on prosessi, jossa etsitään samanaikaista aikataulua, jonka tuloste on yhtä suuri kuin sarjallinen aikataulu, jossa tapahtumat suoritetaan peräkkäin. Aikataulun tyypistä riippuen sarjoitettavuus jakautuu kahteen tyyppiin:
- Konfliktien sarjallistettavuus.
- Näytä sarjoitettavuus.
Nämä kaksi eroavat toisistaan siinä, kuinka tiukasti ne arvioivat vastaavuutta, kuten alla on tiivistettynä.
| Aspect | Konfliktien sarjallistuvuus | Näytä sarjoitettavuus |
|---|---|---|
| Perusta | Ristiriitaisten toimintojen järjestys | Lue-lähde- ja lopullinen kirjoitussuhteet |
| Testi | Precedence-graafin on oltava asyklinen | Näytä vastaavuus sarja-aikataulun kanssa |
| tiukkuus | Tiukempi, osajoukko | Laajempi, sisältää sokkokirjoitukset |
| Tarkistuksen hinta | Tehokas | Laskennallisesti vaikea |
Jokainen konfliktien sarjoitettava aikataulu on myös katselusarjoitettava, mutta ei päinvastoin, minkä vuoksi konfliktien sarjoitettavuus on käytännön testi, jota tietokannan hallintajärjestelmä käyttää.

