logo

Propietats d'àcid en DBMS

Les transaccions són operacions fonamentals que ens permeten modificar i recuperar dades. Tanmateix, per garantir la integritat d'una base de dades, és important que aquestes transaccions s'executin de manera que es mantingui la coherència, la correcció i la fiabilitat, fins i tot en cas de fallades/errors. Aquí és on entren en joc les propietats àcids.

ACID significa Atomicity Consistency Isolation and Durability.



Propietats de l'àcid:

propietats_àcides' title=

Hi ha quatre propietats de l'ÀCID

1. Atomicitat

Atomicitat significa que una transacció és tot o res, o totes les seves operacions tenen èxit o no s'aplica cap. Si alguna part falla, la transacció sencera es revertirà per mantenir la base de dades coherent.

  • Compromís : Si la transacció té èxit, els canvis s'apliquen permanentment.
  • Avortar/revertir : Si la transacció falla, es descartaran els canvis realitzats durant la transacció.

Exemple : Considereu la següent transacció T consistent en T1 i T2 : Transferència de 0 des del compte X donar comptes I .

atomicitat' loading='lazy' title=Atomicitat

Si la transacció falla després de completar la T1 però abans de completar la T2, la base de dades es deixaria en un estat inconsistent. Amb Atomicity, si alguna part de la transacció falla, tot el procés es torna al seu estat original i no es fan canvis parcials.



La coherència en les transaccions significa que la base de dades ha de romandre en un estat vàlid abans i després d'una transacció.

programes d'exemple java
  • Un estat vàlid segueix totes les restriccions i relacions definides de les regles (com les claus estranyes de claus primàries, etc.).
  • Si una transacció infringeix alguna d'aquestes regles, es revertirà per evitar dades corruptes o no vàlides.
  • Si una transacció dedueix diners d'un compte però no els afegeix a un altre (en una transferència), infringeix la coherència.

Exemple : Suposem que la suma de tots els saldos d'un sistema bancari ha de ser sempre constant. Abans d'una transferència, el saldo total és 0. Després de la transacció, el saldo total hauria de romandre en 0. Si la transacció falla al mig (com actualitzar un compte però no l'altre), el sistema hauria de mantenir la seva consistència revertint la transacció.

Total abans que es produeixi T = 500 + 200 = 700 .
Total després que es produeixi T  = 400 + 300 = 700 .



aïllament' loading='lazy' title=Coherència

3. Aïllament

L'aïllament garanteix que les transaccions s'executen de manera independent sense afectar-se mútuament. Els canvis fets per una transacció no són visibles per a altres fins que es comprometen.

Assegura que el resultat de les transaccions concurrents sigui el mateix que si s'executessin una darrere l'altra evitant problemes com:

cua java
  • Dirty reads: lectura de dades no compromeses
  • Lectures no repetibles: canvis de dades entre dues lectures
  • Phantom diu: apareixen noves files durant una transacció

Exemple : Considereu dues transaccions T i T''.

  • X = 500 Y = 500
aïllament' loading='lazy' title=Aïllament

Explicació:

1. Transacció T:

  • T vol transferir de X a Y.
  • T llegeix I (valor: 500) dedueix de X (nou X = 450) i suma a Y (nou Y = 550).

2. Transacció T'':

  • T' ' comença i es llegeix X (500) i Y (500).
  • Calcula la suma: 500 + 500 = 1000.
  • Mentrestant, els valors de X i Y canvien a 450 i 550 respectivament.
  • Per tant, la suma correcta hauria de ser 450 + 550 = 1000.
  • L'aïllament garanteix que T'' no llegeix valors obsolets mentre una altra transacció (T) encara està en curs.
  • Les transaccions haurien de ser independents i T'' hauria d'accedir als valors finals només després de la confirmació de T.
  • Això evita resultats inconsistents com la suma incorrecta calculada per T''.

4. Durabilitat:

La durabilitat garanteix que un cop confirmada una transacció, els seus canvis es guardin permanentment encara que el sistema falli. Les dades s'emmagatzemen en memòria no volàtil perquè la base de dades pugui recuperar el seu darrer estat compromès sense perdre dades.

Exemple : Després de transferir diners amb èxit del compte A al compte B, els canvis s'emmagatzemen al disc. Fins i tot si hi ha un error immediatament després de la confirmació, els detalls de la transferència seguiran intactes quan el sistema es recuperi garantint la durabilitat.

Com afecten les propietats d'ACID el disseny i el funcionament del SGBD

El Les propietats d'ACID en la seva totalitat proporcionen un mecanisme per garantir la correcció i la coherència d'una base de dades de manera que cada transacció és un grup d'operacions que actua com una unitat única produeix resultats coherents, actes aïllats d'altres operacions i les actualitzacions que realitza s'emmagatzemen de manera duradora.

Les propietats d'ACID protegeixen la integritat de les dades d'un SGBD assegurant que les transaccions es completen amb èxit o no deixen rastre si s'interrompen. Eviten que les actualitzacions parcials corrompin les dades i garanteixen que la base de dades només passi entre estats vàlids.

2. Control de concurrència

Les propietats d'ACID proporcionen un marc sòlid per gestionar transaccions concurrents. L'aïllament garanteix que les transaccions no s'interfereixen entre si evitant anomalies de dades, com ara la pèrdua d'actualitzacions, la inconsistència temporal i les dades no compromeses.

3. Recuperació i Tolerància a Falles

La durabilitat garanteix que, fins i tot si un sistema falla, la base de dades es pot recuperar a un estat coherent. Gràcies a les propietats d'atomicitat i durabilitat, si una transacció falla a mig camí, la base de dades es manté en un estat coherent.

Propietat Responsabilitat del manteniment de les propietats
AtomicitatGestor de transaccions
CoherènciaProgramador d'aplicacions
AïllamentGestor de control de concurrència
DurabilitatRecuperació

Casos d'ús crítics de l'àcid a les bases de dades

En les aplicacions modernes, garantir la fiabilitat i la coherència de les dades és crucial. Les propietats àcids són fonamentals en sectors com:

  • Banca : Les transaccions que impliquen dipòsits o retirades de transferències de diners han de mantenir una coherència i durabilitat estrictes per evitar errors i fraus.
  • Comerç electrònic : Garantir que les comandes de recompte d'inventari i els detalls dels clients es gestionen correctament i de manera coherent fins i tot durant un trànsit elevat requereix el compliment d'ACID.
  • Sanitat : els resultats de les proves i les prescripcions dels registres dels pacients han de complir els estàndards de seguretat i integritat de coherència estrictes.