Articulo de referencia

Procesamiento de transacciones

En informática , el procesamiento de transacciones es el procesamiento de información [ 1 ] que se divide en operaciones individuales e indivisibles llamadas transacciones . Cad...

En informática , el procesamiento de transacciones es el procesamiento de información [ 1 ] que se divide en operaciones individuales e indivisibles llamadas transacciones . Cada transacción debe completarse o fracasar como una unidad completa; nunca puede completarse solo parcialmente.

Por ejemplo, cuando compras un libro en una librería en línea, intercambias dinero (en forma de crédito ) por el libro. Si tu crédito es válido, una serie de operaciones relacionadas garantiza que recibas el libro y la librería reciba tu dinero. Sin embargo, si una sola operación falla durante el intercambio, todo el proceso falla. No recibes el libro y la librería no recibe tu dinero. La tecnología responsable de que el intercambio sea equilibrado y predecible se denomina procesamiento de transacciones . Las transacciones garantizan que los recursos basados ​​en datos no se actualicen permanentemente a menos que todas las operaciones dentro de la unidad transaccional se completen correctamente. Al combinar un conjunto de operaciones relacionadas en una unidad que se completa con éxito o falla por completo, se puede simplificar la recuperación de errores y hacer que la aplicación sea más confiable.

Los sistemas de procesamiento de transacciones constan de hardware y software que alojan una aplicación orientada a transacciones, la cual realiza las operaciones rutinarias necesarias para llevar a cabo un negocio. Algunos ejemplos son los sistemas que gestionan la entrada de pedidos de venta, las reservas de vuelos, la nómina, los registros de empleados, la fabricación y el envío.

Dado que la mayoría de los procesos de transacción actuales, aunque no necesariamente todos, son interactivos, el término suele tratarse como sinónimo de procesamiento de transacciones en línea .

Descripción

El procesamiento de transacciones está diseñado para mantener la integridad de un sistema (normalmente una base de datos o algunos sistemas de archivos modernos ) en un estado conocido y consistente, asegurando que todas las operaciones interdependientes en el sistema se completen correctamente o se cancelen correctamente.

Por ejemplo, consideremos una transacción bancaria típica que implica transferir 700 dólares de la cuenta de ahorros de un cliente a su cuenta corriente. Esta transacción implica al menos dos operaciones separadas en términos informáticos: un débito de 700 dólares en la cuenta de ahorros y un crédito de 700 dólares en la cuenta corriente. Si una operación se realiza correctamente pero la otra no, los registros contables del banco no cuadrarán al final del día. Por lo tanto, debe existir una forma de garantizar que ambas operaciones se realicen correctamente o que ambas fallen, de modo que nunca haya ninguna inconsistencia en la base de datos del banco en su conjunto.

El procesamiento de transacciones vincula múltiples operaciones individuales en una única transacción indivisible, asegurando que todas las operaciones se completen sin errores o que ninguna falle. Si algunas operaciones se completan, pero se producen errores al intentar ejecutar las demás, el sistema de procesamiento de transacciones revierte todas las operaciones (incluidas las exitosas), borrando así todo rastro de la transacción y restaurando el sistema al estado consistente y conocido en el que se encontraba antes de que comenzara el procesamiento. Si todas las operaciones de una transacción se completan con éxito, el sistema la confirma y todos los cambios en la base de datos se vuelven permanentes; una vez hecho esto, la transacción no se puede revertir.

El procesamiento de transacciones protege contra errores de hardware y software que podrían dejar una transacción incompleta. Si el sistema informático falla durante una transacción, el sistema de procesamiento de transacciones garantiza la cancelación de todas las operaciones en las transacciones pendientes.

