manejo de transacciones distribuidas

Post on 28-Nov-2014

128 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PROPIEDADES DE LAS

TRANSACCIONES

Atomicidad“O haces todo o no haces nada, a medias nada”

ANTES

Pepe Toño$100 $50

TRANSACCION

$25

DESPUES

Pepe Toño$75 $75

TRANSACCION COMPLETADA CON EXITO

Durabilidad“Los cambios hechos por una transacción deben durar por toda la eternidad”

10/Mayo/2011

Pepe Toño$75 $75

11/Mayo/2011

Pepe Toño$75 $75

21/Mayo/2011

Pepe Toño$75 $75

Nota: Estamos considerando que no ha habido otra transferencia entre las cuentas

Serialibidad“Si 2 o mas transacciones se hacen a la vez, el sistema las debe hacer bien”

10/Mayo/2011 07:30am

Pepe Toño

$25

Luis Paco$200 $100

Pepe$75

Las transacciones que ocurren al mismo tiempo se deben ejecutar como si se hubieran ejecutado una después de otra

10/Mayo/2011 07:30am

$50

10/Mayo/2011 07:31am

$75 $75

Toño$75

Luis$150

Paco

$150

Aislamiento“Las transacciones incompletas no deben informar sus resultados”

ANTES

Pepe Toño$100 $50

TRANSACCION

$25

DESPUES

Pepe Toño$75 $75

$75 $50

$75 $75

OBJETIVOS DEL

MANEJADOR DE

TRANSACCIONES

Utilización del CPU y la memoria principal

SISTEMA CENTRALIZADO SISTEMA DISTRIBUIDO

Pocos Recursos Mayores Recursos

Mensajes de Control

= + +

CPUMemoria Principal

Mensajes de Control

Tiempo de Respuesta

SISTEMA CENTRALIZADO SISTEMA DISTRIBUIDO

Menor Mayor

Disponibilidad

Yucatán Coahuila Distrito Federal

Contribuyentes Contribuyentes

¿Puedo conocer los contribuyentes de Coahuila si Yucatán no esta disponible?

TRANSACCIONESDISTRIBUIDAS

Estructura de una Transacción

Begin_Transaction

Commit Abort

Cuerpo de la transacción

Agente

Ejemplo de 1 Transacción

ENCONTRAR_TRANSFERENCIALeer (terminal, $cantidad, $cuenta_Origen, cuenta_Destino)Begin_Transaction;SELECT cantidad INTO $cantidad FROM cuentaWHERE numero_Cuenta=$cuenta_Origen;IF $cantidad-cantidad<0 THEN ABORT;ELSE BEGIN UPDATE cuenta SET cantidad=cantidad-$cantidad WHERE cuenta=$cuenta_Origen; UPDATE cuenta SET cantidad=cantidad+$cantidad WHERE cuenta=$cuenta_Destino; COMMIT ENDENDIF

SISTEMA CENTRALIZADO

Ejemplo de 1 TransacciónAGENTE-RAIZLeer (terminal, $cantidad, $cuenta_Origen, cuenta_Destino)Begin_Transaction;SELECT cantidad INTO $cantidad FROM cuentaWHERE numero_Cuenta=$cuenta_Origen;IF $cantidad-cantidad<0 THEN ABORT;ELSE BEGIN UPDATE cuenta SET cantidad=cantidad-$cantidad WHERE cuenta=$cuenta_Origen; CREATE agente1; SEND TO agente1($cantidad, $cuenta_Destino); COMMIT; ENDENDIF

SISTEMA DISTRIBUIDO

Ejemplo de 1 Transacción SISTEMA DISTRIBUIDO

AGENTE1:RECEIVE FROM agente_raiz($cuenta_Origen, cuenta_Destino) UPDATE cuenta SET cantidad=cantidad+$cantidad WHERE cuenta=$cuenta_Origen;

top related