Transacciones locales y distribuidas

Una transacción local es aquella que utiliza un cliente o el TM para proteger el cambio al estado que administra un solo RM. Con transacciones locales, el resource manager es el transaction manager lo que se ilustra en la figura I-8.


Fig. I-8. Transacción local - Arquitectura.

Una transacción local se inicia cuando un cliente le solicita al RM (que actúa como TM) que arranque una. Todo el trabajo que se ejecuta a través de la conexión que el cliente tiene, es tratada por el RM como parte de la transacción y por lo tanto todos los datos que el cliente altera quedan protegidos mientras la transacción está en progreso. Cuando el cliente termina, solicita al RM (en su función de TM) que haga efectiva la transacción (commit) o que la aborte (rollback). Mientras todo esto sucede, el RM mantiene información acerca de la transacción de tal forma que sea posible recuperarse en caso de que el proceso termine inesperadamente.

Una transacción distribuida, en cambio, permite proteger el trabajo que un cliente realiza para cambiar el estado administrado por varios RMs. Puesto que las transacciones distribuidas no son específicas a un RM en particular, es necesario usar un Transaction Manager externo como se muestra en la figura I-9. Una transacción distribuida se inicia cuando un cliente le solicita al TM externo que arranque una. El cliente obtiene del TM una transacción distribuida que presenta a cada RM con el que quiere interactuar. A este procedimiento se le conoce como enlistado (enlistment). Cada RM procesa todo el trabajo que el cliente le envía a través de una conexión enlistada como parte de la transacción distribuida. Como sucede con las transacciones locales, cada RM protege los datos que el cliente altera mientras la transacción esté en progreso. Cuando el cliente termina, solicita al TM que haga efectiva la transacción (commit) o que la aborte (rollback). Terminar una transacción distribuida es más complicado que terminar una transacción local. Puesto que se trata de coordinar las modificaciones al estado de múltiples RMs, un TM utiliza un protocolo de two-phase commit.


Fig. I-9. Transacción distribuida - Arquitectura.