Manejo de Transacciones Lic. Bárbara da Silva Sistemas de Bases de Datos Distribuidas - UCV.

Post on 11-Apr-2015

110 views 2 download

Transcript of Manejo de Transacciones Lic. Bárbara da Silva Sistemas de Bases de Datos Distribuidas - UCV.

Manejo de Transacciones

Lic. Bárbara da Silva

Sistemas de Bases de Datos Distribuidas - UCV

Esquema de la Clase

• Definición de Transacción• Modelo de Transacción• Propiedades de una transacción• Implementación de transacciones• Transacción Distribuida• Clasificación de las Transacciones Distribuidas• Modelos de Transacciones Distribuidas

– Tradicional– Transacciones Anidadas

• Modelo del Manejador de Transacciones

Definición de Transacción

Una Transacción es una unidad de trabajo consistente y confiable, formada por una serie de operaciones de lectura y/o escritura sobre la Base de Datos (BD) que transforman el estado de la misma (Date, 1998; Moss, 1985; Ozsü y Valduriez, 1999).

BD en un Estado Consistente

BD en un Estado Consistente

Transacción

Definición de Transacción

Se debe considerar que:

1. La transacción se puede estar ejecutando junto con otras transacciones -> Control de Concurrencia.

2. Durante su ejecución pueden ocurrir fallas. -> Recuperación y Confiabilidad.

Modelo de Transacción

Primitiva Descripción

BEGIN_TRANSACTION Inicio de la transacción

COMMIT Permite que todos los cambios realizados por la transacción sobre la BD permanezcan en la misma y por tanto sean visibles a las demás transacciones

ROLLBACK ó ABORT Deshace todos los cambios realizados sobre la BD, dejándola en su estado inicial

READ Lectura de la Data

WRITE Escritura de la Data

Ejemplo de Transacción

BEGIN_TRANSACTION ReservationREAD ($numVuelo, $fecha, $nombreCliente)EXEC UPDATE Vuelo

SET asientoReservado = asientoReservado + 1WHERE numeroVuelo = $numVueloand fechaVuelo = $fecha;

EXEC INSERT INTO FC (numeroVuelo, fechaVuelo, cNombre,

especial)VALUES ($numVuelo, $fecha, $nombreCliente, null)output (“Reservación Completada”);COMMIT;

END_TRANSACTION

Propiedades de una Transacción

También conocidas como propiedades ACID, debido a las iniciales en inglés de las cuatro propiedades presentadas a continuación:

Atomicidad (Atomicity): Se ejecutan todas las operaciones que forman parte de la transacción o ninguna de las operaciones son ejecutadas (todo o nada).

Durabilidad (Durability). Todos los cambios realizados por una transacción validada deben permanecer en la Base de Datos, a pesar de las fallas

Propiedades de una Transacción

Consistencia (Consistency): Una transacción toma una base de datos consistente, hace operaciones sobre ella y debe dejarla en un estado consistente. Esta propiedad asegura que la transacción transforma el estado de la BD de forma correcta, es decir, deja la Base de Datos en un estado consistente.

Aislamiento (Isolation). Una transacción que se está ejecutando no revela sus resultados a otra transacción concurrente antes de validar, es decir, la ejecución de una transacción no debe interferir con la ejecución de otras transacciones que se estén ejecutando concurrentemente.

El aislamiento asegura que cada transacción vea un estado consistente de la BD

Implementación de transacciones

Espacio de Trabajo Privado

• Se copian los datos en un espacio propio de cada transacción

• La transacción opera sobre su copia privada

• Al finalizar exitosamente la transacción se actualizan en la base de datos

Implementación de transacciones

Registro Previo de actualizaciones (Writeahead Log)

• Las actualizaciones son realizadas directamente en la base de datos.

• Antes de realizar una actualización registra en el log el valor previo del dato y el valor que tomará el dato.

• Se lleva un registro de los cambios realizados.

Transacción Distribuida

Una Transacción distribuida es una transacción que se ejecuta sobre varios nodos (computadores).

La transacción es dividida en partes, donde cada parte es asignada, siguiendo ciertas políticas, a un determinado nodo para ser ejecutada, pudiendo la transacción acceder a datos ubicados en diferentes nodos.

Clasificación de Transacciones Distribuidas

1. Duración de las Transacciones

Transacciones en Línea o de Corta Vida: Posee un tiempo corto de ejecución y acceden a una pequeña porción de la BD. Por ejemplo una transacción bancaria.

Transacciones Batch o de Larga Vida: Transacciones de larga ejecución (minutos, horas o días) y que acceden a una amplia porción de la BD. Como por ejemplo: aplicaciones estadísticas, procesamiento de imágenes, entre otras.

Clasificación de Transacciones Distribuidas

2. Organización de las Operaciones de Lectura y Escritura

General: Las operaciones no tienen un orden específico.

Transacciones en dos Pasos: Todas las lecturas se hacen antes de cualquier escritura.

Restringida o lectura antes de escritura: Un dato es leído antes de que pueda ser modificado.

Clasificación de Transacciones Distribuidas

2. Organización de las Operaciones de Lectura y Escritura

Restringida a dos Pasos: Antes de ser modificado un dato debe ser leído, pero todas las lecturas deben estar antes de todas las escrituras.

Modelo de Acción: Similar al modelo Restringido pero con la característica adicional de que cada par de operaciones <lectura, escritura> debe ser ejecutado atómicamente.

Clasificación de Transacciones Distribuidas

