stringtranslate.com

Atomicidad (sistemas de bases de datos)

En los sistemas de bases de datos , la atomicidad ( /ˌætəˈmɪsəti /; del griego antiguo: ἄτομος, romanizado:  átomos, lit. 'indivisible') es una de las propiedades de transacción ACID ( atomicidad , consistencia , aislamiento , durabilidad ) . Una transacción atómica es una serie indivisible e irreducible de operaciones de base de datos de manera que todas ocurren o ninguna ocurre . [ 1 ] Una garantía de atomicidad evita que se produzcan actualizaciones parciales de la base de datos, porque pueden 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 progreso. En un momento dado, aún no ha sucedido, y en el siguiente ya ha ocurrido en su totalidad (o no ha sucedido nada si la transacción se canceló en progreso).

Un ejemplo de una transacción atómica es una transferencia monetaria de la cuenta bancaria A a la cuenta B. Consiste en 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 la base de datos permanezca en un estado consistente , es decir, no se pierde ni se crea dinero si alguna de esas dos operaciones falla. [2]

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 para 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 manera 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 bloqueo ; 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 una transacción ilegal.

Como resultado de esto, no detectar una violación y revertir la transacción adjunta puede causar una falla de aislamiento o de consistencia.

Implementación

Por lo general, 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 produjeran cambios ( lectura-copia-actualización ). Varios sistemas de archivos han desarrollado métodos para evitar la necesidad de mantener múltiples copias de datos, mediante el uso de un registro en diario (consulte el sistema de archivos con registro en diario ). Las bases de datos suelen implementar esto utilizando alguna forma de registro/registro en diario para realizar un seguimiento de los cambios. El sistema sincroniza los registros (a menudo los metadatos ) según sea necesario después de que se hayan realizado correctamente los cambios. Posteriormente, la recuperación de 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 del sistema de archivos, los sistemas compatibles con POSIX proporcionan llamadas al sistema como open(2)y flock(2)que permiten a las aplicaciones abrir o bloquear 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 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. [ cita requerida ]

Véase también

Referencias

  1. ^ "Operación atómica". Biblioteca web. 25 de noviembre de 2003. Consultado el 23 de marzo de 2011. Operación durante la cual un procesador puede leer una ubicación y escribirla simultáneamente en la misma operación de bus . Esto evita que cualquier otro procesador o dispositivo de E/S escriba o lea la memoria hasta que se complete la operación.
  2. ^ Amsterdam, Jonathan. "Atomic File Transactions, Part 1". O'Reilly . Archivado desde el original el 2016-03-03 . Consultado el 28 de febrero de 2016 .