En los sistemas de bases de datos , la atomicidad ( / ˌ æ t ə ˈ m ɪ s ə t i / ; del griego antiguo : ἄτομος , romanizado : átomos , lit. ' indivisible ' ) es la propiedad de una transacción de base de datos que consiste en una serie indivisible e irreducible de operaciones de base de datos, de modo que o bien todas ocurren, o bien ninguna ocurre. [ 1 ] Es una de las propiedades ACID de las transacciones: Atomicidad, Consistencia , Aislamiento , Durabilidad . Una garantía de atomicidad evita que se produzcan actualizaciones parciales de la base de datos, ya que pueden causar mayores problemas que rechazar toda la serie directamente. En consecuencia, otro cliente de la base de datos no puede observar que una transacción atómica esté en curso: en un momento dado, aún no ha ocurrido, y en el siguiente ya se ha producido por completo (o no ha ocurrido nada si la transacción se canceló en curso).
Un ejemplo de atomicidad de transacción podría ser una transferencia monetaria digital de la cuenta bancaria A a la cuenta B. Consta de dos operaciones: debitar el dinero de la cuenta A y acreditarlo en la cuenta B. Realizar ambas operaciones dentro de una transacción atómica garantiza que la base de datos permanezca en un estado consistente ; si alguna de las operaciones falla, no habrá créditos ni débitos no contabilizados que afecten a ninguna de las cuentas. [ 2 ]
El mismo término también se utiliza en la definición de primera forma normal en sistemas de bases de datos, donde se refiere al concepto de que los valores de los campos pueden no consistir en múltiples valores más pequeños que se puedan descomponer, como una cadena en la que se pueden empaquetar múltiples nombres, números, fechas u otros tipos.
Ortogonalidad
La atomicidad no se comporta de forma completamente ortogonal con respecto a las demás propiedades ACID de las transacciones. Por ejemplo, el aislamiento depende de la atomicidad para revertir la transacción que la contiene en caso de una violación del aislamiento, como un interbloqueo ; la consistencia también depende de la atomicidad para revertir la transacción que la contiene en caso de una violación de la consistencia por parte de una transacción ilegal.
Como resultado de esto, si no se detecta una infracción y no se revierte la transacción correspondiente, se puede producir un fallo de aislamiento o de coherencia.
Implementación
Normalmente, los sistemas implementan la atomicidad proporcionando algún mecanismo para indicar qué transacciones han comenzado y cuáles han finalizado; o bien, manteniendo una copia de los datos antes de que se produzcan cambios ( Lectura-copia-actualización ). Varios sistemas de archivos han desarrollado métodos para evitar la necesidad de mantener múltiples copias de los datos, utilizando el registro de transacciones (véase sistema de archivos con registro de transacciones ). Las bases de datos suelen implementar esto utilizando algún tipo de registro 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 ante fallos ignora las entradas incompletas. Aunque las implementaciones varían según factores como los problemas de concurrencia, el principio de atomicidad —es decir, éxito total o fracaso total— se mantiene.
En última instancia, cualquier implementación a nivel de aplicación depende de la funcionalidad del sistema operativo . A nivel de sistema de archivos, los sistemas compatibles con POSIX proporcionan llamadas al sistema que permiten a las aplicaciones abrir o bloquear un archivo de forma atómica. A nivel de proceso, los hilos POSIX proporcionan primitivas de sincronización adecuadas.open(2)flock(2)
El nivel de hardware requiere operaciones atómicas como Test-and-set , Fetch-and-add , Compare-and-swap o Load-Link/Store-Conditional , 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, es ahora extremadamente raro.
En las bases de datos distribuidas y fragmentadas, la atomicidad se complica por la latencia de la red y la posibilidad de fallos parciales. Si bien los sistemas distribuidos tradicionales suelen emplear protocolos de bloqueo (como 2PC ) para garantizar la atomicidad entre fragmentos, estos pueden generar cuellos de botella en el rendimiento. Investigaciones recientes sobre el consenso de libros mayores distribuidos sugieren modelos alternativos, como la "sincronización trenzada". Esta técnica, utilizada en protocolos como Cerberus, entrelaza las fases de consenso de múltiples fragmentos para garantizar la atomicidad sin un ordenamiento global de todas las transacciones. [ 3 ]
Véase también
Referencias
- ↑ "Operación atómica" . Webopedia. 25 de noviembre de 2003. Consultado el 23 de marzo de 2011.
Operación durante la cual un procesador puede leer y escribir simultáneamente en una ubicación de memoria en la misma operación de bus. Esto impide que cualquier otro procesador o dispositivo de E/S escriba o lea en la memoria hasta que la operación se complete.
- ↑ Amsterdam, Jonathan. "Transacciones de archivos atómicos, parte 1" . O'Reilly . Archivado del original el 3 de marzo de 2016. Consultado el 28 de febrero de 2016 .
- ↑ Hellings, Jelle; Sadoghi, Mohammad (2021). "Cerberus: Procesamiento de transacciones minimalista multi-fragmento resistente a la manipulación bizantina" (PDF) . Actas de la Fundación VLDB . 14 (11): 2230– 2243. doi : 10.14778/3476249.3476274 .
- Gestión de datos
- Procesamiento de transacciones