Generalmente, las transacciones se emiten simultáneamente. Si se superponen (es decir, si necesitan acceder a la misma parte de la base de datos), pueden generarse conflictos. Por ejemplo, si el cliente mencionado tiene 150 dólares en su cuenta de ahorros e intenta transferir 100 dólares a otra persona y, al mismo tiempo, transferir otros 100 dólares a su cuenta corriente, solo una de las dos operaciones tendrá éxito. Sin embargo, forzar el procesamiento secuencial de las transacciones resulta ineficiente. Por lo tanto, las implementaciones concurrentes del procesamiento de transacciones están programadas para garantizar un resultado sin conflictos, similar al que se obtendría al ejecutar las transacciones secuencialmente en cualquier orden (una propiedad denominada serializabilidad ). En nuestro ejemplo, esto significa que, independientemente de qué transacción se haya emitido primero, la transferencia a otra persona o la transferencia a la cuenta corriente tendrá éxito, mientras que la otra fallará.

Metodología

Los principios básicos de todos los sistemas de procesamiento de transacciones son los mismos. Sin embargo, la terminología puede variar de un sistema a otro, y los términos que se utilizan a continuación no son necesariamente universales.

Revertir

Los sistemas de procesamiento de transacciones garantizan la integridad de la base de datos registrando sus estados intermedios a medida que se modifica. Posteriormente, utilizan estos registros para restaurar la base de datos a un estado conocido si una transacción no puede confirmarse. Por ejemplo, el sistema guarda copias de la información de la base de datos antes de que una transacción pueda modificarla (a esto se le denomina a veces imagen previa ). Si alguna parte de la transacción falla antes de confirmarse, estas copias se utilizan para restaurar la base de datos al estado en que se encontraba antes de que comenzara la transacción.

Avanzar

También es posible mantener un registro independiente de todas las modificaciones realizadas a un sistema de gestión de bases de datos (a veces denominado imágenes posteriores ). Esto no es necesario para revertir transacciones fallidas, pero resulta útil para actualizar el sistema de gestión de bases de datos en caso de fallo de la base de datos, por lo que algunos sistemas de procesamiento de transacciones lo incluyen. Si el sistema de gestión de bases de datos falla por completo, debe restaurarse a partir de la copia de seguridad más reciente. Esta copia de seguridad no reflejará las transacciones realizadas desde su creación. Sin embargo, una vez restaurado el sistema, el registro de imágenes posteriores puede aplicarse a la base de datos ( rollforward ) para actualizar el sistema. Cualquier transacción en curso en el momento del fallo puede revertirse. El resultado es una base de datos en un estado coherente y conocido que incluye los resultados de todas las transacciones realizadas hasta el momento del fallo.

Puntos muertos

En algunos casos, dos transacciones pueden intentar acceder simultáneamente a la misma parte de una base de datos durante su procesamiento, impidiendo así su continuación. Por ejemplo, la transacción A puede acceder a la parte X de la base de datos, mientras que la transacción B puede acceder a la parte Y. Si en ese momento la transacción A intenta acceder a la parte Y mientras la transacción B intenta acceder a la parte X, se produce un interbloqueo y ninguna de las transacciones puede avanzar. Los sistemas de procesamiento de transacciones están diseñados para detectar estos interbloqueos. Normalmente, ambas transacciones se cancelan y se revierten, y luego se reinician automáticamente en un orden diferente para evitar que el interbloqueo se repita. En ocasiones, solo una de las transacciones bloqueadas se cancela, se revierte y se reinicia automáticamente tras un breve lapso.

Los interbloqueos también pueden producirse entre tres o más transacciones. Cuantas más transacciones estén involucradas, más difícil será detectarlos, hasta el punto de que los sistemas de procesamiento de transacciones encuentran un límite práctico a los interbloqueos que pueden detectar.

Transacción compensatoria

En sistemas donde los mecanismos de confirmación y reversión no están disponibles o no son deseables, a menudo se utiliza una transacción compensatoria para deshacer las transacciones fallidas y restaurar el sistema a un estado anterior.

Criterios ACID

Jim Gray definió las propiedades de un sistema de transacciones confiable a finales de la década de 1970 bajo el acrónimo ACID : atomicidad, consistencia, aislamiento y durabilidad. [ 1 ]

Atomicidad

