cc3201-1 b datos o 2017 clase 10: transacciones y...
TRANSCRIPT
![Page 2: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/2.jpg)
Una cuenta bancaria …
![Page 3: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/3.jpg)
Una cuenta bancaria … integridad
![Page 4: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/4.jpg)
Restricciones sobre varias tablas (!!)
¿A. P. A.? …
¿A. S.? …
![Page 5: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/5.jpg)
TRANSACCIONES
![Page 6: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/6.jpg)
Transacciones
Una transacción es
un conjunto de operaciones que
se ejecutan de manera atómica(es decir, como fueran una sola operación)
![Page 7: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/7.jpg)
Vacaciones …
![Page 8: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/8.jpg)
Transacciones: START TRANSACTION/COMMIT
START TRANSACTION (o a veces BEGIN) inicia la transacción
COMMIT realiza/guarda los cambios
![Page 9: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/9.jpg)
Transacciones (por defecto)
Si no hay una transacción explicita, por defecto, Postgreshace un COMMIT después de cada sentencia
(pero se puede cambiar la configuración)
![Page 10: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/10.jpg)
Transacciones: ROLLBACK
ROLLBACK deshace/borra los cambios desde el inicio de la transacción
![Page 11: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/11.jpg)
Transacciones: SAVEPOINT
ROLLBACK puede deshacer/borrar los cambios desde un punto especifico con SAVEPOINT
![Page 12: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/12.jpg)
Una transacción con valores dinámicos
¿Valor final de saldo_usd en Cuenta?
![Page 13: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/13.jpg)
Una transacción con valores dinámicos
¿Valor final de saldo_usd en Cuenta? ¡344,94! Leemos un valor de Cuenta que no hemos guardado
![Page 14: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/14.jpg)
Transacciones / Restricciones: IMMEDIATE
Por defecto, se aplica la restricción inmediatamente después de cada sentencia
![Page 15: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/15.jpg)
Transacciones / Restricciones: DEFERRABLE
DEFERRED difiere la restricción hasta el COMMIT en la transacción actual
DEFERRABLE define una restricción que se puede diferir hasta un COMMIT
![Page 16: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/16.jpg)
Transacciones / Restricciones: DEFERRABLE
DEFERRABLE INITIALLY DEFERRED define una restricción que sea diferido por
defecto hasta un COMMIT
![Page 17: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/17.jpg)
Restricciones diferibles son estándares
Pero Postgres no permite diferir restricciones usando ni CHECK ni NOT NULL
![Page 18: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/18.jpg)
LAS GARANTIAS DE ACID
Atomicidad, Consistencia, Aislamiento, Durabilidad
(Atomicity, Consistency, Isolation, Durability)
Capítulo 8.1 | Ramakrishnan / Gehrke
![Page 19: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/19.jpg)
No hay un solo usuario …
… hay que tener cuidado con la concurrencia
![Page 20: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/20.jpg)
Una cuenta con varios usuarios
¿Qué será el resultado final? …
![Page 21: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/21.jpg)
Caos
![Page 22: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/22.jpg)
Esta vez con transacciones …
¿Qué será el resultado final? Se rechazará una transacción.
![Page 23: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/23.jpg)
Garantías de ACID
• Atomicidad:– La ejecución de cada transacción es atómica:
• Se realizan todas las acciones o no se realiza ninguna
• Consistencia:– Cada transacción debe preservar la integridad
• La base de datos satisfacen todas las restricciones después de una transacción
• Aislamiento (Isolation):– Una transacción no puede afectar otra
• Durabilidad:– Una vez que haya un COMMIT, la base de datos debe
persistir los cambios
![Page 24: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/24.jpg)
ACID: Un ejemplo más limpio
Usaré restricciones con CHECK porque dan ejemplos más claros pero es importante tener en cuenta que postgres no suporte CHECKs diferibles.
![Page 25: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/25.jpg)
ACID: Atomicidad
No se puede actualizar el saldo sin actualizar el gasto directamente después.
(Si alguna actualización falla, ambas fallan.)
![Page 26: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/26.jpg)
ACID: Consistencia
Si el resultado de la transacción no satisface todas las restricciones, fallará.
![Page 27: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/27.jpg)
ACID: Aislamiento (Isolation)
Una transacción no puede interferir con otra transacción.
En (4), hay que tener cuidado con el ROLLBACK: no se puede restaurar el valor de saldo antes del paso (1) porque el valor ya fue cambiado por (2).
![Page 28: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/28.jpg)
ACID: Durabilidad
Una vez que haya un COMMIT exitoso, se persisten los cambios.
(Normalmente la persistencia aquí significa en el disco duro. Sin persistencia, en el caso de que la máquina falla y toda la evidencia de los cambios está en memoria
principal, el sistema de base de datos olvidaré los cambios silenciosamente.)
![Page 29: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/29.jpg)
Entonces con las garantías de ACID …
… todo está tranquilo.
![Page 30: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/30.jpg)
… pero si uno tiene que implementar ACID
… es más difícil ...
![Page 31: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/31.jpg)
Cuando no tenemos ACID …
• Atomicidad:× Una transacción se ejecutan sólo a medias pero afecta
el estado de la base de datos
• Consistencia:× Al ejecutar la transacción, la base de datos no
satisface las restricciones de integridad
• Aislamiento (Isolation):× El resultado final de dos transacciones no es
equivalente a correr cada transacción en serie
• Durabilidad:× La base de datos se actualiza momentáneamente y
luego vuelve al estado anterior.
![Page 32: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/32.jpg)
Modelando una transacción
![Page 33: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/33.jpg)
Cuando no tenemos ACID …
• Atomicidad:× Una transacción se ejecutan sólo a medias pero afecta
el estado de la base de datos
• Consistencia:× Al ejecutar la transacción, la base de datos no
satisface las restricciones de integridad
Aislamiento (Isolation):El resultado final de dos transacciones no es equivalente a correr cada transacción en serie
• Durabilidad:× La base de datos se actualiza momentáneamente y
luego vuelve al estado anterior.
¿Cómo puede una implementación evitar estos tipos de problemas? …
![Page 34: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/34.jpg)
• Atomicidad:× Una transacción se ejecutan sólo a medias pero afecta
el estado de la base de datos
Consistencia:Al ejecutar la transacción, la base de datos no satisface las restricciones de integridad
Aislamiento (Isolation):El resultado final de dos transacciones no es equivalente a correr cada transacción en serie
Durabilidad:La base de datos se actualiza momentáneamente y luego vuelve al estado anterior.
Modelando una transacción
![Page 35: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/35.jpg)
IMPLEMENTANDO UNA BASE DE DATOS CON ACID:
REGISTROS (LOGGING)
![Page 36: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/36.jpg)
Mantener un registro de la transacción
![Page 37: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/37.jpg)
Si hay un problema, revertir el registro
![Page 38: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/38.jpg)
Registros ayudan con …
• Atomicidad:× Una transacción se ejecutan sólo a medias pero afecta
el estado de la base de datos
• Consistencia:× Al ejecutar la transacción, la base de datos no
satisface las restricciones de integridad
• Aislamiento (Isolation):× El resultado final de dos transacciones no es
equivalente a correr cada transacción en serie
• Durabilidad:× La base de datos se actualiza momentáneamente y
luego vuelve al estado anterior.
¿Cuáles problemas podemos evitar con alguna forma de registro? …
![Page 39: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/39.jpg)
Concurrencia/Aislamiento: un problema abierto
Una transacción no puede interferir con otra transacción.
En (4), hay que tener cuidado con el ROLLBACK: no se puede restaurar el valor de saldo antes del paso (1) porque el valor ya fue cambiado por (2).
![Page 40: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/40.jpg)
Concurrencia/Aislamiento: un problema abierto
Una transacción no puede interferir con otra transacción.
En (4), hay que tener cuidado con el ROLLBACK: no se puede restaurar el valor de saldo antes del paso (1) porque el valor ya fue cambiado por (2).
![Page 41: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/41.jpg)
IMPLEMENTACIÓN DE ACID:
SECUENCIABILIDAD (SERIALIZABILITY)
Capítulo 8.3 (es)/16.3 (en) | Ramakrishnan / Gehrke
![Page 42: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/42.jpg)
Registros no ayudan con …
• Atomicidad:× Una transacción se ejecutan sólo a medias pero afecta
el estado de la base de datos
• Consistencia:× Al ejecutar la transacción, la base de datos no
satisface las restricciones de integridad
• Aislamiento (Isolation):× El resultado final de dos transacciones no es
equivalente a correr cada transacción en serie
• Durabilidad:× La base de datos se actualiza momentáneamente y
luego vuelve al estado anterior.
… entonces que podemos hacer con respecto a aislamiento/concurrencia? …
![Page 43: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/43.jpg)
La solución más simple: ejecución serial
E
J
E
C
U
C
I
Ó
N
¿Cuánto es A + B después?
270 + 330 = 600
¿Hay un problema aquí?
¡Ejecución serial es lenta!
¿Se pueden ejecutar partes de T1 y T2 en paralelo? …
![Page 44: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/44.jpg)
¿Ejecución paralela?
E
J
E
C
U
C
I
Ó
N
¿Cuánto es A + B después?
¯\_(ツ)_/¯
Por simplicidad asumiremos un orden de ejecución en el
caso paralelo …
![Page 45: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/45.jpg)
¿Ejecución paralela?
E
J
E
C
U
C
I
Ó
N
¿Cuánto es A + B después?
270 + 330 = 600
![Page 46: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/46.jpg)
¿Ejecución paralela?
E
J
E
C
U
C
I
Ó
N
¿Cuánto es A + B después?
270 + 330 = 600
![Page 47: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/47.jpg)
¿Ejecución paralela?
¿Cuánto es A + B después?
260 + 340 = 600
E
J
E
C
U
C
I
Ó
N
![Page 48: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/48.jpg)
¡Cuidado cuando el orden importe!
¿Cuánto es A + B después?
260 + 340 = 600E
J
E
C
U
C
I
Ó
N
![Page 49: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/49.jpg)
¡Cuidado cuando el orden importe!
¿Cuánto es A + B después?
260 + 340 = 600E
J
E
C
U
C
I
Ó
N
No tenemos ningún problema con la restricción, pero el orden de ejecución puede afectar el resultado.
Dependiendo de la aplicación, a veces puede ser necesario preservar el orden de transacciones y/o aplicar ejecución serial.
![Page 50: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/50.jpg)
¿Ejecución paralela?
¿Cuánto es A + B después?
300 + 340 = 640
E
J
E
C
U
C
I
Ó
N
¿Dónde está el problema?
![Page 51: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/51.jpg)
¿Ejecución paralela?
¿Cuánto es A + B después?
300 + 340 = 640
E
J
E
C
U
C
I
Ó
N
¿Dónde está el problema?
![Page 52: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/52.jpg)
Planificaciones: Secuenciables vs. No Secuenciables
“Secuenciable”
Equivalente a ejecutar transacción T1 y después transacción T2 (serial)
“No secuenciable” …
![Page 53: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/53.jpg)
Planificaciones: Secuenciables vs. No Secuenciables
“Secuenciable”
Equivalente a ejecutar transacción T1 y después transacción T2 (serial)
“No secuenciable” …
Una planificación es una lista de acciones de un conjunto de transacciones en el orden de ejecución.
Una planificación secuenciable tendrá el mismo efecto que una planificación serial (en algún orden de las transacciones).
¿Cómo se puede identificar una planificación secuenciable? (sin ejecutarla y compararla con todas las posibles planificaciones seriales)? …
Seguiremos con la pregunta inversa … ¿cuándo no se puede garantizar que una planificación sea secuenciable?
![Page 54: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/54.jpg)
(1) Conflicto de Lectura–Escritura
¿Cuánto es A + B después?
300 + 340 = 640
E
J
E
C
U
C
I
Ó
N
![Page 55: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/55.jpg)
(1) Conflicto de Lectura–Escritura
¿Cuánto es A + B después?
300 + 340 = 640
E
J
E
C
U
C
I
Ó
N
Conflicto de Lectura–Escritura: (Lecturas no repetibles)
T2 cambia el valor de A que T1 ha leído pero todavía no ha escrito
![Page 56: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/56.jpg)
(2) Conflicto de Escritura–Lectura
E
J
E
C
U
C
I
Ó
N
¿Cuántos serían A y B si se ejecutaran T1 y después T2?
330 y 330
¿Cuántos serán A y B aquí?
330 y 320
¿… T2 y después T1?
340 y 320
![Page 57: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/57.jpg)
(2) Conflicto de Escritura–Lectura
E
J
E
C
U
C
I
Ó
N
¿Cuántos serían A y B si se ejecutaran T1 y después T2?
330 y 330
¿Cuántos serán A y B aquí?
330 y 320
¿… T2 y después T1?
340 y 320
Conflicto de Escritura–Lectura:
El orden de cambio de A es T1 / T2
mientras el orden de B es T2 / T1, entonces el orden de ambos no es
ni T1 / T2 ni T2 / T1
![Page 58: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/58.jpg)
(3) Conflicto de Escritura–Escritura
E
J
E
C
U
C
I
Ó
N
¿Cuántos serán A y B aquí?
1 y 1000
¿Secuenciable? ¡No!
![Page 59: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/59.jpg)
(3) Conflicto de Escritura–Escritura
E
J
E
C
U
C
I
Ó
N
¿Cuántos serán A y B aquí?
1 y 1000
¿Secuenciable? ¡No!
Conflicto de Escritura–Escritura:
T2 sobrescribe T1 y T1 sobrescribe T2
(no hay problema con lecturas aquí)
![Page 60: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/60.jpg)
¿Qué tipo de conflicto hay aquí?
Conflicto de Escritura–Lectura:
A cambia con T1 / T2
B cambia con T2 / T1
¿Qué tipo de conflicto hay aquí?
¡Es secuenciable! (No hay conflicto)
![Page 61: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/61.jpg)
¿Qué tipo de conflicto hay aquí?
Conflicto de Escritura–Lectura:
A cambia con T1 / T2
B cambia con T2 / T1
¿Qué tipo de conflicto hay aquí?
¡Es secuenciable! (No hay conflicto)
¡Los casos son parecidos pero uno es secuenciable y el otro no!
![Page 62: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/62.jpg)
![Page 63: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/63.jpg)
(*) Conflictos parecidos con anulaciones
E
J
E
C
U
C
I
Ó
N
¿Cuánto es A + B después?
270 + 230 = 500
![Page 64: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/64.jpg)
(*) Conflictos parecidos con anulaciones
E
J
E
C
U
C
I
Ó
N
¿Cuánto es A + B después?
270 + 230 = 500
• En una planificación recuperable, cada transacción T se compromete (COMMIT) sólo después de que se comprometan a su vez todas las transacciones desde las cuáles T hayan leído algo.
• Si cada transacción T solamente lee cambios de transacciones comprometidas, se pueden evitar anulaciones en cascada y mantener una planificación recuperable. De lo contrario, si T lee algo de una transacción no comprometida T’ y hay que anular T’, entonces puede ser que haya que anular T también (una anulación en casada) para mantener una planificación recuperable.
Para cumplir con ACID, un sistema de bases de datos debe garantizar que solamente se permitan planificaciones recuperables.
![Page 65: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/65.jpg)
![Page 66: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/66.jpg)
SOLUCIÓN: BLOQUEOS (LOCKS)
![Page 67: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/67.jpg)
El problema
¿Han visto un problema así antes de este curso?
Multihilos (Multithreading)
¿Y qué era la solución (en Java por ejemplo)?
Bloques sincronizados
Conflicto de Escritura–Lectura:
![Page 68: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/68.jpg)
Una solución en Java
Conflicto de Escritura–Lectura:
![Page 69: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/69.jpg)
Una solución en Java
Conflicto de Escritura–Lectura:¿Cómo podrías mejorar el rendimiento del código abajo?
Minimizar el código sincronizado tanto como sea posible
Usar objetos de bloqueos tan especifico que sea posible(por ejemplo, usar un valor de la tabla o una fila de la tabla como el objeto de
bloqueo, no la entera tabla, si es posible)
![Page 70: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/70.jpg)
¿Una solución en un sistema de b.d.d.?
Conflicto de Escritura–Lectura:¿Cómo podrías mejorar el rendimiento del código abajo?
Minimizar el código sincronizado tanto como sea posible
Usar objetos de bloqueos tan especifico que sea posible(por ejemplo, usar un valor de la tabla o una fila de la tabla como el objeto de
bloqueo, no la entera tabla, si es posible)
Una transacción tiene que conseguir bloqueos para los objetos (valores, filas, vista, tablas) que quiere modificar.
Cuando haya terminado con el bloque, lo libera.
Un protocolo de bloqueo especifica las reglas que las transacciones tienen que seguir con respecto a bloqueos.
¡Los mismos conceptos aplican a sistemas de bases de datos!Salvo que es el sistema, no el programador, que tiene que decidir
(automáticamente) el nivel de sincronización, el nivel de bloqueo, etc.
![Page 71: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/71.jpg)
Un protocolo: Bloqueo en 2 fases
• Si una transacción T quiere leer un objeto O, tiene que conseguir un bloqueo compartido sobre O
– Varias transacciones pueden leer el mismo objeto al mismo tiempo
• Si una transacción T quiere modificar un objeto O, tiene que conseguir un bloqueo exclusivo sobre O
– Un bloqueo exclusivo excluye bloqueos compartidos
– T puede leer O (por supuesto)
– Así nadie (aparte de T) puede ni leer ni modificar O mientras T tenga su bloqueo exclusivo sobre O
![Page 72: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/72.jpg)
Conflicto de Lectura–Escritura
¿Cuánto es A + B después?
300 + 340 = 640
E
J
E
C
U
C
I
Ó
N
![Page 73: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/73.jpg)
… con bloqueos
¿Cómo sería la planificación final?
E
J
E
C
U
C
I
Ó
N
![Page 74: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/74.jpg)
… con bloqueos
E
J
E
C
U
C
I
Ó
N
¿A. P. A.?
Todavía permite conflictos …
![Page 75: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/75.jpg)
… conflicto
E
J
E
C
U
C
I
Ó
N
¿Una solución?
…
¿Qué tipo de conflicto hay?
¡Escritura-lectura!
![Page 76: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/76.jpg)
… bloqueo estricto
E
J
E
C
U
C
I
Ó
N
Solución: Liberar los bloqueos sólo cuando la transacción haya terminado (bloqueo estricto) …
![Page 77: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/77.jpg)
Un protocolo: Bloqueo en 2 fases estricto
• Si una transacción T quiere leer un objeto O, tiene que conseguir un bloqueo compartido sobre O
– Varias transacciones pueden leer el mismo objeto al mismo tiempo
• Si una transacción T quiere modificar un objeto O, tiene que conseguir un bloqueo exclusivo sobre O
– Un bloqueo exclusivo excluye bloqueos compartidos
– T puede leer O (por supuesto)
– Así nadie (aparte de T) puede ni leer ni modificar O mientras T tenga su bloqueo exclusivo sobre O
• (Solo) cuando T haya terminado, libará sus bloqueos
![Page 78: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/78.jpg)
Un protocolo: Bloqueo en 2 fases estricto
• Si una transacción T quiere leer un objeto O, tiene que conseguir un bloqueo compartido sobre O
– Varias transacciones pueden leer el mismo objeto al mismo tiempo
• Si una transacción T quiere modificar un objeto O, tiene que conseguir un bloqueo exclusivo sobre O
– Un bloqueo exclusivo excluye bloqueos compartidos
– T puede leer O (por supuesto)
– Así nadie (aparte de T) puede ni leer ni modificar O mientras T tenga su bloqueo exclusivo sobre O
• (Solo) cuando T haya terminado, libará sus bloqueos
La forma más popular de garantizar secuenciabilidad.
![Page 79: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/79.jpg)
… pero cuidado!
E
J
E
C
U
C
I
Ó
N
¿A. P. A.?
Hay que evitar interbloqueos (deadlocks)
Solución 1: Plazos para terminar o …
Solución 2: Detectar ciclos en transacciones esperando o …
![Page 80: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/80.jpg)
… pero cuidado!
E
J
E
C
U
C
I
Ó
N
¿A. P. A.?
Hay que evitar interbloqueos (deadlocks)
Solución 1: Plazos para terminar o …
Solución 2: Detectar ciclos en transacciones esperando o …
![Page 81: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/81.jpg)
Bloqueo en 2 fases conservativo
E
J
E
C
U
C
I
Ó
N
Solución 3: La transacción adquieren todos los bloqueos necesarios al inicio y de una forma atómica …
¿Es estricto?
No …
![Page 82: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/82.jpg)
Bloqueo en 2 fases estricto/conservativo
E
J
E
C
U
C
I
Ó
N
Sólo se pueden paralelizar transacciones que no compartan objetos
(lo más “fácil” pero lo menos paralelizable)
![Page 83: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/83.jpg)
![Page 84: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/84.jpg)
Pero para un usuario …
![Page 85: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/85.jpg)
Hemos terminado con bases de datos relacionales
![Page 86: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/86.jpg)
Planificación del curso
• 24 de mayo: lab (transacciones)
• 26 de mayo: auxiliar
• 29 de mayo: clase (XML)
• 31 de mayo: lab (XML)
• 5 de junio: proyectos
• 7 de junio: proyectos
• 12 de junio: clase (RDF)
…
![Page 87: CC3201-1 B DATOS O 2017 Clase 10: Transacciones y ACIDaidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-10.pdfel estado de la base de datos •Consistencia: × Al ejecutar la](https://reader030.vdocuments.co/reader030/viewer/2022040403/5e88248c62aad006fb491ed1/html5/thumbnails/87.jpg)
Preguntas?