Atomicidad (sistemas de bases de datos)
En los sistemas de bases de datos, atomicidad (del griego antiguo: ἄτομος, romanizado: átomos, lit. 'indivisible') es uno de los ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad) propiedades de transacción. Una transacción atómica es una serie indivisible e irreducible de operaciones de base de datos de manera que todas ocurren o no ocurre nada. Una garantía de atomicidad evita que las actualizaciones de la base de datos se realicen solo parcialmente, lo que puede causar mayores problemas que rechazar toda la serie por completo. Como consecuencia, otro cliente de base de datos no puede observar que la transacción esté en curso. En un momento, esto aún no ha sucedido, y en el siguiente ya ha ocurrido en su totalidad (o no pasó nada si la transacción se canceló en curso).
Un ejemplo de una transacción atómica es una transferencia monetaria de la cuenta bancaria A a la cuenta B. Consta de dos operaciones, retirar el dinero de la cuenta A y guardarlo en la cuenta B. Realizar estas operaciones en una transacción atómica garantiza que el La base de datos permanece en un estado consistente, es decir, no se pierde ni se crea dinero si alguna de esas dos operaciones falla.
El mismo término también se utiliza en la definición de Primera forma normal en sistemas de bases de datos, donde en cambio se refiere al concepto de que los valores de los campos no pueden consistir en múltiples valores más pequeños que se descompondrán, como una cadena en la que se Se pueden empaquetar nombres, números, fechas u otros tipos.
Ortogonalidad
La atomicidad no se comporta de forma completamente ortogonal con respecto a las otras propiedades ACID de las transacciones. Por ejemplo, el aislamiento se basa en la atomicidad para revertir la transacción adjunta en caso de una violación del aislamiento, como un punto muerto; La coherencia también se basa en la atomicidad para revertir la transacción adjunta en caso de que una transacción ilegal viole la coherencia.
Como resultado de esto, una falla al detectar una infracción y revertir la transacción adjunta puede causar una falla de aislamiento o coherencia.
Implementación
Normalmente, los sistemas implementan Atomicidad proporcionando algún mecanismo para indicar qué transacciones han comenzado y cuáles han terminado; o manteniendo una copia de los datos antes de que se produjera cualquier cambio (lectura-copia-actualización). Varios sistemas de archivos han desarrollado métodos para evitar la necesidad de mantener múltiples copias de datos, utilizando el registro en diario (ver sistema de archivos con registro en diario). Las bases de datos generalmente implementan esto mediante algún tipo de registro/diario para rastrear los cambios. El sistema sincroniza los registros (a menudo los metadatos) según sea necesario después de que los cambios se hayan realizado correctamente. Posteriormente, la recuperación tras fallo ignora las entradas incompletas. Aunque las implementaciones varían dependiendo de factores como los problemas de concurrencia, el principio de atomicidad (es decir, éxito total o fracaso total) permanece.
En última instancia, cualquier implementación a nivel de aplicación depende de la funcionalidad del sistema operativo. A nivel del sistema de archivos, los sistemas compatibles con POSIX proporcionan llamadas al sistema como open(2)
y flock(2)
que permiten que las aplicaciones abran o bloqueen un archivo de forma atómica. A nivel de proceso, los subprocesos POSIX proporcionan primitivas de sincronización adecuadas.
El nivel de hardware requiere operaciones atómicas como Probar y configurar, Obtener y agregar, Comparar e intercambiar o Cargar enlace/Almacenamiento condicional, junto con barreras de memoria. Los sistemas operativos portátiles no pueden simplemente bloquear las interrupciones para implementar la sincronización, ya que el hardware que carece de ejecución concurrente, como hyper-threading o multiprocesamiento, ahora es extremadamente raro.
Contenido relacionado
USENIX
Función de orden superior
Máquina virtual paralela