ACID chrání data vaší databáze
Model ACID návrhu databáze je jedním z nejstarších a nejdůležitějších pojmů databázové teorie. Stanovuje čtyři cíle, které musí každý systém řízení databáze usilovat o dosažení: atomicity, konzistence, izolace a trvanlivosti. Relační databáze, která nesplňuje některý z těchto čtyř cílů, nemůže být považována za spolehlivá. Databáze, která má tyto vlastnosti, se považuje za vyhovující požadavkům ACID.
ACID Definováno
Pojďme si chvíli podrobně prozkoumat každou z těchto charakteristik:
- Atomicita uvádí, že modifikace databáze musí splňovat pravidlo "vše nebo nic". Každá transakce je údajně "atomická". Pokud selže jedna část transakce, celá transakce selže. Je důležité, aby systém správy databáze udržoval atomovou povahu transakcí navzdory jakémukoli selhání systému DBMS, operačního systému nebo hardwaru.
- Konzistence uvádí, že do databáze budou zapsány pouze platné údaje. Pokud je z nějakého důvodu provedena transakce, která porušuje pravidla konzistence databáze, celá transakce bude vrácena zpět a databáze bude obnovena do stavu, který je v souladu s těmito pravidly. Na druhou stranu, pokud transakce úspěšně provede, bude mít databázi z jednoho státu, který je v souladu s pravidly, s jiným stavem, který je také v souladu s pravidly.
- Izolace vyžaduje, aby více transakcí, které se vyskytly současně, neovlivnily vzájemné provádění. Například pokud Joe vydává transakci proti databázi současně s Mary vydává jinou transakci, oba transakce by měly operovat v databázi izolovaně. Databáze by měla provádět celou transakci Joe před provedením Maryovy práce nebo naopak. Toto zabraňuje transakci Joe při čtení přechodných dat vytvořených jako vedlejší účinek části transakce společnosti Mary, která se nakonec nebude vztahovat k databázi. Všimněte si, že vlastnost izolace nezaručuje, která operace bude provedena nejprve - pouze to, že transakce nebudou vzájemně ovlivňovat
- Trvanlivost zajišťuje, že veškeré transakce, které jsou vázány na databázi, nebudou ztraceny. Trvanlivost je zajištěna pomocí záloh databází a protokolů transakcí, které usnadňují obnovení oddaných transakcí navzdory následným selháním softwaru nebo hardwaru.
Jak funguje ACID v praxi
Správci databází používají několik strategií k prosazování ACID.
Jeden zvyklý na prosazování atomicity a trvanlivosti je zapisování zápisu dopředu (WAL), ve kterém je nejprve zapsán veškerý detail transakce do protokolu, který zahrnuje jak obnovu, tak i vrácení informací. Tím je zajištěno, že vzhledem k selhání databáze libovolného druhu může databáze kontrolovat protokol a porovnat jeho obsah se stavem databáze.
Další metodou, která se používá k řešení atomicity a trvanlivosti, je stínové stránkování, ve kterém je vytvořena stínová stránka, když mají být data modifikována. Aktualizace dotazu jsou zapsána na stínovou stránku spíše než na skutečná data v databázi. Databáze samotná je upravena pouze po dokončení úpravy.
Další strategie se nazývá protokol dvoufázového potvrzení , obzvláš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ázi žádosti o potvrzení a fázi odběru. Ve fázi žádostí musí všechny DBMS v síti ovlivněné transakcí potvrdit, že je přijaly a mají schopnost provést transakci. Po obdržení potvrzení ze všech příslušných DBMS se dokončí fáze odběru, ve které jsou data skutečně změněna.