ACID – Atomicity, Consistency, Isolation, Durability

ACID je akronym představující čtveřici klíčových vlastností, které zajišťují spolehlivé a bezpečné zpracování transakcí v relačních databázích (RDBMS). Tyto vlastnosti zaručují, že i při chybách, výpadcích proudu nebo souběžných požadavcích nedojde k poškození nebo nekonzistenci dat.

Význam jednotlivých písmen

  • Atomicity (Atomarita): Transakce je nedělitelná jednotka práce. Buď se provedou všechny její operace úspěšně (transakce se potvrdí – commit), nebo se v případě chyby neprovede žádná a stav databáze se vrátí do původního stavu (rollback). Žádné částečné změny nejsou povoleny.
  • Consistency (Konzistence): Každá úspěšná transakce převede databázi z jednoho platného stavu do jiného platného stavu. Všechna definovaná pravidla, omezení (constraints), triggery a cizí klíče musí být striktně dodrženy. Pokud transakce poruší některou z těchto podmínek, je zrušena.
  • Isolation (Izolace): Souběžně probíhající transakce se vzájemně nesmí ovlivňovat. Výsledek souběžného běhu více transakcí musí být stejný, jako kdyby probíhaly striktně sekvenčně za sebou. Zabraňuje to anomáliím, jako je např. dirty read nebo phantom read.
  • Durability (Trvanlivost / Odolnost): Jakmile je transakce potvrzena (commitnuta), její změny jsou trvale zapsány v databázi a zůstanou zachovány i v případě neočekávaného výpadku systému, selhání hardwaru nebo výpadku proudu (často zajištěno pomocí transakčního žurnálu / WAL – Write-Ahead Logging).

Využití v praxi

Vlastnosti ACID jsou naprosto klíčové v systémech, kde je nepřípustná jakákoli ztráta nebo nekonzistence dat – typicky v bankovnictví (převody peněz mezi účty), e-commerce (rezervace zboží a platby) nebo v účetních systémech. V moderním vývoji se u některých NoSQL databází setkáváme s kompromisem v podobě tzv. modelu BASE, který upřednostňuje dostupnost a výkon před striktním ACID.