Los cambios de estado de una transacción son atómicos: o se producen todos o no se produce ninguno. Estos cambios incluyen modificaciones en la base de datos, mensajes y acciones sobre los transductores.

Consistencia

Consistencia : Una transacción es una transformación correcta del estado. Las acciones realizadas en conjunto no violan ninguna de las restricciones de integridad asociadas al estado.

Aislamiento

Aunque las transacciones se ejecutan simultáneamente, para cada transacción T parece que otras se ejecutaron antes o después de T, pero no ambas cosas.

Durabilidad

Una vez que una transacción se completa con éxito (se confirma), los cambios que haya realizado en la base de datos sobreviven a los fallos y se conservan.

Implementaciones

El software estándar de procesamiento de transacciones , como el Sistema de Gestión de Información de IBM , se desarrolló por primera vez en la década de 1960 y a menudo estaba estrechamente vinculado a sistemas de gestión de bases de datos específicos . La computación cliente-servidor implementó principios similares en la década de 1980 con resultados dispares. Sin embargo, en los últimos años, el modelo distribuido cliente-servidor se ha vuelto considerablemente más difícil de mantener. A medida que el número de transacciones creció en respuesta a diversos servicios en línea (especialmente la Web ), una única base de datos distribuida dejó de ser una solución práctica. Además, la mayoría de los sistemas en línea consisten en un conjunto completo de programas que operan conjuntamente, a diferencia de un modelo estricto cliente-servidor donde un único servidor podría gestionar el procesamiento de transacciones. Hoy en día, existen varios sistemas de procesamiento de transacciones que funcionan a nivel de interprogramas y que se adaptan a grandes sistemas, incluidos los mainframes .

Una iniciativa es el Procesamiento de Transacciones Distribuidas (DTP) de X/Open (véase también la API de Transacciones Java (JTA)). Sin embargo, los entornos de procesamiento de transacciones propietarios, como CICS de IBM , siguen siendo muy populares, aunque CICS ha evolucionado para incluir también estándares abiertos de la industria.

El término procesamiento de transacciones extremas (XTP, por sus siglas en inglés) se utilizaba para describir sistemas de procesamiento de transacciones con requisitos excepcionalmente exigentes, en particular requisitos de rendimiento (transacciones por segundo). Dichos sistemas pueden implementarse mediante arquitecturas distribuidas o en clúster. Su uso se remonta al menos a 2011. [ 2 ] [ 3 ]

Referencias

  1. 1 2 Gray, Jim; Reuter, Andreas. "Procesamiento de transacciones: conceptos y técnicas (Powerpoint)" . Recuperado el 12 de noviembre de 2012 .
  2. Koen Vanderkimpen y Dirk Deridder. "Llevando la atención médica al extremo" . Presentación de Devoxx 2011. Consultado el 18 de marzo de 2017 .
  3. Kevin Roebuck (2011). Procesamiento extremo de transacciones . Lightning Source. ISBN 978-1-74304-266-3.

Lecturas adicionales

  • Gerhard Weikum, Gottfried Vossen, Sistemas de información transaccionales: teoría, algoritmos y práctica del control y la recuperación de la concurrencia , Morgan Kaufmann, 2002, ISBN 1-55860-508-8
  • Jim Gray , Andreas Reuter, Procesamiento de transacciones: conceptos y técnicas, 1993, Morgan Kaufmann, ISBN 1-55860-190-2
  • Philip A. Bernstein, Eric Newcomer, Principios del procesamiento de transacciones, 1997, Morgan Kaufmann, ISBN 1-55860-415-4
  • Ahmed K. Elmagarmid (Editor), Modelos de transacciones para aplicaciones avanzadas de bases de datos, Morgan-Kaufmann, 1992, ISBN 1-55860-214-3
  • Fundamentos del procesamiento de transacciones (1999) Archivado el 18/10/2014 en Wayback Machine
  • Gestión del procesamiento de transacciones para la integridad de la base de datos SQL
  • Procesamiento de transacciones