Trans Acci Ones

download Trans Acci Ones

If you can't read please download the document

description

transacciones

Transcript of Trans Acci Ones

Transacciones distribuidas

Sistemas de Operacin II

Transacciones distribuidas

Prof. Carlos Figueira

Basado en material deYudith Cardinale (USB)Andrew Tanembaum y Marteen van Steen

Contenido

Transacciones: Introduccin y definiciones

Algoritmos para completar transacciones

Control de concurrencia

Tratamientos de interbloqueos


Transacciones:

Introduccin
Definiciones

Transaccin

Unidad de clculo consistente, confiable y atmica

Aplica a datos recuperables

Puede estar formada por operaciones simples o compuestas, pero deben ejecutarse de manera atmica

Secuencia: abre transaccin, operaciones, cierra transaccin

Transaccin

ABCSerializacin de operaciones conflictivas

Operaciones compuestas

Operaciones conflictivas

Retardo

Ejecucin

Requerimientos: Todo o nada

Si una transaccin termina exitosamente, los efectos de todas sus operaciones son registrados en espacio de datos

Si falla, no altera espacio de datos, incluso ante fallas del servidor

Propiedades ACID

Atomicidad: la operacin se realiza completa o nada

Consistencia: slo se empieza aquello que se puede acabar.

Aislamiento (isolation): una operacin no puede afectar a otras.

Durabilidad: una vez realizada, la operacin persistir, no se podr deshacer aunque falle el sistema.

Atomicidad

En la recuperacin de cadas el sistema debe decidir qu hacer:Terminar de ejecutar el resto de las acciones

Deshacer acciones que ya haba realizado

Se usan tcnicas de almacenamiento estableSe garantiza que permanecen incluso ante cadas del servidor

Ejemplos: RAID, rplicas

Consistencia

Una transaccin toma el sistema en un estado consistente, y lo deja en un estado consistente

Slo se ejecutan operaciones que no van a romper reglas integridad de la BD.

Qu pasa con dos accesos simultneos conflictivos? Ej: transferencias bancarias de cuenta A a cuentas diferentes (B y C) cuyo monto total excede fondos en A

Aislamiento

Dos transacciones sobre la misma informacin son independientes y no generan error

Los efectos intermedios de una transaccin son invisibles a las otras

Ejecucin concurrente obtiene mismo efecto que ejecucin secuencial

Primitivas sobre transacciones

inicio_transaccion tid : inicia una transaccin y devuelve un identificador de la transaccin

fin_transaccion {Completar, Abortar}Completar: la transaccin termina exitosamente y sus efectos van a almacenamiento permanente (commit: completar, consumar)

Abortar: no se reflejan los cambios. Pueden ser causados por la propia naturaleza de la transaccin, por conflictos con otras transacciones o por fallas.

abortar_transaccion(tid): interrupcin intencional.

leer y escribir: tpicamente una transaccin se compone de una serie de lecturas y escrituras, y algunos clculos.

Transacciones anidadas

Ej: envo de correo electrnico a varios dest.

Transaccin realiza completar y una + externa abortar, se pierden propiedades de atomicidad y aislamiento por cumplir la durabilidad

Generalmente, la durabilidad slo se considera para la transaccin ms externa

En algunos sistemas, la transaccin superior puede decidir hacer completar aun cuando alguna sub-transaccin aborta

Implementacin de transacciones

Espacio de trabajo privadoSe copian los datos en un espacio propio de cada transaccin

Al finalizar (exitosamente) la transaccin, se actualizan datos en almacenamiento permanente

Lista de intencin (write-ahead log)Actualizaciones realizadas directamente en la BD

Se lleva registro de cambios realizados

Transacciones Distribuidas

Involucran mltiples servidores

Datos distribuidos entre varios servidores

Transaccin de un cliente puede incluir mltiples servidores

Transacciones distribuidas pueden ser simples o anidadas

clienteX

Z

Y

Cliente: inicio_transaccioncall X.xcall Y.ycall Z.z end_transaccion

Transacciones Distribuidas

Transaccin distribuida anidada

T

Cliente

X

T1

YT2

MT11

PT22

NT12

T21

Transacciones Distribuidas

Cuando termina transaccin distribuida, la atomicidad exige que todos los servidores acuerden lo mismo (completar o abortar) o todos aborten (basta que uno aborte).

Existen protocolos para llegar a compromisos (Two-phase-Commit y Three-Phase-Commit)

Transacciones distribuidas deben ser globalmente serializables. Existen protocolos de control de concurrencia distribuida

Procesamiento de transacciones distribuidas

CCC

TransactionManagerscheduler

TPSRecoveryManagerCacheManagerData ManagerCCC

TransactionManagerscheduler

TPSRecoveryManagerCacheManagerData Manager

