Transacciones y Concurrencia Bases de Datos II Universidad Argentina J. F. Kennedy - Año 2008...

Post on 20-Jan-2015

11 views 0 download

Transcript of Transacciones y Concurrencia Bases de Datos II Universidad Argentina J. F. Kennedy - Año 2008...

Transacciones y Transacciones y ConcurrenciaConcurrencia

Bases de Datos IIBases de Datos II

Universidad Argentina J. F. Kennedy - Año 2008

Maletin Yahoo => Maletin Yahoo => briefcase.yahoo.combriefcase.yahoo.com

Usuario => bd2_jfkUsuario => bd2_jfk

Psw => kennedy Psw => kennedy

22

TransacciónTransacciónDefinición de TransacciónDefinición de Transacción

Propiedades de las TransaccionesPropiedades de las Transacciones

Administración de Fallas en TransaccionesAdministración de Fallas en Transacciones

Problemas de ConcurrenciaProblemas de Concurrencia

Two Phase CommitTwo Phase Commit

33

TransacciónTransacción

Ejemplo => Un deposito bancario implica:Ejemplo => Un deposito bancario implica:

• INSERT INTO MOV (CTA, FEC, IMP)INSERT INTO MOV (CTA, FEC, IMP)

VALUES (11223344,”2008-01-15”,100);VALUES (11223344,”2008-01-15”,100);

• UPDATE CTACTEUPDATE CTACTE

SET SALDO = SALDO + 100;SET SALDO = SALDO + 100;

44

TransacciónTransacción

• Más de una operación puede ser una unidad Más de una operación puede ser una unidad lógica de trabajológica de trabajo

• Transacción => Puede ser una o varias Transacción => Puede ser una o varias operacionesoperaciones

• La secuencia de operaciones se deben ejecutar La secuencia de operaciones se deben ejecutar como una sola operación como una sola operación atómicaatómica (todo o nada). (todo o nada).

55

TransacciónTransacción

• PUNTO de CONSITENCIA:PUNTO de CONSITENCIA: Pasa de un estado Pasa de un estado consistente de datos a otro también consistente.consistente de datos a otro también consistente.

• UNIDAD de RECUPERO:UNIDAD de RECUPERO: En caso de falla del En caso de falla del sistema se recupera la transacción completa.sistema se recupera la transacción completa.

• PUNTO de SINCRONIZMO:PUNTO de SINCRONIZMO: Cada vez que Cada vez que termino una transacción estoy generando un termino una transacción estoy generando un punto de sincronizmo de datospunto de sincronizmo de datos

66

Administrador de Administrador de TransaccionesTransacciones

Proporciona atomicidad a través de las Proporciona atomicidad a través de las instrucciones:instrucciones:

• COMMITCOMMIT (comprometer): (comprometer): indica la indica la finalización de una transacción finalización de una transacción satisfactoria.satisfactoria.

• ROLLBACKROLLBACK (revertir): (revertir): indica la finalización indica la finalización de una transacción de una transacción no satisfactoriano satisfactoria. .

77

ROLLBACKROLLBACK

Puede ser ejecutado en dos formas:Puede ser ejecutado en dos formas:

• Explícitamente:Explícitamente: el usuario o el programa el usuario o el programa instruyen al RDBMS su ejecución.instruyen al RDBMS su ejecución.

• Implícitamente:Implícitamente: ante cualquier falla ante cualquier falla (comunicación, hardware, energía, etc.) el (comunicación, hardware, energía, etc.) el RDBMS hará un rollback de las RDBMS hará un rollback de las transacciones en curso. transacciones en curso.

88

Ciclo de vida de una Ciclo de vida de una TransacciónTransacción

BEGIN TRANSACTION

COMMIT ROLLBACK

COMMITPunto de confirmación(estado consistente)

Punto de confirmación

INSERT…UPDATE…DELETE…:

(estado inconsistente)(estado consistente)

Vuelve al último punto de confirmación (estado consistente)

99

TransacciónTransacción Definición de TransacciónDefinición de Transacción

Propiedades de las TransaccionesPropiedades de las Transacciones

Administración de Fallas en TransaccionesAdministración de Fallas en Transacciones

Problemas de ConcurrenciaProblemas de Concurrencia

Two Phase CommitTwo Phase Commit

1010

TransacciónTransacciónhttp://technet.microsoft.com/es-es/library/ms190612.aspx

Una transacción es una secuencia de operaciones Una transacción es una secuencia de operaciones realizadas como una sola unidad lógica de realizadas como una sola unidad lógica de

trabajo.trabajo.

Una unidad lógica de trabajo debe exhibir cuatro Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades de propiedades, conocidas como propiedades de

