Aidan Hogan aidhog@gmail.com CC3201-1 Bases de Datos Primavera 2016 Clase 11: Integridad, Transacciones, ACID (I) Aidan Hogan aidhog@gmail.com.

Slides:



Advertisements
Presentaciones similares
Teórico: Modelo Relacional
Advertisements

Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP
Transacción Es una unidad de trabajo sobre la base de datos
Universidad del Cauca – FIET – Departamento de Sistemas
CAPITULO 10 Manejando Restricciones
Elaborado por: Guillermo Baquerizo I Término
DDL Unidad 2. Lenguaje estándar SQL El SQL es un lenguaje estándar de definición y manipulación (y consulta) de bases de datos relacionales. El SQL estándar.
En bases de datos, una consulta es el método para acceder a los datos en las bases de datos. Con las consultas se puede modificar, borrar, mostrar y agregar.
Normalización Consiste en designar y aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad- relación al modelo relacional.
Curso de Aptitud Pedagógica 2006/2007 OpenOffice Base Introducción a las Bases de Datos.
Universidad Pedagógica Francisco Morazán Tema: SISTEMA DE BASE DE DATOS Grupo: 5 Integrantes: Danilo Hernán Lagos Avilés Erlinda Yohanna Díaz Elvir Indira.
Administración de Sistemas Gestores de Bases de Datos.
Configuración de un servidor web 1. Una vez terminado el proceso de instalación de los paquetes a utilizarse vamos a empezar ingresando como administrador.
BASE DE DATOS EN LA WEB POR- OSIRYS MARCIAGA JESUS NIETO.
CC Bases de Datos Otoño Clase 8: SQL (IV) Acceso programático
Aidan Hogan CC Bases de Datos Primavera 2016 Clase 10: SQL (V) El Hacker Contraataca Acceso programático Aidan Hogan
Ingreso , proceso y salida de datos
CC Bases de Datos Otoño 2017 Clase 3: ER II y Álgebra Relacional
Paul Leger Formas Normales: Lineamientos formales para un buen diseño y la necesidad de por qué son necesarias las dependencia funcionales.
Gestión de transacciones
Convenciones de nomenclatura y diseño
Base de Datos Conjunto de información, la cual ha sido organizada y presentada para servir un propósito específico.
Lineamientos informales para un buen diseño
Paul Leger Transacciones Paul Leger
CC Bases de Datos Primavera Clase 12: Implementación de ACID
Lineamientos para un buen diseño de base de datos
SQL: Structured Query Language
Stored Procedures Firebird.
SQL Prof. Martín Contreras.
NORMALIZACION El proceso de normalización de bases de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo.
SQL: structured Query Language
EL MODELO RELACIONAL Creado por Edgar Codd, 1970:
TRANSACCIONES ATÓMICAS: ING. WALTER ZULOAGA CONTRERAS ALUMNOS: SHARON Y. CONZA CASTILLO BEKER MONTERROSO VALVERDE.
Restricciones de integridad en el modelo relacional
4. Concurrencia.
UNIVERSIDAD PRIVADA SAN JUAN BAUTISTA ESCUELA PROFESIONAL DE INGENIERIA DE COMPUTACION Y SISTEMAS TRANSACCIONES Integrantes: Cancho Ramirez Kiara Angulo.
Modelo de 3 capas. Qué es la arquitectura de una aplicación? La arquitectura se refiere a la forma en la que es diseñada tanto física como lógicamente.
MODELO RELACIONAL.
Taller de Bases de Datos Ingeniería en Sistemas Computacionales Clave de la asignatura: SCA-1025 (Créditos) SATCA1: 0 – 4 – 4.
ADMINISTRACIÓN DE USUARIOS
UN EJEMPLO DE LECTURA CONSISTENTE EN INNODB
Conceptos Relacionados Unidad I. Parte A.
Base de Datos II 2da Parte. Propiedad ACID  La propiedad ACIDa es una carácterística de un DBMS para poder compartir datos en forma segura.  A :
Una transacción corresponde a un grupo de sentencias que representan una unidad de trabajo y deben ejecutarse en su totalidad.
Administración de Base de Datos Recuperación de datos Profesora: Mercy Ospina UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS.
Sugiero cambios a lo de Amarillo / lo de azul no tiene expositor aun 1 concepto de transaccion (Tejada) 2. Fundamentos d elos procesos de Transaccion.
15/08/2018Curso Bases de Datos1 DISEÑO DE BASES DE DATOS Francisco Moreno.
CC Bases de Datos Otoño Clase 3: Modelo Entidad-Relación (II)
Unidad V :- Integridad de datos.
CC Bases de Datos Otoño Clase 8: SQL: Acceso Programático,
Generaciones de Bases de Datos
Universidad Alonso de Ojeda Facultad de Ingeniería
Modificación de datos. Introducción Uso de transacciones Inserción de datos Eliminación de datos Actualización de datos Consideraciones acerca del rendimiento.
Normalmente emparejamos tablas que están relacionadas entre sí y una de las columnas de emparejamiento es clave principal, pues en este caso, Cuando una.
BASES DE DATOS II.
MODELADO DE DATOS Tema 2: Normalizar un diseño de bases de datos.
CC Bases de Datos Otoño Clase 5: El Cálculo Relacional + SQL (I)
Aidan Hogan CC Bases de Datos Otoño 2019 Clase 7: Actualizaciones, Restricciones, Formas Normales Aidan.
CC Bases de Datos Otoño Clase 3: Modelo Entidad-Relación (II)
CC Bases de Datos Otoño Clase 10: SQL: Vistas y Disparadores
CC Bases de Datos Otoño Clase 9: SQL: Acceso Programático,
CC Bases de Datos Otoño 2019 Clase 11: Transacciones y ACID
CC Bases de Datos Otoño 2019 Clase 4: El Álgebra Relacional
ALGEBRA RELACIONAL UNIDAD 3 ALGEBRA RELACIONAL. INTRODUCCIÓN Se forma a partir de la matemática formal Creada por Edgar Frank Codd en 1972 Concede comportamineto.
BASES DE DATOS NORMALIZACION. Normalización  ¿Qué es la normalización?  Es la aplicación de un conjunto de reglas que permite aprobar la construcción.
Ha llegado el momento de dar una mirada al interior de los Sistemas Operativos. En las siguientes secciones examinaremos cuatro estructuras distintas.
Base de Datos Ing. Ricardo Tillero UNIDAD 3: NORMALIZACIÓN.
Taller de Bases de Datos Ingeniería en Sistemas Computacionales M. en I.S.C Mariana Carolyn Cruz Mendoza Por Alexis Orlando Rebollar Lopez.
El SQL es el lenguaje estándar ANSI/ISO de definición, manipulación y control de bases de datos relacionales. La sigla que se conoce como SQL corresponde.
Lenguaje de definición de datos. Un lenguaje de base de datos o lenguaje de definición de datos es un lenguaje proporcionado por el sistema de gestión.
Transcripción de la presentación:

Aidan Hogan aidhog@gmail.com CC3201-1 Bases de Datos Primavera 2016 Clase 11: Integridad, Transacciones, ACID (I) Aidan Hogan aidhog@gmail.com

Un programador freelance abre una cuenta

Y (por supuesto) hay una base de datos

La base de datos: integridad

Modelo Relacional: Restricciones Restricciones (de integridad): son restricciones formales que imponemos a un esquema que todas sus instancias deben satisfacer

Restricciones de integridad (Integrity Constraints) Restricciones de integridad Capítulo 5.7 Database Management Systems, Ramakrishnan / Gehrke (Third Edition)

Restricciones básicas: llaves, nulos, domino

Restricciones básicas: valores por defecto

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.

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.

Crear dominios: VARCHAR

Crear dominios: INTEGER

Dominios: compatibles con el tipo base Se puede comparar valores del domino con otros valores como fuera del tipo base

Tipos: son distintos a otros tipos Actualizado. Tipos: son distintos a otros tipos No se puede comparar valores del nuevo tipo con valores de otros tipos (solo entre sí).

Tipos: son distintos a otros tipos Actualizado. Tipos: son distintos a otros tipos No se puede usar funciones del tipo base con valores del nuevo tipo.

Tipos son estándares (en SQL) Actualizado. Tipos son estándares (en SQL) Pero Postgres solo suporte tipos “complejos”