comunicacinTPS: Sistema de Procesamiento de Transacciones(TransactionProcessing System)

Procesamiento de transacciones distribuidas

Cliente inicia transaccin sobre un TPS. El Manejador de Transacciones identifica y localiza objetos invocados.

Invocaciones a objetos locales son pasados al Planificador local; invocaciones a objetos remotos son pasados a su TPS

Cliente inicia transaccin en un nodo => nodo coordinador

Objeto reside en nodo nico (no hay replicacin de objeto). La invocacin del objeto se hace en ese nodo

Procesamiento de transacciones distribuidas

Deben existir mecanismos para localizar un objeto, dado su identificador (nico)

Las instancias del TPS deben cooperar

Cuando un cliente comienza una transaccin, enva un inicio_transaccion a un servidor TPS.El servidor TPS se convierte en coordinador

El resto de TPS que intervengan en la transaccin se convierten en trabajadores

Coordinador de transaccin distribuida

Se requieren otras primitivas

AgregaServidor (tid, id_servidor del coordinador)Mensaje enviado por coordinador a otro servidor informando que participar en transaccin tid.

NuevoServidor (tid, id_servidor del trabajador)Respuesta ante un AgregaServidor de un trabajador al coordinador.

El coordinador lo registra en su lista de trabajadores

Algoritmos para completar (commit) transacciones

Algoritmos de completar (commit)

Cuando el coordinador recibe un requerimiento completar de una transaccin, debe asegurar:Atomicidad: todos los nodos completan cambios o ninguno lo hace; cualquier otra transaccin percibe los cambios en todos los nodos o en ninguno

Aislamiento: los efectos de la transaccin no son visibles hasta que todos los nodos hayan tomado la decisin (irrevocable) de completar o abortar

Protocolo Completar en Dos Fases (C2F, Two-phase-commit)

Durante progreso de transaccin, no hay comunicacin entre coordinador y trabajadores (excepto AgregarServidor y NuevoServidor)

Requerimiento completar o abortar del cliente, llega al coordinador

Si es abortar, el coordinador lo informa inmediatamente a todos los trabajadores

Si es completar, se aplica protocolo C2F

Protocolo C2F

Mquina de estados finitos del coordinador (a) y de los trabajadores (b)

Protocolo C2F: acciones del coordinador (1/2)

Protocolo C2F: acciones del coordinador (2/2)

Protocolo C2F: acciones del trabajador

C2F: esperas acotadas para tolerancia a fallas

Se usan temporizadores para acotar espera en estados Espera, Completar y Abortar del coordinador. Expira (timeout) en el estado de Espera: aborta, escribe en bitcora,

enva mensaje abortar_global a todos

Expira tiempo en estados Completar o Abortar:enva mensaje completar_global o abortar_global, resp., a trabajadores que no han respondido

espera por confirmacin

C2F: espera acotada en trabajador

Estados Inicial o Listo

Expira en estado Inicial: decide abortar. Si el mensaje solicita_voto (vote_request) llega despus, trabajador enva un voto_abortar o lo ignora.

Expira en estado Listo: se queda bloqueado esperando

Paradigmas de comunicacin para el C2F

1234N

CFase 1Fase 2

C2F centralizado

C2F lineal

Solicita voto

voto

C/A_global

C/A

voto

voto

voto

C/A_gl

C/A_gl

C/A_gl

C/A_gl

Paradigmas de comunicacin: C2F distribuido

El C/A_g (Commit/Abort_global) es decisin de cada participante de acuerdo a los votos recibidos

Se elimina fase 2

Lineal y distribuidos requieren conocer ids de todos los participantes

Solicita voto

C/A_ voto

C/A_g

Anlisis de C2F

El protocolo C2F puede ocasionar retrasos a los participantes en estado incierto (preparado para completar)Cuando coordinador falla y no puede responder a peticiones de dameDecisin.

Lo mismo ocurre si es cooperativo y la pregunta va a participantes en estado incierto

Solucin: Protocolo Completar en Tres fases (C3F)

Completar en Tres Fases (C3F Three-Phase-Commit)

Los estados del coordinador y de cada participante satisfacen las siguientes dos condiciones:

No hay estado del cual sea posible hacer una transicin directamente al estado completar o abortar

No hay estado en el cual no sea posible tomar una decisin final, y del cual pueda ser realizada una transicin al estado completar

Completar en Tres Fases (C3F Three-Phase-Commit)

Mquina de estados finitos del coordinador (a) y de los trabajadores (b) en C3F

Control de Concurrencia

Control de Concurrencia

Resolver operaciones conflictivas: cuando sus efectos combinados dependen del orden en el cual fueron ejecutadas

Para dos transacciones, son conflictivas cualquier combinacin que tenga escritura/lectura o escritura/escritura

