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 dichas bases de datos. 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 están distribuidas en 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 serializabilidad 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 finalización correcta de una transacción distribuida es el compromiso de dos fases (2PC). Este algoritmo generalmente se aplica para actualizaciones que pueden confirmarse en un corto período de tiempo, desde un par de milisegundos hasta un par de 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 reservar el vuelo puede tardar hasta un día en obtener una confirmación, el compromiso de dos fases no se aplica aquí, ya que bloqueará los recursos durante este tiempo. En este caso se utilizan técnicas más sofisticadas que implican múltiples niveles de deshacer. De la misma manera que se puede deshacer la reserva de hotel llamando a un mostrador y cancelando la reserva, se puede diseñar un sistema para deshacer determinadas operaciones (a menos que se terminen irreversiblemente).

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 principios de transacciones de compensación , optimismo y aislamiento sin bloqueo. El estándar X/Open no cubre transacciones distribuidas de larga duración. [ cita necesaria ]

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

Ver también

Referencias

Otras lecturas