Atomicidad, Consistencia (coherencia), Atomicidad, Consistencia (coherencia), Aislamiento y Durabilidad (ACID),Aislamiento y Durabilidad (ACID), para ser para ser

calificada como transacción.calificada como transacción.

1111

Propiedades “ACID”Propiedades “ACID”

• AtomicidadAtomicidad:: es indivisible, todo o nada. es indivisible, todo o nada.

• Consistencia:Consistencia: transforma un estado consistente de la transforma un estado consistente de la base de datos en otro igual, sin necesidad de conservar base de datos en otro igual, sin necesidad de conservar la consistencia en todos los puntos intermedios la consistencia en todos los puntos intermedios

• Aislamiento:Aislamiento: aunque en general hay muchas aunque en general hay muchas transacciones ejecutándose en forma concurrente, las transacciones ejecutándose en forma concurrente, las actualizaciones de una transacción dada están ocultas actualizaciones de una transacción dada están ocultas ante las demás, hasta que esa transacción sea ante las demás, hasta que esa transacción sea confirmada confirmada

• Durabilidad:Durabilidad: u una vez que es confirmada, sus na vez que es confirmada, sus actualizaciones sobreviven en la base de datos aun actualizaciones sobreviven en la base de datos aun cuando haya una caída posterior del sistema.cuando haya una caída posterior del sistema.

1212

Consecuencias de la falta Consecuencias de la falta

de Atomicidadde Atomicidad

1313

Oracle

Para modificar un registro, la aplicación lo borra y lo inserta:

BEGIN TRANSACTION;DELETE FROM ORDENES WHERE ORDEN=1234;COMMIT;<< Pérdida de enlace >>>BEGIN TRANSACTION;INSERT INTO ORDENES(…) VALUES(…);COMMIT;

Microcortes

El usuario acusa al departamento de sistemas de

tocar sus datos.Al hacerse la modificación en dos

transacciones se vuelve frecuente la pérdida de registros en forma

“inexplicable” en la base de datos.

Consecuencias de la falta de atomicidad

No llega a ejecutarse en la base de datos

1414

Oracle

Modificación de un registro:

BEGIN TRANSACTION;DELETE FROM ORDENES WHERE ORDEN=1234;INSERT INTO ORDENES(…) VALUES(…);COMMIT;

Microcortes

Se corrige el sistema haciendo que la modificación sea una operación atómica, una única transacción.

Consecuencias de la falta de atomicidad

1515

TransacciónTransacción

Definición de TransacciónDefinición de Transacción

Propiedades de las TransaccionesPropiedades de las Transacciones

Administración de Fallas en TransaccionesAdministración de Fallas en Transacciones

Problemas de ConcurrenciaProblemas de Concurrencia

Two Phase CommitTwo Phase Commit

1616

Fallas: Caida del SistemaFallas: Caida del Sistema

¿Cómo se garantiza la integridad de los ¿Cómo se garantiza la integridad de los datos cuando se emite un ROLLBACK?datos cuando se emite un ROLLBACK?

¿Como se garantiza la integridad de los ¿Como se garantiza la integridad de los datos ante una falla del sistema?datos ante una falla del sistema?

1717

Escritura anticipada de log de Escritura anticipada de log de transacciones transacciones

Archivosde datos

log de transacciones

activo

Directorio de logs de transacciones archivados

Escritura física de las transaccionessatisfactorias

Nuevas transacciones

Una vez lleno el log activo se copia a un directorio de

almacenamiento Ante una falla del medio, a partir del último backup de los archivos de datos, se pueden reescribir físicamente todas las transacciones producidas desde el punto de backup de los mismos y hasta el momento en que se produjo la pérdida. Esta operación se llama ROLL-FORWARD.

Ante una falla del sistema después de haber recibido un COMMIT, y antes de escribir físicamente las actualizaciones en la base de datos, al reiniciarse, es capaz de descubrir los valores que hay que escribir, examinando las entradas relevantes en el log de transacciones.

1818

Fallas: Caida del SistemaFallas: Caida del Sistema

1919

TransacciónTransacción Definición de TransacciónDefinición de Transacción

Propiedades de las TransaccionesPropiedades de las Transacciones

Administración de Fallas en TransaccionesAdministración de Fallas en Transacciones

Problemas de ConcurrenciaProblemas de Concurrencia

Two Phase CommitTwo Phase Commit

2020

Problemas de ConcurrenciaProblemas de Concurrencia

• Modificación PerdidaModificación Perdida

• Modificación sin COMMITModificación sin COMMIT

• Análisis InconsistenteAnálisis Inconsistente

2121

Modificación PerdidaModificación Perdida

2222

Modificación sin COMMITModificación sin COMMIT

