Skip to main content

Modelul ACID pentru sistemele de management al bazelor de date

David Wilcock, Investigatii revelatoare asupra campului constiintei (Iunie 2025)

David Wilcock, Investigatii revelatoare asupra campului constiintei (Iunie 2025)
Anonim

Modelul ACID al designului bazei de date este unul dintre cele mai vechi și mai importante concepte ale teoriei bazelor de date. Aceasta propune patru obiective pe care fiecare sistem de management al bazelor de date trebuie să le facă pentru a atinge: atomicitatea, consistența, izolarea și durabilitatea. O bază de date relațională care nu reușește să îndeplinească oricare dintre aceste patru obiective nu poate fi considerată fiabilă. O bază de date care posedă aceste caracteristici este considerată ca fiind compatibilă cu ACID.

ACID Definit

Să luăm o clipă pentru a examina detaliile fiecăruia dintre aceste caracteristici:

  • Atomicitate afirmă că modificările bazei de date trebuie să respecte o regulă "totală sau nimic". Fiecare tranzacție se spune că este "atomică". Dacă o parte din tranzacție nu reușește, întreaga tranzacție nu reușește. Este esențial ca sistemul de gestionare a bazelor de date să mențină caracterul atomic al tranzacțiilor, în ciuda oricărui sistem de operare DBMS, a sistemului de operare sau a unei defecțiuni hardware.
  • consecvență afirmă că numai datele valide vor fi scrise în baza de date. Dacă din anumite motive este executată o tranzacție care încalcă regulile de consecvență ale bazei de date, întreaga tranzacție va fi reintrodusă și baza de date va fi restabilită la o stare compatibilă cu acele reguli. Pe de altă parte, dacă o tranzacție se execută cu succes, aceasta va duce baza de date dintr-o stare care este în concordanță cu regulile cu o altă stare care este, de asemenea, conformă cu regulile.
  • Izolare impune ca mai multe tranzacții care au loc în același timp să nu influențeze execuția celeilalte. De exemplu, dacă Joe emite o tranzacție împotriva unei baze de date în același timp în care Mary emite o tranzacție diferită, ambele tranzacții ar trebui să funcționeze pe baza de date într-o manieră izolată. Baza de date ar trebui să efectueze întreaga tranzacție a lui Joe înainte de a executa Mary's sau vice-versa. Aceasta împiedică tranzacția lui Joe să citească date intermediare produse ca efect secundar al unei părți din tranzacția lui Mary, care nu va fi în cele din urmă angajată în baza de date. Rețineți că proprietatea de izolare nu vă asigură care tranzacție se va executa mai întâi - doar că tranzacțiile nu vor interfera una cu cealaltă
  • Durabilitate se asigură că orice tranzacție angajată în baza de date nu va fi pierdută. Durabilitatea este asigurată prin utilizarea copiilor de siguranță ale bazei de date și a jurnalelor de tranzacții care facilitează restaurarea tranzacțiilor angajate, în ciuda oricăror defecțiuni software sau hardware ulterioare.

Cum acționează ACID în practică

Administratorii de baze de date folosesc mai multe strategii pentru a aplica ACID.

Unul folosit pentru a impune atomicitate și durabilitate este înscrierea în scriere înainte (WAL), în care orice detaliu al tranzacției este scris pentru prima dată într-un jurnal care include atât informații privind reluarea, cât și anularea informațiilor. Acest lucru asigură că, dată fiind o eroare a bazei de date de orice fel, baza de date poate verifica jurnalul și poate compara conținutul acestuia cu starea bazei de date.

O altă metodă utilizată pentru a trata atomicitatea și durabilitatea este umbră-paging, în care este creată o pagină de umbră atunci când datele vor fi modificate. Actualizările interogării sunt scrise mai degrabă în pagina de umbră decât în ​​datele reale din baza de date. Baza de date însăși este modificată numai atunci când editarea este finalizată.

O altă strategie este numită comiterea în două faze protocol, folositor în special în sistemele de baze de date distribuite. Acest protocol separă o cerere de modificare a datelor în două faze: o fază de solicitare de comitere și o fază de angajare. În faza de solicitare, toate DBMS-urile dintr-o rețea afectate de tranzacție trebuie să confirme că au primit-o și au capacitatea de a efectua tranzacția. După ce se primește confirmarea din toate DBMS-urile relevante, se completează faza de angajament în care datele sunt efectiv modificate.