Si hay operaciones conflictivas es necesario serializarlas para asegurar la consistencia de los datos despus de su ejecucin

Control de concurrencia

Las Operaciones conflictivas derivan en 2 problemas:Actualizaciones perdidas

Transaccin T Transaccin Ubalance=b.getBalance() balance=b.getBalance()b.setBalance(balance*1.1) b.setBalance(balance*1.1)

Recuperaciones inconsistentes

Transaccin V Transaccin Wa.retirar(100) unasucursal.totalSucursal(a,b)b.deposita(100))

Solucin: Equivalencia Secuencial =>Control de concurrencia

EjecucinT Ubalance=200$balance=200$balance=220$balance=220$

Balance debi ser 200+20+22=242Ejecucin; a=200$ , b=200$V Wa=200$-100$ lee a=100$lee b=200$b=200$+100$Total=300$Segn la ejecucin el total es 300$. Debi ser 400$

Transacciones abortadas

Cuando una transaccin aborta, puede generar dos problemas:Lecturas sucias

Escrituras prematuras

Lecturas sucias

Transaccin T Transaccin U

a.getBalance() (100$)a.depositar(10) (110$) a.getBalance() (110$)a.deposita(20) (130$)completarabortaU tom el valor 110$ que ahora no es vlido

Recuperacin de lecturas sucias

Estrategia para recuperacin: retrasar accin completar de U hasta que T finalice

Esto puede generar Abortos en Cascada si T aborta, U debe abortar tambin

Escrituras prematuras

Se pierden actualizaciones.Ej: dos transacciones A y B sobre una cuenta. Saldo inicial 100Bs. A pone balance en 105, B en 110, son secuencialmente equivalentes. B ejecuta despus de A. Si B aborta y despus A, coloca 100 en balance (correcto).

Si A aborta y despus B, coloca 105 en balance (incorrecto)

Estrategia para recuperacinRetrasar escrituras hasta el momento de completar

Se llama escritura prematura, porque se alteran los datos antes que la transaccion termine, y por tanto no se sabe si va a culminar con exito o no. Si otra transaccion (B) lee el dato, si aborta (despues de A), colocara el valor original que leyo en espacio permanente. Pero si A aborta, ese valor es incorrecto.

Ejecucin estricta

Se retrasa lectura/escritura de un objeto hasta que todas las transacciones que escribieron el objeto han sido completadas o abortadas

La ejecucin estricta de las transacciones evita tanto lecturas sucias como escrituras prematuras (aislamiento)

Algoritmos de control de concurrencia

Tres estrategiasUsando bloqueo (locking)

Optimista

Por marcas de tiempo (timestamp)

Control de concurrencia: Bloqueo

Cuando se requiere leer/escribir objeto en una transaccin, se bloquea objeto hasta que culmine transaccin (completar)Si otra transaccin desea acceder el objeto, debe esperar a que se desbloquee

Los bloqueos (locks) son adquiridos/liberados por administrador de transacciones (transparente al programador)

Administrador puede ser centralizado o local a cada mquina

Granularidad del Bloqueo

Se refiere al tamao del objeto que se est bloqueando:A mayor granularidad, ms pequeo (grano ms fino) es objeto

Bloqueo puede ser a nivel de dato (mayor granularidad), pgina, archivo, BD (menor)

Paralelismo/concurrencia, y complejidad de sistema, son directamente proporcionales a granularidad

Bloqueo: mejoras

Bloqueos diferenciados para escritura y para lectura permiten ms concurrencia

Si varias transacciones requieren objeto para lectura y luego escritura, se otorga bloqueo de (slo) lectura a todas, hasta que alguna requiera escribir; sta solicita bloqueo de escritura (promocin de bloqueo lectura a escritura), para lo cual debe esperar que todas las dems liberen bloqueo de lectura

Compatibilidad de bloqueos

Determina cmo manejar los bloqueos solicitados sobre un objeto, sobre el cual existe un bloqueo activo

Depende de los tipos de bloqueo solicitados y del bloqueo activo sobre el objeto

Bloqueo activoBloqueo solicitado

NingunoLectura OK Escritura OK

LecturaLectura OK Escritura ESPERA

EscrituraLectura ESPERA Escritura ESPERA

Problemas resueltos usando bloqueo

Recuperaciones inconsistentes El bloqueo permite ordenar los accesos conflictivos (en el ejemplo, evitando que W lea balance en b antes que V lo actualice)

Prdida de actualizacionessi dos transacciones desean leer el mismo dato y luego modificarlo, la solicitud de bloqueo de escritura (promocin lectura a escritura) de ambas forzar su ordenamiento

Equivalencia secuencial

Transaccin T Transaccin U

