ACID védi adatbázisadatait
Az adatbázis-tervezés ACID-modellje az adatbázis-elmélet egyik legrégebbi és legfontosabb fogalma. Négy olyan célt tűz ki előtérbe, amelyet minden adatbázis-kezelő rendszernek törekednie kell: az atomosság, a konzisztencia, az elszigeteltség és a tartósság. Az a relációs adatbázis, amely nem felel meg a négy cél közül bármelyiknek, nem tekinthető megbízhatónak. Az ilyen tulajdonságokkal rendelkező adatbázis ACID-kompatibilisnek tekinthető.
ACID meghatározva
Vessünk egy pillanatot, hogy részletesen megvizsgáljuk az egyes jellemzőket:
- Az atomicitás kimondja, hogy az adatbázis-módosításoknak "mindent vagy semmit" követniük kell. Minden tranzakció azt mondják, hogy atomos. Ha a tranzakció egy része nem sikerül, az egész tranzakció sikertelen. Rendkívül fontos, hogy az adatbázis-kezelő rendszer minden egyes DBMS, operációs rendszer vagy hardverhiba ellenére fenntartja az ügyletek atom jellegét.
- Az egységesség azt mondja ki, hogy csak az érvényes adatok kerülnek be az adatbázisba. Ha valamilyen oknál fogva végrehajt egy tranzakció, amely megsérti az adatbázis következetességi szabályait, akkor az egész tranzakció visszahúzódik, és az adatbázis visszaállítható egy olyan állapotba, amely összhangban áll ezekkel a szabályokkal. Másrészt, ha egy tranzakció sikeresen végrehajtásra kerül, akkor az adatbázisból egy olyan állapotba kerül, amely megfelel a szabályoknak egy másik államba, amely szintén összhangban van a szabályokkal.
- Az elkülönítés megköveteli, hogy a többszörös tranzakciók, amelyek egyidejűleg előfordulnak, nem befolyásolják egymás végrehajtását. Például, ha Joe egy ügyféllel egy adott ügyféllel egyidejűleg kiad egy tranzakciót, miközben Mary más tranzakciót bocsát ki, mindkét ügyletnek az adatbázisban elszigetelt módon kell működnie. Az adatbázisnak végre kell hajtania Joe teljes tranzakcióját mielőtt végrehajtaná Maryét, vagy fordítva. Ez megakadályozza, hogy a Joe tranzakciója olvassa el a Mary tranzakciójának mellékhatásaként keletkező köztes adatokat, amelyek végül nem lesznek elkötelezve az adatbázisban. Megjegyezzük, hogy az elkülönítési tulajdonság nem biztosítja, hogy melyik tranzakció hajt végre először - csupán azt, hogy az ügyletek nem zavarják egymást
- A tartósság biztosítja, hogy az adatbázisba vont minden tranzakció ne veszítse el. A tartósságot olyan adatbázis-mentések és tranzakciós naplók használatával biztosítják, amelyek megkönnyítik az elkövetett tranzakciók visszaállítását a későbbi szoftveres vagy hardverhibák ellenére.
Hogyan működik az ACID a gyakorlatban?
Az adatbázis-kezelők számos stratégiát alkalmaznak az ACID érvényesítésére.
Az atomicitás és a tartósság érvényesítésére használatos az írási naplózás (WAL), amelyben a tranzakciós részleteket először egy naplóba írják, amely mind az újratöltést, mind az adatok visszavonását foglalja magában. Ez biztosítja, hogy bármilyen adatbázis hiba esetén az adatbázis ellenőrizze a naplót, és hasonlítsa össze annak tartalmát az adatbázis állapotával.
Az atomosság és a tartósság kezelésére használt másik módszer az árnyékképzés , amelyben az árnyéklapot az adatok módosítása során hozzák létre. A lekérdezés frissítései az árnyéklapra vannak írva, nem pedig az adatbázisban lévő valós adatokhoz. Maga az adatbázis csak akkor módosul, ha a szerkesztés befejeződött.
Egy másik stratégiát kétfázisú elkötelezési protokollnak neveznek, ami különösen hasznos az elosztott adatbázisrendszerekben. Ez a protokoll elválasztja a kérelmet az adatok két fázisra történő módosítására: egy lekötési kérelem fázisát és egy elkövetési fázist. A kérelem fázisában minden, a tranzakció által érintett hálózaton található DBMS-nek meg kell erősítenie, hogy megkapták és képesek voltak végrehajtani a tranzakciót. Miután minden releváns DBMS-ből megerősítést kaptunk, az elkövetési fázis befejeződik, amelyben az adatokat ténylegesen módosítottuk.