Tietokannan suunnittelun ACID-malli on tärkeä tietokantateorian käsite. Se asettaa neljä tavoitetta, jotka tietokannan hallintajärjestelmän on saavutettava: atomiteetti, johdonmukaisuus, eristys ja kestävyys. Relaatiotietokantaa, joka ei täytä mitään näistä neljästä tavoitteesta, ei voida pitää luotettavana. Sitä vastoin tietokanta, jolla on nämä attribuutit, katsotaan ACID-yhteensopivaksi.
ACID, määritelty
Jokainen neljästä ACID-ominaisuudesta noudattaa selkeästi määriteltyjä standardeja:
- Atomicity sanoo, että tietokannan mukauttamisessa on noudatettava kaikki tai ei mitään -sääntöä. Jokaisen kaupan sanotaan olevan atomi-† Jos osa tapahtumasta epäonnistuu, koko tapahtuma epäonnistuu. On erittäin tärkeää, että tietokannan hallintajärjestelmä säilyttää tapahtumien atomiluonteisuuden DBMS-, käyttöjärjestelmä- tai laitteistovioista huolimatta.
- Johdonmukaisuus tarkoittaa, että tietokantaan kirjoitetaan vain kelvollisia tietoja. Jos suoritetaan tapahtuma, joka rikkoo tietokannan yhdenmukaisuussääntöjä, koko tapahtuma peruutetaan ja tietokanta palautetaan tilaan, joka vastaa näitä sääntöjä. Toisaalta, jos tapahtuma suoritetaan onnistuneesti, se siirtää tietokannan sääntöjen mukaisesta tilasta toiseen tilaan, joka on myös sääntöjen mukainen.
- Eristäminen edellyttää, että useat samaan aikaan tapahtuvat tapahtumat eivät vaikuta toistensa suorittamiseen. Jos Joe esimerkiksi suorittaa tapahtuman tietokantaa vastaan, kun Mary suorittaa toisen tapahtuman, molempien tapahtumien on toimittava erillään tietokannassa. Tietokannan on joko suoritettava Joen tapahtuma ennen Maryn tapahtuman suorittamista tai päinvastoin. Tämä estää Joen tapahtumaa lukemasta välitietoja, jotka on tuotettu sivuvaikutuksena Maryn tapahtumasta, jota ei lopulta sitouduta tietokantaan. Eristysominaisuus ei määritä, mikä tapahtuma suoritetaan ensin, vain sitä, että tapahtumat eivät häiritse toisiaan.
- Kestävyys varmistaa, että jokainen tietokantaan tallennettu tapahtuma ei katoa. Kestävyys varmistetaan tietokannan varmuuskopioiden ja tapahtumalokien avulla, jotka helpottavat tallennettujen tapahtumien palauttamista myöhemmistä ohjelmisto- tai laitteistovioista huolimatta.
Miten ACID toimii käytännössä
Tietokannan ylläpitäjät käyttävät erilaisia strategioita pakottaakseen ACID:n. Yksi atomisuuden ja kestävyyden vahvistamiseen käytetty strategia on: esikirjoita loki, jossa jokainen tapahtumatieto kirjoitetaan ensin lokiin, joka sisältää sekä uudelleen- että kumoamistiedot. Tämä lähestymistapa varmistaa, että tietokantavirheen vuoksi tietokanta voi tarkistaa lokin ja verrata sen sisältöä tietokannan tilaan. Toinen menetelmä, jota käytetään atomisuuden ja kestävyyden käsittelemiseen, on: varjohaku, jossa varjosivu luodaan, kun tietoja on muutettava. Kyselyn päivitykset kirjoitetaan varjosivulle tietokannan todellisten tietojen sijaan. Tietokantaa ei muuteta ennen kuin toiminto on valmis. Toinen strategia on nimeltään kaksivaiheinen sitoutuminen protokolla, joka on erityisen hyödyllinen hajautetuissa tietokantajärjestelmissä. Tämä protokolla jakaa tietojen muutospyynnön kahteen vaiheeseen: commit-request -vaiheeseen ja toimitusvaiheeseen. Pyyntövaiheessa kaikkien tapahtuman kohteena olevan verkon DBMS-järjestelmien on vahvistettava, että ne ovat vastaanottaneet sen ja että heillä on kyky suorittaa tapahtuma. Kun vahvistus on vastaanotettu kaikilta asiaankuuluvilta DBMS-järjestelmiltä, vahvistusvaihe, jossa tietoja muutetaan, on valmis. ACID-malli ei ole ainoa tapa hallita tietoja. BASE-malli toimii hyvin jäsentämättömän tiedon kanssa.