logo

Proprietăți ACID în DBMS

Tranzacțiile sunt operațiuni fundamentale care ne permit să modificăm și să extragem date. Totuși, pentru a asigura integritatea unei baze de date este important ca aceste tranzacții să fie executate într-un mod care să mențină consistența, corectitudinea și fiabilitatea chiar și în cazul unor defecțiuni/erori. Aici intră în joc proprietățile ACIDE.

ACID înseamnă Atomicity Consistency Isolation and Durability.



Proprietățile acidului:

proprietăți_acide' title=

Există patru proprietăți ale acidului

1. Atomicitate

Atomicitatea înseamnă că o tranzacție este totul sau nimic, fie că toate operațiunile sale reușesc, fie nu sunt aplicate niciuna. Dacă o parte eșuează, întreaga tranzacție este anulată pentru a menține baza de date consistentă.

  • Angajează-te : Dacă tranzacția are succes, modificările sunt aplicate permanent.
  • Anulare/Rollback : Dacă tranzacția eșuează, orice modificări efectuate în timpul tranzacției sunt eliminate.

Exemplu : Luați în considerare următoarea tranzacție T constând din T1 şi T2 : Transfer de 0 din cont X a da socoteală ŞI .

atomicitate' loading='lazy' title=Atomicitatea

Dacă tranzacția eșuează după finalizarea T1, dar înainte de finalizarea T2, baza de date ar fi lăsată într-o stare inconsistentă. Cu Atomicity, dacă orice parte a tranzacției eșuează, întregul proces este revenit la starea inițială și nu se fac modificări parțiale.



Consecvența în tranzacții înseamnă că baza de date trebuie să rămână într-o stare validă înainte și după o tranzacție.

Mark Zuckerberg educația
  • O stare validă urmează toate constrângerile și relațiile definite de reguli (cum ar fi cheile primare, cheile externe etc.).
  • Dacă o tranzacție încalcă oricare dintre aceste reguli, este anulată pentru a preveni datele corupte sau nevalide.
  • Dacă o tranzacție deduce bani dintr-un cont, dar nu îi adaugă în altul (într-un transfer), aceasta încalcă consecvența.

Exemplu : Să presupunem că suma tuturor soldurilor dintr-un sistem bancar ar trebui să fie întotdeauna constantă. Înainte de un transfer, soldul total este 0. După tranzacție, soldul total ar trebui să rămână 0. Dacă tranzacția eșuează la mijloc (cum ar fi actualizarea unui cont, dar nu a celuilalt), sistemul ar trebui să-și mențină consistența prin anularea tranzacției.

Total înainte de apariția T = 500 + 200 = 700 .
Total după ce apare T  = 400 + 300 = 700 .



izolare' loading='lazy' title=Consecvență

3. Izolarea

Izolarea asigură că tranzacțiile rulează independent, fără a se afecta reciproc. Modificările efectuate de o tranzacție nu sunt vizibile pentru alții până când nu sunt efectuate.

Se asigură că rezultatul tranzacțiilor simultane este același ca și cum ar fi rulat unul după altul, prevenind probleme precum:

  • Citește murdar: citirea datelor neangajate
  • Citituri nerepetabile: datele se modifică între două citiri
  • Phantom citește: în timpul unei tranzacții apar rânduri noi

Exemplu : Luați în considerare două tranzacții T și T''.

  • X = 500 Y = 500
izolare' loading='lazy' title=Izolare

Explicaţie:

1. Tranzacția T:

  • T vrea să se transfere de la X la Y.
  • T citește ŞI (valoare: 500) deduce din X (nou X = 450) și adaugă la Y (nou Y = 550).

2. Tranzacția T'':

  • T' ' începe și citește X (500) și Y (500).
  • Se calculează suma: 500 + 500 = 1000.
  • Între timp, valorile lui X și Y se schimbă la 450 și, respectiv, 550.
  • Deci suma corectă ar trebui să fie 450 + 550 = 1000.
  • Izolarea asigură că T'' nu citește valori învechite în timp ce o altă tranzacție (T) este încă în curs.
  • Tranzacțiile ar trebui să fie independente și T'' ar trebui să acceseze valorile finale numai după ce T se comite.
  • Acest lucru evită rezultate inconsecvente, cum ar fi suma incorectă calculată de T''.

4. Durabilitate:

Durabilitatea asigură că, odată ce o tranzacție este efectuată, modificările acesteia sunt salvate permanent, chiar dacă sistemul eșuează. Datele sunt stocate într-o memorie nevolatilă, astfel încât baza de date să poată reveni la ultima stare comisă fără a pierde date.

gigabyte vs megaoctet

Exemplu : După transferul cu succes a banilor din Contul A în Contul B, modificările sunt stocate pe disc. Chiar dacă există o blocare imediat după comitere, detaliile transferului vor rămâne intacte atunci când sistemul își revine, asigurând durabilitatea.

Cum influențează proprietățile ACID proiectarea și funcționarea DBMS

The Proprietățile ACID în totalitate oferă un mecanism pentru a asigura corectitudinea și consecvența unei baze de date într-un mod astfel încât fiecare tranzacție să fie un grup de operațiuni care acționează ca o singură unitate produce rezultate consistente, acționează izolat de alte operațiuni și actualizările pe care le face sunt stocate în mod durabil.

Proprietățile ACID protejează integritatea datelor unui DBMS, asigurându-se că tranzacțiile fie sunt finalizate cu succes, fie nu lasă nicio urmă dacă sunt întrerupte. Acestea împiedică actualizările parțiale să corupă datele și se asigură că baza de date trece numai între stări valide.

2. Controlul concurenței

Proprietățile ACID oferă un cadru solid pentru gestionarea tranzacțiilor concurente. Izolarea asigură că tranzacțiile nu interferează între ele, prevenind anomaliile datelor, cum ar fi actualizările pierdute, inconsecvența temporară și datele necommitate.

3. Recuperare și toleranță la erori

Durabilitatea asigură că, chiar dacă un sistem se blochează, baza de date poate reveni la o stare consecventă. Datorită proprietăților Atomicity și Durability, dacă o tranzacție eșuează la jumătatea drumului, baza de date rămâne într-o stare consecventă.

Proprietate Responsabilitatea pentru întreținerea proprietăților
AtomicitateaManager de tranzacții
ConsecvențăProgramator de aplicații
IzolareManager de control al concurenței
DurabilitateRecuperare

Cazuri critice de utilizare pentru ACID în baze de date

În aplicațiile moderne, asigurarea fiabilității și consecvenței datelor este crucială. Proprietățile ACIDE sunt fundamentale în sectoare precum:

  • Bancar : Tranzacțiile care implică transferuri de bani, depuneri sau retrageri trebuie să mențină o consistență strictă și durabilitate pentru a preveni erorile și fraudele.
  • Comerț electronic : Asigurarea faptului că comenzile de numărare a stocurilor și detaliile clienților sunt gestionate corect și consecvent chiar și în timpul traficului ridicat necesită conformitatea ACID.
  • Sănătate : Rezultatele testelor și prescripțiile înregistrărilor pacientului trebuie să respecte standardele stricte de integritate și securitate.