Home » PHP » Transacciones atómicas ¿qué son y cuándo se utilizan?

La transacción atómica es un bloque de código que o se ejecuta completamente o no se ejecuta. Un ejemplo en el mundo real: una persona llama por teléfono a un banco para realizar una transferencia bancaria, pero en mitad de la conversación la línea se corta; entonces si la operación fuese atómica, la transferencia no se debería realizar, ya que la transacción total no ha llegado hasta el final.

Es necesario este modelo de transacción cuando un el sistema consta de varios procesos independientes que pueden fallar aleatoriamente. Este modelo debe manejar de forma transparente los errores, y dejar el sistema como estaba al inicio en caso de errores.

Una aplicación concreta de transacción atómica a los sistemas de gestión es el caso de grabar e imprimir un albarán (shipping slip). El proceso total consta generalmente de los siguientes subprocesos:

  • Grabar los datos del albarán.
  • Actualizar el stock físico de los productos incluidos en el albarán.
  • Recalcular el valor del almacén y/o precio medio de los productos.
  • Actualizar el stock previsto de los productos incluidos en el albarán.
  • Actualizar el riesgo del cliente.
  • Imprimir el albarán.
  • Actualizar el estado del albarán.

El proceso total debe considerarse como una transacción atómica, ya que debe realizarse en su totalidad; si se produjera un error en algún paso intermedio, el sistema debería deshacer los pasos realizados y revertir su estado al estado inicial. Por ejemplo, si el sistema falla al actualizar el riesgo del cliente y la transacción no es atómica, la base de datos quedará inconsistente, ya que el valor de las mercancías entregadas (¡menos los pagos!) no corresponde con el riesgo.

Una explicación más detallada de las transacciones atómicas puede encontrarse en este enlace, que además es un excelente recurso sobre el diseño de bases de datos y diagramas entidad-relación.

Deja un comentario

Si te gustó este Artículo, lo mejor que puedes hacer por el Blog es compartirlo en tu Red Social y darle un "Me Gusta".

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>