Articulo de referencia

Transacción distribuida

Una transacción distribuida opera dentro de un entorno distribuido , que generalmente involucra múltiples nodos en una red, dependiendo de la ubicación de los datos. Un aspecto ...

Una transacción distribuida opera dentro de un entorno distribuido , que generalmente involucra múltiples nodos en una red, dependiendo de la ubicación de los datos. Un aspecto clave de las transacciones distribuidas es la atomicidad , que garantiza que la transacción se complete en su totalidad o no se ejecute en absoluto. Es fundamental señalar que las transacciones distribuidas no se limitan a las bases de datos . [ 1 ]

The Open Group , un consorcio de proveedores, propuso el modelo de procesamiento de transacciones distribuidas X/Open (X/Open XA), que se convirtió en un estándar de facto para el comportamiento de los componentes del modelo de transacciones.

Las bases de datos son recursos transaccionales comunes y, a menudo, las transacciones abarcan varias de ellas. En este caso, una transacción distribuida puede considerarse una transacción de base de datos que debe sincronizarse (o proporcionar propiedades ACID ) entre múltiples bases de datos participantes distribuidas en distintas ubicaciones físicas. La propiedad de aislamiento (la I de ACID) supone un reto especial para las transacciones entre múltiples bases de datos, ya que la propiedad de serializabilidad (global) podría verse comprometida, incluso si cada base de datos la proporciona (véase también serializabilidad global ). En la práctica, la mayoría de los sistemas de bases de datos comerciales utilizan el bloqueo estricto de dos fases (SS2PL) para el control de concurrencia , lo que garantiza la serializabilidad global si todas las bases de datos participantes lo emplean.

Un algoritmo común para garantizar la correcta finalización de una transacción distribuida es la confirmación en dos fases (2PC). Este algoritmo se suele aplicar a actualizaciones que pueden confirmarse en un breve periodo de tiempo, que oscila entre unos pocos milisegundos y un par de minutos.

También existen transacciones distribuidas de larga duración, como por ejemplo, la reserva de un viaje, que incluye un vuelo, un coche de alquiler y un hotel. Dado que la confirmación del vuelo puede tardar hasta un día, la confirmación en dos fases no es aplicable, ya que bloquearía los recursos durante ese tiempo. En este caso, se utilizan técnicas más sofisticadas que implican múltiples niveles de deshacer. Del mismo modo que se puede deshacer la reserva del hotel llamando a recepción y cancelándola, se puede diseñar un sistema para deshacer ciertas operaciones (a menos que se hayan finalizado de forma irreversible).

En la práctica, las transacciones distribuidas de larga duración se implementan en sistemas basados ​​en servicios web . Generalmente, estas transacciones utilizan los principios de transacciones compensatorias , optimismo y aislamiento sin bloqueo. El estándar X/Open no contempla las transacciones distribuidas de larga duración.

Varias tecnologías, entre ellas Jakarta Enterprise Beans y Microsoft Transaction Server, son totalmente compatibles con los estándares de transacciones distribuidas.

Sincronización

En las arquitecturas orientadas a eventos , las transacciones distribuidas se pueden sincronizar mediante el uso del paradigma de solicitud-respuesta y se puede implementar de dos maneras: [ 2 ]

  • Se crean dos colas separadas : una para las solicitudes y otra para las respuestas. El productor del evento debe esperar hasta recibir la respuesta.
  • Crear una cola efímera dedicada para cada solicitud.

Véase también

Referencias

  1. Gray, Jim. Conceptos y técnicas de procesamiento de transacciones . Morgan Kaufmann. ISBN 9780080519555.
  2. Richards, Mark. Fundamentos de la arquitectura de software: Un enfoque de ingeniería . O'Reilly Media. ISBN 978-1492043454.
  • "Transacciones de servicios web" . Archivado del original el 11 de mayo de 2008. Consultado el 2 de mayo de 2005 .
  • "Aspectos básicos del procesamiento de transacciones" . Artículo sobre gestión de transacciones . Archivado del original el 13 de julio de 2018. Consultado el 3 de mayo de 2005 .
  • "Una comparación detallada de los modelos Enterprise JavaBeans (EJB) y Microsoft Transaction Server (MTS)" .

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