stringtranslate.com

Atomicidad (sistemas de bases de datos)

En los sistemas de bases de datos , la atomicidad ( / ˌ æ t ə ˈ m ɪ s ə t i / ; del griego antiguo : ἄτομος , romanizadoátomos , iluminado. 'indivisible') es uno de los ÁCIDOS ( Atomicidad, Consistencia , Aislamiento , Durabilidad ) propiedades de la transacción . Una transacción atómica es una serie indivisible e irreducible de operaciones de bases de datos de modo que ocurren todas o ninguna . [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 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 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 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 que se descompondrán, como una cadena en la que se incluyen varios nombres, números. , dátiles u otros tipos pueden estar empaquetados.

Ortogonalidad

La atomicidad no se comporta de manera 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, si no se detecta una infracción y se revierte la transacción adjunta, se puede producir un error 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 guardando 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 (consulte 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 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, ahora es extremadamente raro. [ cita necesaria ]

Ver también

Referencias

  1. ^ "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 simultáneamente una ubicación y escribirla 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. ^ Ámsterdam, Jonathan. "Transacciones de archivos atómicos, parte 1". O'Reilly . Archivado desde el original el 3 de marzo de 2016 . Consultado el 28 de febrero de 2016 .