2323

Análisis InconsistenteAnálisis Inconsistente

2424

ConcurrenciaConcurrencia

Se necesita una SOLUCION !!!!

2525

Concurrencia - BloqueoConcurrencia - Bloqueo

XX SS --

XX NoNo NoNo SíSí

ss NoNo SíSí SíSí

-- SíSí SíSí SíSí

Matriz de compatibilidad de tipos de LocksMatriz de compatibilidad de tipos de Locks

2626

Modificación PerdidaModificación Perdida(cuadro actualizado)(cuadro actualizado)

2727

Modificación sin COMMITModificación sin COMMIT(cuadro actualizado)(cuadro actualizado)

2828

Modificación sin COMMITModificación sin COMMIT

2929

Bloqueo: Análisis InconsistenteBloqueo: Análisis Inconsistente

3030

Abrazo Mortal - Dead LockAbrazo Mortal - Dead Lock

3131

TransacciónTransacción Definición de TransacciónDefinición de Transacción

Propiedades de las TransaccionesPropiedades de las Transacciones

Administración de Fallas en TransaccionesAdministración de Fallas en Transacciones

Problemas de ConcurrenciaProblemas de Concurrencia

Two Phase CommitTwo Phase Commit

3232

Bases de Datos DistribuidasBases de Datos Distribuidas

¿Cómo se administra un COMMIT ¿Cómo se administra un COMMIT cuando actualizamos datos cuando actualizamos datos distribuidos en más de un DBMS?distribuidos en más de un DBMS?

¿Y si cuando lanzado el COMMIT ¿Y si cuando lanzado el COMMIT se corta la comunicación con se corta la comunicación con alguno de los DBMS?alguno de los DBMS?

3333

Bases de Datos DistribuidasBases de Datos Distribuidas

Programa

Participante

Participante

Participante

COMMIT - ROLLBACK

COMMIT - ROLLBACK

COMMIT - ROLLBACK

¿Quién verifica que ¿Quién verifica que todos los todos los “Participantes” “Participantes” responda con un responda con un simple “OK”?simple “OK”?

3434

BD Distribuidas – BD Distribuidas – Confirmación de dos FasesConfirmación de dos Fases

El COMMIT o ROLLBACK "global" es manejado El COMMIT o ROLLBACK "global" es manejado por un componente del sistema llamado por un componente del sistema llamado coordinador coordinador que:que:

• Garantizar que los DBMS confirmen o deshagan Garantizar que los DBMS confirmen o deshagan al unísono al unísono las actualizaciones de las que son las actualizaciones de las que son responsablesresponsables

• Proporcionar esa garantía Proporcionar esa garantía aunque el sistema aunque el sistema falle a mitad del procesofalle a mitad del proceso

3535

Confirmación de dos FasesConfirmación de dos FasesFase 1Fase 1

Coordinador

Participante

Participante

Participante

Da instrucciones a todos los administradores de recursos a fin de que estén listos para manejar la transacción "de una u otra forma". En la práctica esto significa que cada participante en el proceso debe forzar todos los registros de log de los recursos locales usados por la transacción, hacia su propio log físico (es decir, hacia el almacenamiento no volátil), esto con el fin de que, sin importar qué pase después, el administrador de recursos tenga ahora un registro permanente del trabajo que hizo a nombre de la transacción y por lo tanto sea capaz de confirmar o deshacer las actualizaciones según sea necesario.

log

log

log

Fin Transacción

Fin Tra

nsacc

ión

Fin Transacción

Programa

3636

Confirmación de dos FasesConfirmación de dos FasesFase 1Fase 1

Coordinador

Participante

Participante

Participante

Suponiendo que la escritura forzada es satisfactoria, el administrador de recursos responde ahora un "OK" al coordinador, y en caso contrario responde "No OK".

OK / No OK

OK / No OK

OK / No OK

Programa

3737

Confirmación de dos FasesConfirmación de dos FasesFase 2Fase 2

Coordinador

Participante

Participante

Participante

Cuando el coordinador ha recibido las respuestas de todos los participantes, fuerza una entrada en su propio log físico registrando su decisión con respecto a la transacción.

Si todas las respuestas fueron "OK", esa decisión es "confirmar", y si alguna respuesta fue "No OK", la decisión es "deshacer".

log

Programa

3838

Confirmación de dos FasesConfirmación de dos FasesFase 2Fase 2

Coordinador

Participante

Participante

Participante

El coordinador informa después su decisión a cada participante y luego cada participante debe confirmar o deshacer la transacción localmente según se le indica.

COMMIT - ROLLBACK

COMMIT - ROLLBACK

COMMIT - ROLLBACK

Programa