06.05.2013 Views

Transacciones

Transacciones

Transacciones

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Transacciones</strong><br />

Carlos A. Olarte (carlosolarte@puj.edu.co)<br />

BDII<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Outline<br />

1 <strong>Transacciones</strong><br />

2 Ejecuciones Concurrentes<br />

3 Secuencialidad en Cuanto a Conflictos<br />

4 Secuencialidad en Cuanto a Vistas<br />

5 Recuperabilidad<br />

6 <strong>Transacciones</strong> en SQL<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Transacción<br />

Definición<br />

Una Transacción es un conjunto de operaciones que forman una<br />

única unidad lógica de trabajo. Aunque se realicen varias<br />

operaciones (actualizaciones, consultas, eliminaciones, etc) desde<br />

el punto de vista del usuario la operación es única.<br />

Ejemplos: Transferencia de fondos, Registrar un pago,<br />

matricularse, etc.<br />

La transacción consiste en todas las operaciones que se ejecutan<br />

entre las instrucciones Inicio de Transacción y Fin de Transacción<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Propiedades ACID<br />

Las transacciones deben de cumplir con las siguientes propiedades<br />

(ACID) para garantizar la integridad de los datos:<br />

Atomicidad: Todas las operaciones se realizan o ninguna<br />

Consistencia: Los invariantes de la BD se conservan antes y<br />

después de la ejecución de la transacción<br />

Aislamiento: No importa que se ejecuten transacciones<br />

concurrentemente, desde el punto de vista del usuario lucen<br />

secuenciales (unas no afectan la ejecución de las otras)<br />

Durabilidad: Los cambios comprometidos perduran en el<br />

tiempo<br />

Por que es importante garantizar estas propiedades?<br />

Quien garantiza su cumplimiento?<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Estados de una Transacción<br />

Es posible retroceder una transacción comprometida?<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Ejecuciones Concurrentes<br />

Por qué no permitir solo ejecuciones secuenciales?:<br />

Se hace mejor uso de los recursos de computo<br />

Aumento de la productividad (transacciones / u.tiempo)<br />

Reducción de los tiempos de respuesta<br />

Por qué se deben controlar las ejecuciones concurrentes?<br />

Quién se encarga de esta tarea?<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Conceptos<br />

Planificación: Representan el orden cronológico en el que se<br />

ejecutan las instrucciones de diferentes transacciones<br />

concurrentes. Ej:<br />

Ti<br />

Leer(A)<br />

Escribir(B)<br />

Leer(C)<br />

Tj<br />

Leer(B)<br />

Escribir(C)<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Planificación Secuencial<br />

Una planificación es secuencial si las instrucciones de cada<br />

transacción están juntas y solo inician cuando terminan las de la<br />

transacción anterior. Ej<br />

Ti<br />

Leer(A)<br />

Escribir(B)<br />

Leer(C)<br />

Tj<br />

Leer(B)<br />

Escribir(C)<br />

Ti<br />

Leer(A)<br />

Escribir(B)<br />

Leer(C)<br />

Tj<br />

Leer(B)<br />

Escribir(C)<br />

Cuantas posibles planificaciones secuenciales se pueden generar a<br />

partir de P?<br />

Todas las P. secuenciales que se obtienen mantienen la<br />

consistencia?<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Secuencialidad en Cuanto Conflictos<br />

Se dice que dos instrucción Ii ∈ Ti e Ij ∈ Tj están en conflicto<br />

si están asociadas al mismo recurso y alguna de ellas es<br />

escribir<br />

Si una planificación P se puede transformar en P ′ por medio<br />

de cambios no conflictivos, se dice que P y P ′ son<br />

Equivalentes en Cuanto Conflictos<br />

Ej, son P y P ′ equivalente en C.C?<br />

P<br />

Ti<br />

L(A)<br />

E(B)<br />

L(C)<br />

Tj<br />

E(A)<br />

E(C)<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong><br />

Ti<br />

L(A)<br />

E(B)<br />

L(C)<br />

P ′<br />

Tj<br />

E(A)<br />

E(C)


Secuencialidad en Cuanto Conflictos<br />

Se dice que la planificación P es Secuenciable en Cuanto<br />

Conflictos si existe una planificación secuencial P ′ tal que P y<br />

