Procesamiento de Transacciones

31  Download (0)

Full text

(1)

Procesamiento de Transacciones

Material basado en los capítulos 12 y 13 del libro:

Sistemas Distribuidos. CyD. G. Coulouris, J. Dollimore and T. Kindberg.

(2)

Contenido

Mecanismos de Control de Concurrencia

– Control de Concurrencia a través de bloqueos

– Control Optimista de la Concurrencia

– Ordenación por marcas de tiempo

– Comparación de métodos.

(3)

Algoritmo Optimist

a

Se permite que las transacciones procedan, como si no hubiera posibilidad de conflicto con otras transacciones, hasta que el cliente complete su tarea y solicite un

EndTransaction. Cuando aparece un conflicto se abortará la

transacción.

Las modificaciones/accesos se hacen sobre espacios

privados o provisionales y se lleva registro de los datos que han sido modificados/accedidos. Al momento del commit, se chequea que los espacios privados sean válidos, de no

serlos, se aborta la transacción.

A toda transacción se le asigna un identificador (orden secuencial ascendente).

(4)

Algoritmo Optimista

Cada transacción cumple tres fases:

Ejecución o Trabajo:Todos los reads se ejecutan

inmediatamente sobre la última versión “consumada” del dato. Los writes crean versiones tentativas. Se mantiene un conjunto de lectura (datos leídos) y un conjunto de escritura (versiones tentativas de los datos). No hay posibilidad de “lecturas sucias”, sólo se leen valores consumados.

Validación: Ante la solicitud de un commit, se valida si la transacción realizó operaciones conflictivas con otras

transacciones. Si la validación tiene éxito se puede hacer COMMIT. Si falla, se debe usar alguna forma de resolución de conflictos (abortar alguna de las transacciones)

(5)

Algoritmo Optimista

Fase de validaci

ó

n (cont.)

:

Ante el End_transaction, a cada transacción se le asigna un número secuencial ascendente, i, que define su

posición en el tiempo.

(6)

Algoritmo Optimista

Actualización: Si la transacción logra su validación, todos los cambios realizados sobre los espacios

(7)

Algoritmo Optimista

Fase de validaci

ó

n (Tv)

:

La validación se basa en las siguientes reglas :

Tv Ti Regla (i<v)

1. write read Ti no debe leer datos escritos Tv

2. read write Ti no debe escribir datos leídos por Tv

3. write write Ti no debe escribir datos que está escribiendo o

haya escrito Tv y Tv no debe escribir datos que está escribiendo o haya escrito Ti

Simplificación: fases de validación y escritura son secciones críticas (muy cortas), se supondrá que no pueden solaparse 2 transacciones en estas fases; se

(8)

Algoritmo Optimista

Validaci

ó

n hacia atr

á

s

:

Los reads de las Ti se realizaron antes que la

validación (por tanto escritura) de Tv, entonces se cumple la regla 1.

Tv Ti Regla (i<v)

1.write read Ti no debe leer datos escritos por Tv 2.read write Ti no haya escrito datos leídos por Tv

3.write write Ti no debe escribir datos que está escribiendo

4.o haya escrito Tv y Tv no debe escribir datos que está 5.escribiendo o haya escrito Ti

Reads Tv

Writes Ti

(9)

Algoritmo Optimista

Validaci

ó

n hacia atr

á

s

:

Sólo se valida la regla 2 para cada Ti (Ti(write), Tv(read)): que Tv no haya leído un valor que hayan escrito las Ti.

valid= true;

for (Ti=startTn+1;Ti<=finishTn,Ti++) {

if (“read_set” of Tv intersects “write_set” Ti) valid=false;

}

startTn: Ti más grande asignado a una

transacción committed al momento que Tv entra a su fase de trabajo

finishTn: Ti más grande asignado a una

transacción committed al momento que Tv entra a su fase de validación

(10)

Algoritmo Optimista

Hay que validar con las Ti que hacen Commit

durante la fase de Trabajo de Tv.