2. Organización de las Operaciones de Lectura y Escritura

Clasificación de Transacciones Distribuidas

3. Estructura

Transacciones Planas (Flat Transaction): La Transacción es un solo bloque de programa, que tiene un único punto de comienzo (begin) y un único punto de terminación (commit o rollback).

Transacciones Anidadas (Nested Transaction): Una Transacción puede estar compuesta a su vez de otras transacciones, es decir que dentro de sus puntos de inicio y fin pueden colocarse una o más transacciones, cuyas transacciones a su vez también pueden ser anidadas.

Modelo Tradicional de Transacciones Distribuidas

El modelo tradicional propone una transacción con una estructura de una Transacción Plana que cumple a cabalidad las propiedades ACID.

Ti = {Op1, Op2, Op3, … , Opn, F}

Donde: Opj, j=1…n: operacionesF: final o terminación de la transacción

Modelo Tradicional de Transacciones Distribuidas

El modelo resulta limitado para aplicaciones que poseen operaciones más complejas y tienen un tiempo de ejecución mucho más largo porque:

• Es más probable de ser interrumpida por fallas.

• Acceden a mucho más datos que una corta, y siguiendo este modelo la transacción mantiene el bloqueo sobre esos datos hasta su terminación

• Mayor probabilidad de interbloqueo.

• No permite la cooperación entre transacciones.

Modelo de Transacciones Anidadas

Una Transacción Anidada es una transacción que se conforma por transacciones, que pueden a su vez ser anidadas.

Las transacciones que se encuentran dentro de otras transacciones son llamadas subtransacciones.

Ti = {T1, T2, … , Tn, F}

Donde:Ti está formada por transacciones (Tj, j=1…n) F: final o terminación de la transacción

Modelo de Transacciones Anidadas

La raíz del árbol es denominada Transacción Raíz ó Top-Level.

Una transacción que tiene subtransacciones es llamada Transacción Madre y sus subtransacciones son sus Transacciones Hijas. Las transacciones que no tiene subtransacciones son llamadas Transacciones Hojas.

Modelo de Transacciones Anidadas

Las transacciones encontradas en el camino desde una subtransacción determinada hasta la raíz del árbol son llamadas Ancestros a dicha subtransacción.

Y aquellas que se encuentran desde la subtransacción hasta las subtransacciones hojas del árbol del cual la subtransacción es raíz son llamadas Descendientes.

Se tienen subtransacciones Vitales y No Vitales. Las Vitales son aquellas subtransacciones que tienen que obligatoriamente validar para que la transacción madre pueda validar y las No Vitales son aquellas que aunque no validen su transacción madre puede validar.

Modelo de Transacciones Anidadas

Ventajas

• Mayor nivel de Concurrencia

• Paralelismo

• Menor Costo en Recuperación

• Modularidad

Modelo de Transacciones Anidadas

Limitaciones

• Es más compleja la administración de transacciones.

• Puesto que las transacciones se pueden anidar con un nivel de profundidad arbitrario, es necesaria una considerable administración para que todo sea correcto.

• No permite la cooperación entre transacciones.

Modelo de Transacciones Anidadas

Reglas de Comportamiento

• Una transacción hija comienza después que su madre y termina antes de la misma.

• Una transacción madre no puede terminar hasta que todas sus hijas hayan sido resueltas, es decir ya hayan terminado. Así se asegura el orden requerido de validación.

• La validación de la subtransacción es condicional a la validación de su madre, es decir que las modificaciones de una subtransacción validada tendrán efecto siempre y cuando su transacción madre valide.

Modelo de Transacciones Anidadas

Reglas de Comportamiento

• Si una subtransacción falla, no necesariamente su transacción madre aborta. Esto depende si la subtransacción que falló es vital para que la transacción madre valide o no.

• El aborto de una transacción implica que sus inferiores aborten, pero no necesariamente el de sus superiores.

• Cuando una transacción valida, sus actualizaciones son heredadas por su madre.

• Los cambios de una subtransacción se hacen permanentes solo cuando la transacción raíz valida, es decir que las actualizaciones que haya heredado la transacción raíz son llevadas a la BD.

Modelo de Transacciones Anidadas

Propiedades ACID

En las transacciones anidadas las propiedades de atomicidad y de durabilidad son reformuladas, porque aún cuando parte de su árbol haya abandonado la transacción puede validar.

Se cumple la propiedad de aislamiento por cada una de las subtransacciones, ya que los cambios realizados por las descendientes de una transacción solo serán visibles por las transacciones en el árbol del cual dicha transacción es raíz.

En cuanto a la propiedad de consistencia, al igual que la durabilidad ésta es conservada solamente por la transacción raíz, ya que la transacción raíz es la que garantiza que la base de datos se encuentre en un estado consistente.

Modelo del Manejador de Transacciones

Manejador de Transacciones

Scheduler

Administrador de la Data

Transacciones

BEGIN_TRANSACTION

END_TRANSACTION

LOCK/RELEASE

Timestamp

Execute

Read/write

Modelo del Manejador de Transacciones

Transaction Manager: Encargado de supervisar la ejecución de las transacciones y de coordinar las peticiones de la base de datos que realiza la transacción.

Scheduler: Maximiza la concurrencia sin permitir la ejecución concurrente de transacciones que interfieran en otra, y así comprometer la integridad o la consistencia de la base de datos.

Tarea

Investigar la implementación de las transacciones distribuidas en los SMBD Comerciales.