logo

Vlastnosti ACID v DBMS

Transakce jsou základní operace, které nám umožňují upravovat a získávat data. Pro zajištění integrity databáze je však důležité, aby tyto transakce byly prováděny způsobem, který zachovává konzistentní správnost a spolehlivost i v případě selhání / chyb. Zde vstupují do hry vlastnosti ACID.

ACID znamená Atomicity Consistency Isolation and Durability.



Vlastnosti kyseliny:

acid_properties' title=

ACID má čtyři vlastnosti

1. Atomicita

Atomicita znamená, že transakce je všechno nebo nic, buď všechny její operace byly úspěšné, nebo nebyla použita žádná. Pokud některá část selže, celá transakce je vrácena zpět, aby byla databáze konzistentní.

  • Spáchat : Pokud je transakce úspěšná, změny se použijí trvale.
  • Přerušit/Vrátit zpět : Pokud se transakce nezdaří, všechny změny provedené během transakce budou vyřazeny.

Příklad : Zvažte následující transakci T sestávající z T1 a T2 : Převod 0 z účtu X účtovat A .

atomicita' loading='lazy' title=Atomicita

Pokud transakce selže po dokončení T1, ale před dokončením T2, databáze zůstane v nekonzistentním stavu. S Atomicity, pokud některá část transakce selže, je celý proces vrácen do původního stavu a nejsou provedeny žádné dílčí změny.



Konzistence v transakcích znamená, že databáze musí zůstat v platném stavu před a po transakci.

délka pole v jazyce Java
  • Platný stav dodržuje všechna omezení a vztahy definovaných pravidel (jako jsou cizí klíče primárního klíče atd.).
  • Pokud transakce poruší některé z těchto pravidel, je vrácena zpět, aby se předešlo poškození nebo neplatnosti dat.
  • Pokud transakce odečte peníze z jednoho účtu, ale nepřidá je na jiný (při převodu), porušuje to konzistenci.

Příklad : Předpokládejme, že součet všech zůstatků v bankovním systému by měl být vždy konstantní. Před převodem je celkový zůstatek 0. Po transakci by měl zůstat celkový zůstatek 0. Pokud se transakce uprostřed nezdaří (např. aktualizace jednoho účtu, ale nikoli druhého), systém by měl zachovat konzistenci tím, že transakci vrátí zpět.

Celkem, než nastane T = 500 + 200 = 700.
Celkem po výskytu T  = 400 + 300 = 700.



izolace' loading='lazy' title=Konzistence

3. Izolace

Izolace zajišťuje, že transakce probíhají nezávisle, aniž by se navzájem ovlivňovaly. Změny provedené jednou transakcí nejsou viditelné pro ostatní, dokud nejsou potvrzeny.

Zajišťuje, že výsledek souběžných transakcí je stejný, jako kdyby byly spuštěny jedna po druhé, čímž se zabrání problémům, jako jsou:

tostring metoda java
  • Špinavý čte: čtení nezadaných dat
  • Neopakovatelné zní: data se mění mezi dvěma čteními
  • Phantom čte: během transakce se objeví nové řádky

Příklad : Zvažte dvě transakce T a T''.

  • X = 500 Y = 500
izolace' loading='lazy' title=Izolace

Vysvětlení:

1. Transakce T:

  • T chce přejít z X do Y.
  • T čte A (hodnota: 500) odečte od X (nové X = 450) a přidá k Y (nové Y = 550).

2. Transakce T'':

  • T' ' spustí a přečte X (500) a Y (500).
  • Vypočítá součet: 500 + 500 = 1000.
  • Mezitím se hodnoty X a Y změní na 450 a 550.
  • Správný součet by tedy měl být 450 + 550 = 1000.
  • Izolace zajišťuje, že T'' nečte zastaralé hodnoty, zatímco jiná transakce (T) stále probíhá.
  • Transakce by měly být nezávislé a T'' by měl mít přístup ke konečným hodnotám až po potvrzení T.
  • Tím se zabrání nekonzistentním výsledkům, jako je nesprávný součet vypočítaný pomocí T''.

4. Trvanlivost:

Trvanlivost zajišťuje, že jakmile je transakce potvrzena, její změny jsou trvale uloženy, i když systém selže. Data jsou uložena v energeticky nezávislé paměti, takže databáze se může obnovit do posledního potvrzeného stavu bez ztráty dat.

Příklad : Po úspěšném převodu peněz z účtu A na účet B se změny uloží na disk. I když dojde k havárii bezprostředně po potvrzení, podrobnosti o přenosu budou po obnovení systému stále nedotčeny, což zajistí trvanlivost.

Jak vlastnosti ACID ovlivňují návrh a provoz DBMS

The Vlastnosti ACID jako celek poskytují mechanismus pro zajištění správnosti a konzistence databáze takovým způsobem, že každá transakce je skupinou operací, která funguje jako jediná jednotka, produkuje konzistentní výsledky, jedná izolovaně od ostatních operací a aktualizace, které provádí, jsou trvale uloženy.

Vlastnosti ACID zajišťují integritu dat DBMS tím, že zajišťují, že se transakce buď úspěšně dokončí, nebo nezanechají žádné stopy, pokud jsou přerušeny. Zabraňují částečným aktualizacím v poškození dat a zajišťují, že databáze přechází pouze mezi platnými stavy.

2. Kontrola souběžnosti

Vlastnosti ACID poskytují solidní rámec pro správu souběžných transakcí. Izolace zajišťuje, že se transakce vzájemně neovlivňují, čímž se předchází datovým anomáliím, jako je dočasná nekonzistence ztracených aktualizací a nepotvrzená data.

3. Obnova a odolnost proti poruchám

Odolnost zajišťuje, že i v případě selhání systému se databáze může obnovit do konzistentního stavu. Díky vlastnostem Atomicity a Durability, pokud transakce selže uprostřed, databáze zůstává v konzistentním stavu.

Vlastnictví Zodpovědnost za údržbu majetku
AtomicitaSprávce transakcí
KonzistenceAplikační programátor
IzolaceSprávce souběžného řízení
TrvanlivostZotavení

Kritické případy použití pro ACID v databázích

V moderních aplikacích je zásadní zajistit spolehlivost a konzistenci dat. Vlastnosti ACID jsou zásadní v odvětvích, jako jsou:

  • Bankovnictví : Transakce zahrnující peněžní převody, vklady nebo výběry musí zachovávat přísnou konzistenci a trvanlivost, aby se zabránilo chybám a podvodům.
  • Elektronický obchod : Zajištění, že objednávky počítají zásoby a údaje o zákaznících jsou zpracovány správně a konzistentně i při vysokém provozu vyžaduje soulad s ACID.
  • Zdravotnictví : Výsledky testů a předpisy pacientů zaznamenáváme v souladu s přísnými standardy integrity a bezpečnosti.