bal=b.obtenBalance() (200)b.ponBalance(bal*1.1) (220)bal=b.obtentBalance() (220)b.ponBalance(bal*1.1) (242)a.extrae(bal/10) (80)c.extrae(bal/10) (278)

Transacciones deben planificarse para que efectos sean secuencialmente equivalentes, regulando solicitud/liberacin de recursos

Bloqueo en dos fases

Equivalencia Secuencial requiere que los accesos conflictivos a objetos se hagan en el mismo ordenSolucin: impedir que se pidan objetos despus de liberar

Fase de Obtencin: Transaccin trata de obtener bloqueos necesitados. Si no es posible obtenerlos todos, entonces espera

Fase de Liberacin: Comienza cuando transaccin libera algn bloqueo. A partir de ese momento, no podr solicitar ningn otro; si lo hace, ser abortada

Ejemplo bloqueo 2 fases

Transaccin T Transaccin U

abreTransaccionbal=b.obtenBalance() (bloquea B)b.ponBalance(bal*1.1) abreTransacciona.extrae(bal/10) (bloquea A) bal=b.obtentBalance() (espera)CierraTransaccion (desbloquea A,B)Bloquea B b.ponBalance(bal*1.1)c.extrae(bal/10) (bloquea C)cierraTransaccion (desbloq.B,C)

Desventaja de Bloqueo en dos fases

Si una transaccin en fase de liberacin haba desbloqueado algunos objetos que entonces son accedidos por otras antes que la primera haga completar, y sta decide abortar, entonces TODAS deben abortar

Bloqueo en dos fases estricto

La fase de liberacin se realiza slo cuando la transaccin hace completar

Ventaja: se evitan abortos en cascada (conjunto de transacciones relacionadas con los objetos bloqueados que deben abortar)

Desventajas:Degrada nivel de paralelismo

Permanece la posibilidad de interbloqueo

Representa alto costo de mantenimiento

Bloqueo en dos fases

Bloqueo en dos fases

Nmero de bloqueos

Tiempo

Fase de crecimientoFase de liberacin

Nmero de bloqueos

Tiempo

Fase de crecimientoFase de liberacin

Se liberantodos losbloqueos

Bloqueo en dos fases estricto

Inconvenientes del uso de bloqueo

Sobrecarga. Incluso en lectura, cuando no es necesario

Posibilidad de interbloqueo

Prdida de concurrenciaPara impedir abortos en cascada, los bloqueos no pueden ser liberados hasta el final de la transaccin

Control de concurrencia:
Algoritmo Optimista

Se basa en la premisa de que los conflictos son poco frecuentes, por lo que es mejor no hacer nada sino actuar cuando ocurran

Modificaciones se hacen sobre espacios privadosSe lleva registro de los datos que han sido modificados/accedidos

Al momento de completar, se verifica que los espacios privados sean vlidos; sino, aborta

Asigna nmero de secuencia a transacciones

Fases de Algoritmo Optimista

Tres fases: trabajo, validacin y escritura

TrabajoToda lectura se ejecuta inmediatamente sobre ltima versin completada del dato

Las escrituras crean versiones tentativas

Se mantiene conjunto de lectura (datos ledos) y conjunto de escritura (versiones tentativas de datos)

Fases de Algoritmo Optimista

ValidacinAnte solicitud de completar, se valida si transaccin realiz operaciones conflictivas con otras transacciones

EscrituraSi transaccin es validada, todos los cambios sobre espacios privados se respaldan en espacio definitivo

Fase de Validacin

Ante cierraTransaccion de Tv, pasa a fase de validacin; se asigna a cada transaccin un nmero de secuencia

Validacin se basa en tres reglas (ver abajo, iTc (requiere Tc>=max(Tcompletar_esc del dato)

LecturaEscritura3. Tc no debe leer dato escrito por Ti>Tc Requiere Tc>Tcompletar_esc

Algoritmos por Marcas de Tiempo

Para saber cuando escritura es vlida, se aplica el siguiente algoritmo (reglas de escritura 1 y 2)

Sea Tc una transaccin que desea escribir sobre el objeto D.if ((Tc >= Max (Tlect en D)) && (Tc > Tcompletar_esc en D)) Proceder con escritura sobre una versin tentativa nueva;else // escritura muy tarde Abortar Tc;

Alg Marcas Tiempo: reglas escritura

despusantes

T3

despusantes

T2T2T3

despusantes

T3T4T4

despusantes

T3 Aborta

VersintentativaVersincompletadaa) T3 escritura

b) T3 escritura

d) T3 escritura

c) T3 escritura

Tiempo

Alg. Marcas de Tiempo: validacin de regla de lectura: Tc lee(D)

if (Tc > Tcompletar_esc en D) {Dselec con Max (Tescritura