CC3201-1 B DATOS P 2016 Clase 11: Integridad...

53
CC3201-1 BASES DE D ATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones, ACID (I) Aidan Hogan [email protected]

Transcript of CC3201-1 B DATOS P 2016 Clase 11: Integridad...

Page 1: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

CC3201-1BASES DE DATOS

PRIMAVERA 2016

Clase 11: Integridad, Transacciones, ACID (I)

Aidan Hogan

[email protected]

Page 2: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Un programador freelance abre una cuenta

Page 3: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Y (por supuesto) hay una base de datos

Page 4: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

La base de datos: integridad

Page 5: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Modelo Relacional: Restricciones

Restricciones (de integridad):

son restricciones formales

que imponemos a un esquema

que todas sus instancias

deben satisfacer

Page 6: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

RESTRICCIONES DE INTEGRIDAD(Integrity Constraints)

Capítulo 5.7 Database Management Systems,Ramakrishnan / Gehrke (Third Edition)

Page 7: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones básicas: llaves, nulos, domino

Page 8: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones básicas: valores por defecto

Page 9: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones de unicidad

La llave primaria implica una restricción de unicidad. La unicidad representa una llave candidata: se pueden tener varias llaves candidatas pero una sola llave primaria.

Page 10: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Nombrar (y borrar) restricciones

Más fácil cambiar restricciones posteriormente.

Si hay una violación, el mensaje de error será más intuitiva si las restricciones

tienen nombres intuitivos.

Page 11: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Crear dominios: VARCHAR

Page 12: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Crear dominios: INTEGER

Page 13: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Dominios: compatibles con el tipo base

Se puede comparar valores del domino con otros valores como fuera del tipo base

Page 14: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Tipos: son distintos a otros tipos

No se puede comparar valores del nuevo tipo con valores de otros tipos (solo entre sí).

Actualizado.

Page 15: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Tipos: son distintos a otros tipos

No se puede usar funciones del tipo base con valores del nuevo tipo.

Actualizado.

Page 16: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Tipos son estándares (en SQL)

Pero Postgres solo suporte tipos “complejos”

Actualizado.

Page 17: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones sobre varias columnas

Page 18: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones sobre varias tablas

Page 19: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Postgres no permite consultas anidadas en CHECK.

Actualizado.

Page 20: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones de llaves externas

Cada cuenta en Ingreso tiene que estar en Cuenta.número.

Page 21: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones sobre varias tablas (!)

¿Por qué la ponemos en Ingreso cuando involucra Gasto igualmente? Por

ejemplo, si agregáramos la milésima tupla (con la misma cuenta y fecha) a Gasto, ¡no tendríamos una violación!

¿Algún problema aquí? …

¿Alguna solución?

Duplicar la restricción en Gasto o …

Page 22: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Postgres no permite consultas anidadas en CHECK.

Actualizado.

Page 23: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Asertos: Restricciones independientes

La restricción no depende de ni una tabla ni la otra.

Rechazará alguna operación en el esquema que violaría la restricción

… pero puede ser más costosa/compleja así.

Page 24: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

¡Garantizar integridad con restricciones!

Page 25: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones sobre varias tablas (!!)

¿A. P. A.? …

¿A. S.? …

Page 26: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

TRANSACCIONES

Page 27: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

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 28: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Queda menos de una semana antes del día de San Valentín …

… y Kelvin quiere organizar una vacación para él y su polola

Page 29: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Transacciones: START TRANSACTION/COMMIT

START TRANSACTION (o a veces BEGIN) inicia la transacción

COMMIT realiza/guarda los cambios

Page 30: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

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 31: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Transacciones: ROLLBACK

ROLLBACK deshace/borra los cambios desde el inicio de la transacción

Page 32: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Transacciones: SAVEPOINT

ROLLBACK puede deshacer/borrar los cambios desde un punto especifico con SAVEPOINT

Page 33: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Transacciones / Restricciones: IMMEDIATE

Por defecto, se aplica la restricción inmediatamente después de cada sentencia

Actualizado.

Page 34: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Transacciones / Restricciones: DEFERRABLE

Actualizado.

DEFERRABLE define una restricción que se puede diferir hasta un COMMIT

DEFERRED difiere la restricción hasta el COMMIT en la transacción actual

Page 35: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Transacciones / Restricciones: DEFERRABLE

Actualizado.

DEFERRABLE INITIALLY DEFERRED define una restricción que sea diferido por

defecto hasta un COMMIT

Page 36: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Restricciones diferibles son estándares

Pero Postgres no permite diferir restricciones usando ni CHECK ni NOT NULL

Page 37: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Una transacción con valores dinámicosActualizado.

¿Valor final de saldo_clp en Cuenta? ¡22500! Leemos un valor de Gasto que no hemos guardado

Page 38: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Una transacción con valores dinámicosActualizado.

Page 39: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Si parece demasiado complejo, se puedeusar acceso programático con transacciones …

… veremos más en el lab.

Page 40: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

LAS GARANTIAS DE ACID

Atomicidad, Consistencia, Aislamiento, Durabilidad

(Atomicity, Consistency, Isolation, Durability)

Capítulo 8.1, Database Management Systems,Ramakrishnan / Gehrke (Third Edition)

Page 41: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

No hay un solo usuario …

… hay que tener cuidado con la concurrencia

Page 42: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Una cuenta con varios usuarios

¿Qué será en resultado final? …

Page 43: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Caos

Page 44: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Esta vez con transacciones …

¿Qué será en resultado final? Se rechazará una transacción.

Page 45: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

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 46: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

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 47: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

ACID: Atomicidad

No se puede actualizar el saldo sin actualizar el gasto directamente después.

(Si alguna actualización falla, ambas fallan.)

Page 48: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

ACID: Consistencia

Si el resultado de la transacción no satisface todas las restricciones, fallará.

Page 49: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

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 50: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

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 51: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Entonces con las garantías de ACID …

… todo está tranquilo.

Page 52: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

LA PROXIMA VEZ, CONTINUAREMOS CON LA PREGUNTA:

¿CÓMO IMPLEMENTA UN SISTEMA DE B. DE D. LAS GARANTÍAS DE ACID?

Capítulo 8.2+, Database Management Systems,Ramakrishnan / Gehrke (Third Edition)

Page 53: CC3201-1 B DATOS P 2016 Clase 11: Integridad ...aidanhogan.com/teaching/cc3201-1-2016/lectures/BdD2016-11.pdf · CC3201-1 BASES DE DATOS PRIMAVERA 2016 Clase 11: Integridad, Transacciones,

Preguntas?