Sólo es necesario validar los conjuntos de

lectura. Las transacciones que sólo hacen

escritura no se validan (lo que ella escriba lo

validarán otras transacciones mayores

posteriormente).

(11)

Algoritmo Optimista

Validaci

ó

n hacia atr

á

s

:

T1 T2 T3 Tv activa1 activa2 Transacciones anteriores committed Transacción en validación Trabajo Validación Escritura

(12)

Algoritmo Optimista

Validación hacia atrás: requiere que los conjuntos de escritura de las versiones antiguas de los objetos,

actualizados por transacciones culminadas, se retengan hasta que no hayan transacciones

solapadas, aún no validadas, con la que pudieran entrar en conflicto.

• En un entorno con transacciones largas, el mantener estos conjuntos puede ser un problema.

(13)

Algoritmo Optimista

Validación hacia adelante

: el conjunto de

escritura de Tv se compara con el conjunto de

transacciones activas que se solapan, aquellas

que están aún en su Fase de Trabajo.

(14)

Algoritmo Optimista

Fase de validaci

ó

n

:

La validación se basa en las siguientes reglas :

Tv Ti Regla (v<i)

1. write read Tv no debe escribir datos leídos por Ti 2. read write Tv no debe leer datos escritos por Ti

3. write write Ti no debe escribir datos que está escribiendo o haya escrito Tv y Tv no debe escribir datos que está escribiendo o haya escrito Ti

(15)

Validaci

ó

n hacia adelante

:

Se satisface la regla 2 porque las transacciones activas no escriben mientras que Tv no se ha completado.

Sólo se valida la regla 1 para cada Ti: se compara el

conjunto de escritura de Tv con los conjuntos de lectura de las transacciones activas.

valid= true;

for (Tid=activa1;Tid<=activaN,Tid++) {

if (“write_set” of Tv intersects “read_set” of Ti) valid=false;

}

(16)

Validaci

ó

n hacia delante

:

activaX: Representan transacciones que aún no han entrado a la fase de validación

Las transacciones que sólo hacen lecturas no requieren ser validadas

Opciones si Tv no es válida: Abortar las activas y consumar Tv Abortar Tv

(17)

Algoritmo Optimista

Validaci

ó

n hacia adelante

:

T1 T2 T3 Tv activa1 activa2 Transacciones anteriores committed Transacción en validación Trabajo Validación Escritura

(18)

Algoritmo Optimista

Desventajas:

Hay posibilidad se inanición: una transacción puede

abortar indefinidas veces y no se contempla un

mecanismo para evitarlo.

Este algoritmo no serviría en sistemas con

transacciones largas

o muchas

transacciones en

conflicto.

(19)

Contenido

Mecanismos de Control de Concurrencia

– Control de Concurrencia a través de bloqueos

– Control Optimista de la Concurrencia

– Ordenación por marcas de tiempo

(20)

Algoritmo por Marcas de Tiemp

o

Las operaciones se validan al momento en que se están ejecutando.

Cuando una transacción comienza, se le asigna un

timestamp

La regla de ordenación básica por marca de tiempo está basada en los conflictos de operación:

Una solicitud de una transacción para escribir un objeto es válida sólo si ese objeto fue leído y escrito por

última vez por transacciones anteriores en el tiempo. Una petición de lectura a un objeto no es válida si el objeto fue escrito por última vez por una transacción posterior en el tiempo.

(21)

Algoritmo por Marcas de Tiemp

o

Se trabaja con versiones tentativas. Las versiones tentativas de los objetos son consumadas en el orden

determinado por las marcas de tiempo de las transacciones que las realizaron.

Cada item de datos tiene asociado:

Un timestamp de escritura (Twrite_commit), un timestamp

de lectura (Tread) y un conjunto de versiones tentativas con su propio timestamp

Un write aceptado genera una versión tentativa

Un read se dirige a la versión con el máximo timestamp

(22)

Algoritmo por Marcas de Tiempo

