Desarrollo de Aplicaciones Web II - Sesión 07: Transacciones

Post on 12-Jun-2015

2.181 views 0 download

description

Una transacción es una o más sentencias que se toman como una unidad (todo termina bien o todo se aborta). Es una unidad lógica de trabajo definida para las reglas del negocio y típicamente incluye al menos una modificación de datos. Además, pasa la base de datosde un estado consistente a otro.

Transcript of Desarrollo de Aplicaciones Web II - Sesión 07: Transacciones

Desarrollo de Aplicaciones Web II

Clase No. 7 – Marzo 18 de 2009

� Una transacción es una o más sentencias que se toman como una unidad (todo termina bien o todo se aborta)

� Una transacción es una unidad lógica de trabajo

� Definida para las reglas del negocio

� Típicamente incluye al menos una modificación de datos

� Pasa la base de datos de un estado consistente a otro

� Una transacción tiene dos posibles salidas:

� Committed▪ Todas las modificaciones quedan en firme

� Rolled back▪ Las modificaciones retornan a su estado inicial

� Proteger los datos de las fallas del software,

hardware, y potencia eléctrica

� Permitir el aislamiento de datos de tal forma

que varios usuarios pueden acceder

simultáneamente a los datos sin interferencia

� Cuando un conjunto de sentencias se debencomportar como una unidad

� Existen dos tipos grandes de transacciones:

� Transacciones Locales: Cuando existe una sola

conexión a una base de datos.

� Transacciones Distribuidas: Son aquellas que

operan en datos distribuidos. Dicho de otra

manera, operan cuando se trabaja con bases de

datos distribuidas (múltiples bases de datos

que forman un todo en la aplicación).

� Tres sentencias básicas definen la

estructura de una transacción:

� Begin

� Commit

� Rollback

� Begin� Inicia la transacción

� Commit� Finaliza la transacción

� Todas las modificaciones quedan en firme

� Rollback termina una transacción

� Deshace las modificaciones que se hayanhecho

� La ejecución continua con la instrucciónsiguiente a rollback

� Se pueden tener transacciones anidadas:

� El begin y commit más externos comienzan y

finalizan las transacciones.

� Las sentencias begin y commit internos solamente

guardan un registro del nivel de anidamiento.

� Cuando se ejecutan rollback anidados sin puntosde grabación:� El rollback deshace todas las transacciones en

progreso, sin importar el nivel de anidamiento del rollback

� Termina la transacción

� La ejecución continúa con la sentencia siguiente al rollback

� El registro de transacciones almacena los efectos de cada insert, update y delete

� El sistema utiliza el registro de transacciones pararehacer las transacciones que se reversaron

� Se registra el comienzo de una transacción, los commits y rollbacks� Si un servidor falla durante una transacción, no hay

registro de un rollback o commit� Durante la recuperación (recovery), las modificaciones en

transacciones sin un registro de rollback o commit no tendrán efecto. Si las modificaciones fueron grabadas en disco, se revertirán.