29.12.2012

Exchange ESE, osa 3


TRANSAKTIO


Johdanto
Ensinmäisessä artikkelissa on mainittu keskeiset lähteet ESE:en liittyen. Varsinaiset artikkelit ovat hyvin niukkasanaisia, mutta mainitut kaksi esitystä selvittävät jonkin verran asiaa syvemmältä. Tosin allekirjoittaneelle niistä herää lähinnä lisää kysymyksiä.

Transaktio
Transaktio on yksinkertaisuudessa toimenpide tai sarja toimenpiteitä (transactions), joilla muokataan fyysistä tietokantaa ts. tehdään muutoksia tietokantasivuihin (page). Tärkeimpiä toimenpiteitä ovat:

  • Insert - Lisätään tauluun uusi tieto esim. viesti.
  • Replace - Päivitetään olemassa oleva tieto esim. kansion viestien määrä.
  • Delete - Poistetaan olemassa oleva tieto esim. viesti.

Toimenpiteet, muutokset eli transaktiot kirjoitetaan ensin lokiin, jonka jälkeen muutokset kirjoitetaan muistista levylle, tietokantaan. Tätä kutsutaan myös nimellä Write ahead logging. Jokainen transaktio toteuttaa ns. ACID-mallia:

  • Atomic (all or nothing) – Joko kaikki toimenpiteet toteutuvat tai jonkun puuttuessa, mikään yksittäinen toimenpide ei toteudu.
  • Consistent – Tietokanta muuttuu eheästä tilasta toiseen eheään tilaan.
  • Isolated – Muutokset eivät ole näkyviä, kunnes toimenpiteet ovat onnistuneesti suoritettu. Jokainen transaktio suoritetaan aina eri aikaan, vaikka niitä näyttäisi olevan useita yhtä aikaan. Näin ollen yksittäinen transaktio (t) suoritetaan aina joko ennen (t) tai jälkeen toisen transaktion (t).
  • Durable – Onnistuneet toimenpiteet tulee pysyä tietokannassa järjestelmän vikaantuessa.