En el context de les bases de dades, l'atomicitat (de l'idioma grec atomos, que significa "indivisible") és una de les propietats del model ACID (Atomicitat, Consistència, Aïllament i Durabilitat). Aquesta propietat garanteix que una transacció de base de dades es realitzi completament o no es realitzi en absolut.
Definició L'atomicitat dicta que una transacció és una unitat de treball atòmica; és a dir, una sèrie d'operacions que es tracten com un sol bloc indivisible. Si qualsevol part de la transacció falla (per un error de programa, una caiguda de la xarxa o un error de maquinari), tota la transacció s'ha de considerar fallida i l'estat de la base de dades ha de romandre inalterat (com si l'operació mai hagués començat). D'aquesta manera s'evita que les dades quedin en un estat parcial o corrupte.
El concepte "Tot o Res" Èxit (Commit): Quan totes les instruccions de la transacció es completen amb èxit, el sistema executa un commit, fent que els canvis siguin permanents.
Fracàs (Rollback): Si es produeix qualsevol interrupció, el sistema de gestió de bases de dades (SGBD) executa un rollback, desfent qualsevol canvi parcial realitzat per aquesta transacció específica.
Exemple: Transferència bancària L'exemple clàssic per il·lustrar l'atomicitat és una transferència electrònica de diners entre dos comptes bancaris:
Operació A: Restar 100€ del Compte 1.
Operació B: Sumar 100€ al Compte 2.
Si el sistema patís una fallada elèctrica després de l'Operació A però abans de l'Operació B, els 100€ desapareixerien del sistema. L'atomicitat garanteix que el sistema detecti la fallada i, en reiniciar-se, desfaci la resta del Compte 1 si no s'ha pogut confirmar l'abonament al Compte 2.
Mecanismes d'implementació Els SGBD moderns utilitzen principalment dos mètodes per garantir l'atomicitat:
1. Registre de transaccions (Logging) És el mètode més comú. El sistema manté un fitxer de registre (log) on anota totes les accions abans d'aplicar-les a les dades reals.
Write-Ahead Logging (WAL): Garanteix que cap canvi es faci permanent al disc sense que abans s'hagi registrat al log.
En cas de fallada, el sistema llegeix el registre i pot realitzar operacions de UNDO (desfer transaccions no completades) o REDO (tornar a aplicar transaccions confirmades que no s'havien escrit físicament al disc).
2. Shadow Paging Aquest mètode evita escriure directament sobre les dades originals. En lloc d'això, es crea una còpia (pàgina ombra) on es fan les modificacions. Només quan la transacció és un èxit complet, el punter del sistema de fitxers s'actualitza per apuntar a la nova pàgina. Si falla, el punter continua apuntant a la versió original intacta.
Atomicitat en sistemes distribuïts Quan una transacció implica múltiples bases de dades situades en diferents servidors (com una compra internacional), garantir l'atomicitat és més complex. S'utilitzen protocols específics com:
Two-Phase Commit (2PC): Un "coordinador" pregunta a tots els "participants" si estan preparats per confirmar (Fase 1: Voting). Si tots responen afirmativament, el coordinador ordena fer el canvi permanent (Fase 2: Commit). Si un sol participant falla, s'ordena un rollback global.
Relació amb altres propietats ACID Encara que sovint es confonen, l'atomicitat té matisos diferents respecte a les altres sigles:
Vs. Consistència: L'atomicitat assegura que la transacció es faci tota, mentre que la consistència assegura que el resultat final compleixi totes les regles i restriccions de la base de dades.
Vs. Aïllament: L'atomicitat és una propietat "vertical" (dins d'una sola transacció), mentre que l'aïllament és "horitzontal" (com interactuen diverses transaccions simultànies per evitar interferències).
Vegeu també ACID Sistema de gestió de bases de dades
Categoria:Sistemes de gestió de bases de dades