Restricciones sobre varias columnas

Restricciones sobre varias tablas

Postgres no permite consultas anidadas en CHECK. Actualizado. Postgres no permite consultas anidadas en CHECK.

Restricciones de llaves externas Cada cuenta en Ingreso tiene que estar en Cuenta.número.

Restricciones sobre varias tablas (!) ¿Algún problema aquí? … ¿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! ¿Alguna solución? Duplicar la restricción en Gasto o …

Postgres no permite consultas anidadas en CHECK. Actualizado. Postgres no permite consultas anidadas en CHECK.

Asertos: Restricciones independientes Rechazará alguna operación en el esquema que violaría la restricción La restricción no depende de ni una tabla ni la otra. … pero puede ser más costosa/compleja así.

¡Garantizar integridad con restricciones!

Restricciones sobre varias tablas (!!) ¿A. P. A.? … ¿A. S.? …

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)

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

Transacciones: START TRANSACTION/COMMIT START TRANSACTION (o a veces BEGIN) inicia la transacción COMMIT realiza/guarda los cambios

Transacciones (por defecto) Si no hay una transacción explicita, por defecto, Postgres hace un COMMIT después de cada sentencia (pero se puede cambiar la configuración)

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

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

Transacciones / Restricciones: IMMEDIATE Actualizado. Transacciones / Restricciones: IMMEDIATE Por defecto, se aplica la restricción inmediatamente después de cada sentencia

Transacciones / Restricciones: DEFERRABLE Actualizado. Transacciones / Restricciones: DEFERRABLE 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

Transacciones / Restricciones: DEFERRABLE Actualizado. Transacciones / Restricciones: DEFERRABLE DEFERRABLE INITIALLY DEFERRED define una restricción que sea diferido por defecto hasta un COMMIT

Restricciones diferibles son estándares Pero Postgres no permite diferir restricciones usando ni CHECK ni NOT NULL

Una transacción con valores dinámicos Actualizado. Una transacción con valores dinámicos ¿Valor final de saldo_clp en Cuenta? ¡22500! Leemos un valor de Gasto que no hemos guardado

Una transacción con valores dinámicos Actualizado. Una transacción con valores dinámicos

Si parece demasiado complejo, se puede usar acceso programático con transacciones … … veremos más en el lab.

Atomicidad, Consistencia, Aislamiento, Durabilidad (Atomicity, Consistency, Isolation, Durability) LAS GARANTIAS DE ACID Capítulo 8.1, Database Management Systems, Ramakrishnan / Gehrke (Third Edition)

No hay un solo usuario … … hay que tener cuidado con la concurrencia

Una cuenta con varios usuarios ¿Qué será en resultado final? …

Caos

Esta vez con transacciones … ¿Qué será en resultado final? Se rechazará una transacción.

Garantías de ACID Atomicidad: Consistencia: Aislamiento (Isolation): 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

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.

(Si alguna actualización falla, ambas fallan.) ACID: Atomicidad No se puede actualizar el saldo sin actualizar el gasto directamente después. (Si alguna actualización falla, ambas fallan.)

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

ACID: Aislamiento (Isolation) (4) 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).

Una vez que haya un COMMIT exitoso, se persisten los cambios. 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.)

Entonces con las garantías de ACID … … todo está tranquilo.

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)

Preguntas?