stringtranslate.com

Transacción distribuida

Una transacción distribuida es una transacción de base de datos en la que participan dos o más hosts de red. Por lo general, los hosts proporcionan recursos transaccionales , mientras que un administrador de transacciones crea y administra una transacción global que abarca todas las operaciones contra dichos recursos. Las transacciones distribuidas, como cualquier otra transacción , deben tener las cuatro propiedades ACID (atomicidad, consistencia, aislamiento, durabilidad) , donde la atomicidad garantiza resultados de todo o nada para la unidad de trabajo (paquete de operaciones).

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 un par de bases de datos de este tipo. En este caso, una transacción distribuida puede verse como una transacción de base de datos que debe sincronizarse (o proporcionar propiedades ACID ) entre múltiples bases de datos participantes que se distribuyen entre diferentes ubicaciones físicas. La propiedad de aislamiento (la I de ACID) plantea un desafío especial para las transacciones de múltiples bases de datos, ya que la propiedad de serialización (global) podría violarse, incluso si cada base de datos la proporciona (ver también serialización global ). En la práctica, la mayoría de los sistemas de bases de datos comerciales utilizan un bloqueo estricto de dos fases (SS2PL) para el control de concurrencia , lo que garantiza la serialización 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 aplica generalmente a actualizaciones que pueden confirmarse en un período de tiempo breve, que va desde unos pocos milisegundos hasta unos pocos minutos.

También existen transacciones distribuidas de larga duración, por ejemplo, una transacción para reservar un viaje, que consiste en reservar un vuelo, un coche de alquiler y un hotel. Dado que la reserva del vuelo puede tardar hasta un día en recibir una confirmación, la confirmación en dos fases no es aplicable en este caso, ya que bloqueará los recursos durante ese tiempo. En este caso, se utilizan técnicas más sofisticadas que implican varios niveles de deshacer. De la misma forma que se puede deshacer la reserva del hotel llamando a un mostrador y cancelando la reserva, 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 . Por lo general, estas transacciones utilizan los principios de transacciones compensatorias , optimismo y aislamiento sin bloqueo. El estándar X/Open no cubre las transacciones distribuidas de larga duración. [ cita requerida ]

Varias tecnologías, incluidas Jakarta Enterprise Beans y Microsoft Transaction Server, admiten plenamente los estándares de transacciones distribuidas.

Véase también

Referencias

Lectura adicional