Para saber cuando una operación de escritura es válida se aplica el siguiente algoritmo:

Sea Tj una transacción que desea hacer una operación de escritura sobre el objeto D.

If ((Tj >= Max (Tread en D)) && (Tj > write_commit en D))

Proceder con el write sobre una versión tentativa nueva, con marca de tiempo Tj

else // write is too late Abortar Tj;

(23)

Algoritmo por Marcas de Tiempo

Regla de escritura (No se muestran las marcas de lectura) a) T3->write b) T3-> write c) T3->write d) T3-> write después antes T3 después antes T2 T2 T3 después antes T3 T4 T4 después antes T3 Aborta Versión tentativa Versión committ T2 T2 T1 T1 T1 T1 T4 T4

(24)

Algoritmo por Marcas de Tiempo

Para saber cuando rechazar o aceptar inmediatamente una operación de lectura

Sea Tj una transacción que desea hacer un read sobre el objeto

D.

If ((Tj > Max (Write_Commit en D))

Sea Ds la versión de D con la máxima marca de tiempo de escritura menor a Tj (commited o no)

Si se ha consumado Ds: realiza la operación de lectura. Si no, espera hasta que la transacción que hizo la versión

Ds haga commit o abort. else // write is too late

(25)

Algoritmo por Marcas de Tiempo

Regla de lectura a) T3->read b) T3-> read c) T3->read d) T3-> read T4 T2 T3 Aborta Versión tentativa Versión committ Seleccionado (Ds) read se ejecuta inmediatamente Seleccionado (Ds) read se ejecuta inmediatamente Seleccionado (Ds) read espera T2 T2 T1 T4 tiempo tiempo tiempo tiempo

(26)

Algoritmo por Marcas de Tiempo

Las versiones commit (consumadas) de cada

objeto deben crearse en el orden de las

marcas de tiempo.

Un coordinador necesita esperar, a veces, que

se completen las transacciones anteriores

antes de escribir todas las versiones

consumadas de los objetos.

(27)

T U a b c beginT Bal=b.obtenBalance() b.crédito(balance*1.1) a.Débito() Commit BeginT Bal=b.obtenBalance() Espera por T …. … Bal=b.obtenBalance() b.Crédito() c.Débito() MTL MTE {} S S,T T MTL MTE {} S {T} S,T T {U} T,U MTL MTE {} S S,U

Algoritmo por Marcas de Tiempo

La última marca de lectura

Corresponde a la transacción T

(28)

Ejercicio

T U BeginT X=lee(i) Escribe(j,44) BeginT escribe(i,55) escribe(j,66) Commit T U BeginT X=lee(i) Escribe(j,44) BeginT Escribe(i,55) Escribe(j,66) commit

Ejecute el algoritmo de secuenciación por marcas de tiempo. Las marcas de tiempo iniciales de lectura y escritura son t0.

(29)

T U BeginT y = lee(k) x = lee(i) Escribe(j,44) Commit BeginT Escribe(i,55) Escribe(j,66) Commit

Qué pasa cuándo va a terminar la transacción T si ejecutamos el algoritmo Optimista con validación hacia atrás, hacia adelante???

(30)

Protocolos para el Control de la Concurrencia

Algoritmos Optimistas Algoritmos por Marcas de

Tiempo

Equivalencia Secuencial Planificador del Gestor de Transacciones

Propiedad de Aislamiento

Transacciones

Bloqueos Concurrencia Gestor de Transacciones

(31)

Ejercicio

Para enviar a mas tardar el martes 29 de octubre

a:

mcuriel@javeriana.edu.co

Comparación de todos los métodos de control de

concurrencia revisados en clase:

Bloqueos (2 fases, 2 fases estricto,

lectores/escritores, bloqueo de dos versiones,

control optimista de la concurrencia hacia

adelante y hacia atrás y validación por marcas de

tiempo). Realice una tabla comentando Ventajas

y desventajas.

Figure

Updating...

References