P ′ son equivalentes en cuanto conflictos<br />

Cuales de las siguientes Planificaciones son SECC?<br />

Ti<br />

P1<br />

Tj<br />

L(A)<br />

E(A)<br />

L(B)<br />

E(B) L(A)<br />

Ti<br />

L(A)<br />

L(B)<br />

P2<br />

Tj<br />

E(B)<br />

E(A)<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong><br />

P3<br />

Ti Tj Tk<br />

E(A)<br />

E(B)<br />

E(C)<br />

L(C)


Comprobación de la secuencialidad en Cuanto Conflictos<br />

Se puede verificar la secuencialidad en cuanto conflictos de una<br />

planificación por medio del siguiente algoritmo:<br />

Construir el grafo de precedencias (G = 〈V , A〉) de P, donde<br />

V lo conforman el conjunto de transacción y ai = 〈ti, tj〉 ∈ A<br />

si existe un par de instrucciones conflictivas entre ti y tj.<br />

Si existe un ciclo en el grafo, P no es secuenciable en cuanto<br />

conflictos<br />

Si no hay ciclos, el orden de las transacciones lo determina el<br />

orden topológico del grafo.<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Equivalencia en Cuanto Vistas<br />

La siguiente planificación es equivalente en cuanto conflictos?<br />

Ti<br />

E(A)<br />

E(A)<br />

P1<br />

Tj<br />

E(A)<br />

En cuanto al resultado observable, aceptaría que P fuera<br />

equivalente a la planificación secuencial 〈Tj, Ti〉<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Continuación<br />

Se dice que P es Equivalente en Cuanto a Vistas a P ′ si:<br />

1 Para todo recurso Q si Ti lee el valor inicial de Q en P lo<br />

debe hacer en P ′<br />

2 Si Ti lee el valor producido por Tj en P, también lo debe<br />

hacer en P ′<br />

3 Si Ti es la última transacción en efectuar E(Q) para cualquier<br />

Q en P, en P ′ también la última escritura de Q la debe<br />

efectuar Ti<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Secuencialidad en cuanto Vistas<br />

La planificación P es Secuenciable en Cuanto Vistas si existe una<br />

planificación secuencial P ′ tal que P y P ′ son equivalentes en<br />

cuanto a vistas<br />

Cuales de las siguientes planificaciones son equivalentes en cuanto<br />

a vistas?<br />

Ti<br />

L(Q)<br />

E(Q)<br />

P1<br />

Tj<br />

E(Q)<br />

E(Q)<br />

Ti<br />

L(Q)<br />

E(B)<br />

P2<br />

Tj<br />

L(B)<br />

E(Q)<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong><br />

P3<br />

Ti Tj Tk<br />

L(Q)<br />

L(M)<br />

E(M)<br />

E(Q)<br />

E(M)<br />

L(Q)<br />

E(M)


Recuperabilidad<br />

Definición<br />

Una planificación es Recuperable si para todo par de transacciones<br />

Ti y Tj tal que Tj lee el valor producido por Ti , la operación de<br />

compromiso de Ti debe ser anterior al compromiso de Tj.<br />

Por ejemplo P no es recuperable<br />

Ti<br />

P<br />

Tj<br />

L(Q)<br />

E(Q) L(Q)<br />

COMMIT<br />

E(B)<br />

COMMIT<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


Planificaciones sin Cascada<br />

Se define Retroceso en Cascada cuando el fallo de un transacción<br />

provoca retrocesos en otras transacciones<br />

Definición<br />

P es una Planificación sin Cascada si para toda Ti, Tj tal que Tj<br />

lee el valor producido por Ti, la lectura de Tj es posterior al<br />

compromiso de Ti<br />

Por ejemplo, P es recuperable pero no es una PSC:<br />

P<br />

Ti Tj Tk<br />

E(A)<br />

L(A)<br />

E(B) E(A)<br />

COMMIT L(A)<br />

COMMIT<br />

COMMIT<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>


<strong>Transacciones</strong> en SQL<br />

Las transacciones se comprometen mediante la sentencia<br />

COMMIT<br />

Las transacciones se retroceden mediante la sentencia<br />

ROLLBACK<br />

Carlos A. Olarte (carlosolarte@puj.edu.co) BDII <strong>Transacciones</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!