ACID model návrhu databáze je důležitým konceptem teorie databáze. Stanovuje čtyři cíle, které musí systém správy databáze dosáhnout: atomicita, konzistence, izolace a trvanlivost. Relační databázi, která nesplňuje žádný z těchto čtyř cílů, nelze považovat za spolehlivou. Naopak databáze, která má tyto vlastnosti, je považována za vyhovující ACID.
KYSELINA, Definováno
Každý ze čtyř atributů ACID se řídí přesně definovanými standardy:
- Atomicity uvádí, že úpravy databáze se musí řídit pravidlem vše nebo nic. Každá transakce je považována za atomový. Pokud selže jedna část transakce, selže celá transakce. Je zásadní, aby si systém správy databáze zachoval atomovou povahu transakcí, a to i přes jakékoli selhání systému DBMS, operačního systému nebo hardwaru.
- Konzistence uvádí, že do databáze budou zapsána pouze platná data. Pokud je provedena transakce, která porušuje pravidla konzistence databáze, je celá transakce vrácena zpět a databáze je obnovena do stavu konzistentního s těmito pravidly. Na druhou stranu, pokud se transakce úspěšně provede, převezme databázi z jednoho stavu, který je v souladu s pravidly, do jiného stavu, který je také v souladu s pravidly.
- Izolace vyžaduje, aby více transakcí, které se vyskytují současně, nemělo vliv na provádění navzájem. Například pokud Joe vystaví transakci s databází ve stejnou dobu, kdy Mary vystaví jinou transakci, obě transakce by měly v databázi fungovat izolovaným způsobem. Databáze by měla provést Joeovu transakci před provedením Mary nebo naopak. To zabrání Joeově transakci ve čtení mezilehlých dat vytvořených jako vedlejší účinek části Maryiny transakce, která nakonec nebude potvrzena do databáze. Vlastnost izolace nezajišťuje, která transakce se provede jako první – pouze to, že transakce nebudou vzájemně rušit.
- Trvanlivost zajišťuje, že se neztratí žádná transakce potvrzená do databáze. Trvanlivost je zajištěna pomocí zálohování databází a protokolů transakcí, které usnadňují obnovení potvrzených transakcí navzdory následným selháním softwaru nebo hardwaru.
Jak ACID funguje v praxi
Správci databází používají k vymáhání ACID několik strategií. Jednou ze strategií používaných k vynucení atomicity a odolnosti je protokolování dopředu, ve kterém je jakýkoli detail transakce nejprve zapsán do protokolu, který obsahuje jak informace o vrácení, tak o vrácení zpět. Tento přístup zajišťuje, že při selhání databáze může databáze zkontrolovat protokol a porovnat jeho obsah se stavem databáze. Další metodou používanou k řešení atomicity a trvanlivosti je stínování, ve kterém je vytvořena stínová stránka, když mají být data upravena. Aktualizace dotazu se zapisují spíše na stínovou stránku než na skutečná data v databázi. Databáze se upraví až po dokončení úprav. Další strategie se nazývá dvoufázové potvrzení protokol, zvláště užitečný v distribuovaných databázových systémech. Tento protokol odděluje požadavek na úpravu dat do dvou fází: fáze potvrzení a žádosti a fáze potvrzení. Ve fázi požadavku musí všechny DBMS v síti, které jsou ovlivněny transakcí, potvrdit, že je přijaly, a mít kapacitu k provedení transakce. Jakmile je přijato potvrzení od všech příslušných DBMS, je dokončena fáze potvrzení, ve které jsou data upravena. Model ACID není jediným přístupem ke správě dat. Model BASE funguje dobře s nestrukturovanými daty.