Vlastnosti databází

Každý spolehlivý databázový systém (DBS) musí zaručovat sadu vlastností, které zajistí integritu a spolehlivost dat. Tyto vlastnosti se označují zkratkou ACID:
- Atomicity (Atomicita)
- Consistency (Konzistence)
- Isolation (Izolace)
- Durability (Trvalost)
Pro následující výklad budeme potřebovat ještě zavést termín transakce – tu si představíme, jako sadu databázových operací. Z pohledu uživatele se jedná o nedělitelnou sadu operací, jak záhy zjistíme.
Atomicita – všechno nebo nic
Každá transakce je provedena buďto celá, nebo vůbec. To znamená, že neexistuje žádný mezistav, kdy by se provedla pouze jedna část operací a zbývající část operací nikoliv.
Příklad: Představte si převod peněz z účtu A na účet B. Transakce se skládá z následujících dvou operací:
- odečtení finančních prostředků z účtu A
- přičtení finančních prostředků na účet B
Pokud by došlo například k výpadku systému po první operaci (ale ještě před dokončením druhé operace), vlastnost databáze Atomicita zajistí, že se zruší celá transakce a peníze se tudíž vrátí na účet A. Bilance tak zůstane správná.
Konzistence – udržení integrity dat
Konzistence zajišťuje, že transakce nemůže narušit integritní omezení databáze. Transakce převede databázi z jednoho konzistentního stavu do druhého konzistentního stavu. Databázová pravidla, jako je unikátnost klíčů, kontrola nulových hodnot, či vazba mezi relacemi, zůstávají platná po celou dobu.
Příklad: Databáze má pravidlo, že skladová zásoba zboží nemůže klesnout pod nulu. Pokud by tedy přišel požadavek z aplikace na prodej zboží, jehož zásoba na skladě je nulová, databáze takovouto transakci zamítne – porušovalo by to definované pravidlo konzistence.
Izolace – transakce se neovlivňují navzájem
Izolace znamená, že více současně běžících transakcí se navzájem neovlivňuje. Pro každou transakci to tedy vypadá, jako by v systému běžela samostatně.
Příklad: Představte si situaci, že ve stejnou vteřinu přijde několik požadavků na prodej posledního lístku na koncert Vaší oblíbené kapely. Izolace zajistí, že první transakce se provede celá (tj. uvidí lístek jako volný), kdežto ostatní transakce se již neprovedou (lístky již nejsou k dispozici). Díky tomu nedojde k prodeji jednoho lístku několikrát.
Trvalost – data vždy v bezpečí
Trvalost (durability) zarušuje, že jakmile je transakce potvrzena (úspěšně dokončena), její změny jsou uloženy trvalým způsobem. To znamená, že i v případě výpadku napájení nebo selhání systému se data nepoškodí a po restartu databázového systému (serveru) budou stále k dispozici.
Příklad: Poté, co provedete úspěšnou platbu platební kartou, je transakce do databáze kartové společnosti zapsána trvale. I kdyby tedy následně jejich server spadl, platba zůstane zaznamenána a po jeho opětovném spuštění se data o transakci neztratí.