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