Objetivos – conocer la arquitectura ANSI/SPARC para sistemas de gestión de bases de datos – conocer el concepto de independencia de datos en bases de datos y los mecanismos asociados – conocer los mecanismos y estrategias para el control de la integridad (calidad) y seguridad (privacidad) en bases de datos Escuela Universitaria de Informática Semestre 2B 1/03/01 Temario Bases de datos 2 1. Sistema de gestión de bases de datos 1. Sistema de gestión de bases de datos: componentes y funciones 2. Independencia de datos 3. Integridad SGBD: Software que permite la creación y manipulación de bases de datos SGBD 3.1. Concepto de transacción. Procesamiento de transacciones 3.2. Integridad semántica 3.3. Accesos concurrentes 3.4. Reconstrucción de la base de datos modelo de datos (modelo relacional) estructuras de datos y operadores asociados 4 Seguridad 4.1. Control de usuarios 4.2. Control de accesos permitidos 1/03/01 Bases de datos 3 1/03/01 Bases de datos 4 1. Sistema de gestión de bases de datos 1. Sistema de gestión de bases de datos SGBD: Software que permite la creación y manipulación de bases de datos Programas de aplicación Objetivos de técnicas BD Funciones SGBD Componentes SGBD • descripción unificada e independiente de los datos • independencia de las aplicaciones • definición de vistas parciales Definición de datos a varios niveles: • esquema lógico • esquema interno • esquemas externos Lenguajes de definición de esquemas y traductores asociados SGBD Base de datos 1/03/01 Bases de datos 5 1. Sistema de gestión de bases de datos Objetivos de técnicas BD Gestión de la información Funciones SGBD Objetivos de técnicas BD Manipulación de los datos: Lenguajes de manipulación y • consulta traductores asociados • actualización Integridad y seguridad de los datos Bases de datos Bases de datos 6 1. Sistema de gestión de bases de datos Componentes SGBD Gestión y administración de la base de datos 1/03/01 1/03/01 Herramientas para: • reestructuración • simulación • estadísticas • impresión 7 1/03/01 Funciones SGBD Componentes SGBD Control de: • integridad semántica • accesos concurrentes • reconstrucción en caso de fallo • seguridad (privacidad) Herramientas para: • control integridad • reconstrucción • control seguridad Bases de datos 8 1.2. Esquema del acceso del SGBD a los datos 1.2. Esquema del acceso del SGBD a los datos Esquema externo aplicación 1: CREATE VIEW Administrativo (dni, nombre, salario_men) AS SELECT dni, nombre, salario/14 FROM Empleado WHERE tipo=‘AD’ Programas de aplicación SGBD Esquema lógico: Empleado(dni, nombre, dirección, salario, tipo) CP: {dni} Esquema Interno: Fichero ordenado Empleado con índice primario sobre el campo dni en el camino h:/disco1/gerencia Base de datos 1/03/01 Bases de datos 9 1.2. Esquema del acceso del SGBD a los datos 1/03/01 Bases de datos 10 1.2. Esquema del acceso del SGBD a los datos Usuario 1 Aplicación 1: accede a la información a tracés del esquema externo 1 Consulta sobre las estructuras de datos del esquema externo 1 SELECT nombre, salario_men FROM Administrativo WHERE dni = parámetro área de datos de la aplicación 1 Aplicación 1 datos Esquema externo 1 Esquema lógico área de trabajo del SGBD 1 7 Solicita registro de fichero de datos 2 SGBD SGBD: control del acceso y resolución de la operación pedida Esquema interno SO: Manipulación de los drivers de los dispositivos de memoria secundaria Correspondencia entre esquemas registro mandato operación Bases de datos 6 buffers de memoria 11 4 Solicita bloque de datos del disco bloque flujo de datos 1/03/01 Administrador de ficheros del SO 3 5 BD Operación de entrada-salida Administrador de E/S del SO 2. Independencia de datos 2. Independencia de datos Grupo de estudio ANSI/SPARC en 1977 propuesta de arquitectura para los SGBD que plantea la definición de la base de datos a tres niveles de abstracción: Propiedad que asegura que los programas de aplicación sean independientes de los cambios realizados en datos que no usan o en detalles de representación física de los datos a los que acceden • Nivel conceptual ΤEsquema conceptual descripción de la BD con independencia del SGBD • Nivel interno ΤEsquema interno descripción de la BD en términos de su representación física •Nivel externo ΤEsquema externo descripción de las vistas parciales de la BD que poseen los distintos usuarios 1/03/01 Bases de datos 13 1/03/01 Bases de datos 2. Independencia de datos 2. Independencia de datos Debido a que no existe un modelo conceptual generalizado y accesible a los distintos tipos de SGBD, se prefiere distinguir cuatro niveles: Un SGBD que soporte la arquitectura de niveles debe: • Nivel conceptual ΤEsquema conceptual descripción organizativa de la BD • Nivel lógico ΤEsquema lógico descripción de la BD en términos del modelo de datos del SGBD • Nivel interno ΤEsquema interno descripción de la BD en términos de su representación física • permitir definir los distintos esquemas de la base de datos (excepción del esquema conceptual) • establecer las correspondencias entre los esquemas • asilar los esquemas: los cambios en un esquema no afecten a los esquemas de nivel superior y en última instancia a los programas de aplicación •Nivel externo ΤEsquema externo descripción de las vistas parciales de la BD que poseen los distintos usuarios 1/03/01 Bases de datos 14 INDEPENDENCIA DE DATOS 15 1/03/01 Bases de datos 16 2. Independencia de datos 2. Independencia de datos • Independencia lógica entre el esquema lógico y los externos: Esquema ext erno 1 Esquema ext erno 2 … Esquema ext erno n Correspondencia externo-lógico Independencia lógica Los esquemas externos y los programas de aplicación no deben de verse afectados por modificaciones del esquema lógico sobre datos que no usan Esquema lógico • Independencia física entre el esquema interno y el lógico: Correspondencia lógico-físico Independencia física Esquema f ísico el esquema lógico no debe de verse afectado por cambios en el esquema interno referentes a la implementación de las estructuras de datos, modos de acceso, tamaños de páginas, caminos de acceso, etc. 1/03/01 2. Independencia de datos Bases de datos 18 2. Independencia de datos Usuario 1 Consulta sobre las estructuras de datos del esquema externo 1 7.2 2.1 Esquema interno SGBD • Ligadura física Administrador de ficheros del SO 3 2.3 • Cuando se produce la ligadura desaparece la independencia 6 Correspondencia entre esquemas registro buffers de memoria mandato (orden) 4 Solicita bloque de datos del disco bloque flujo de datos operación • Ligadura lógica Solicita registro de fichero de datos Esquema lógico 2.2 • Transformación del esquema externo en el esquema interno datos área de trabajo del SGBD 7.1 1 Esquema externo 1 LIGADURA: área de datos de la aplicación 1 Aplicación 1 5 BD Operación de entrada-salida Administrador de E/S del SO 1/03/01 Bases de datos 20 2. Independencia de datos 2. Independencia de datos Programa de aplicación: Momento de la ligadura: • Ligadura en tiempo de compilación • en compilación o en la precompilación Transformación del esquema externo que usa el programas en términos del esquema interno • en el montaje • al iniciarse la ejecución o en el momento de conectarse Cualquier cambio del esquema lógico y/o interno requiere una recompilación • en cada acceso a la base de datos • Ligadura al ejecutar el programa Mayor independencia cuanto más tarde se produzca la ligadura No requiere ninguna acción sobre el programa Mayor coste cuanto más tarde se produzca la ligadura 1/03/01 Bases de datos 21 1/03/01 3. Integridad 3. Integridad • Objetivo de la tecnología de bases de datos • Calidad de la información: • Calidad de la información: Bases de datos 22 – SGBD debe asegurar que los datos se almacenan correctamente “los datos deben estar estructurados reflejando adecuadamente, los objetos, relaciones y las restricciones existentes en la parcela del mundo real que modela la base de datos” – SGBD debe asegurar que las actualizaciones de los usuarios sobre la base de datos se ejecutan correctamente y que se hacen permanentes • Representación de los objetos, relaciones y restricciones en el esquema de la base de datos • La información contenida en la base de datos debe preservar la definición del esquema 1/03/01 Bases de datos 23 1/03/01 Bases de datos 24 3. Integridad 3. Integridad: accesos concurrente Cuentas Herramientas del SGBD orientadas a la integridad para: – Comprobar (frente a actualizaciones) las restricciones de integridad del esquema Nro. Saldo 123 1000 555 2000 t1 – Controlar la ejecución correcta de las actualizaciones (entorno concurrente) – Recuperar (reconstruir) la base de datos en caso de pérdidas o accidentes 1/03/01 Bases de datos 25 3. Integridad: recuperación P1 leer(123, saldo) t2 t3 leer(123, saldo) saldo←saldo-100 t4 Cuentas Nro. Saldo t5 123 800 t6 555 2000 1/03/01 P2 saldo←saldo-200 escribir(123, saldo) escribir(123, saldo) Bases de datos 26 3. Integridad: transacciones • La integridad de la base de datos peligra generalmente por las operaciones de acceso de las aplicaciones 13-12-93: Actualización de cuentas Cuentas • Las operaciones de acceso a una base de datos se organizan en transacciones Copia de seguridad (12-12-93) Tiempo transacción nº 51: ¡fallo del sistema! Procedimiento de recuperación: • sustituir el fichero de Cuentas por su copia de seguridad TRANSACCIÓN Secuencia de operaciones de acceso a la base de datos que constituyen una unidad lógica de ejecución Efecto negativo: • se han perdido las actualizaciones de 50 transacciones 1/03/01 Bases de datos 27 1/03/01 Bases de datos 28 3. Integridad: transacciones 3. Integridad: transacciones Emp(dni, nombre, dir, dept) CP: {dni} CAj: {dept} → Dep 1) Inserción en Dep: Dep(cod, nombre, ubicación) CP: {cod} 2) Modificación de Emp en la tupla con dni 20 <d2, “Personal”, “Planta 3ª”> ERROR: la restricción R1 no se cumple R1: ∀Dx (Dep(Dx) →Τ∃Ex (Emp(Ex) ∧ Dx.cod = Ex.dept )) Inserción de un nuevo departamento: 1) Modificación de Emp en la tupla con dni 20 <d2, “Personal”, “Planta 3ª”> ERROR: la clave ajena sobre dept en Emp no se cumple cuyo primer empleado es el de dni 20 2) Inserción en Dep: 1/03/01 Bases de datos 29 1/03/01 <d2, “Personal”, “Planta 3ª”> Bases de datos 3. Integridad: transacciones 3. Integridad: transacciones Operaciones de las transacciones relevantes para el SGBD: Operaciones de las transacciones relevantes para el SGBD: – leer(X): lectura o consulta del dato X de la base de datos sobre la variable del programa del mismo nombre – leer(X): 1. buscar la dirección del bloque que contiene el dato X 2. copiar el bloque a un buffer de memoria principal – escribir(X): actualización (inserción, borrado o modificación) del dato X de la base de datos usando la variable del mismo nombre del programa 1/03/01 Bases de datos 31 30 3. copiar el dato X del buffer a la variable X del programa 1/03/01 Bases de datos 32 3. Integridad: transacciones 3. Integridad: transacciones Operaciones de las transacciones relevantes para el SGBD: Operaciones de definición de las transacciones: • principio: indica el comienzo de la transacción – escribir(X): 1. buscar la dirección del bloque que contiene el dato X • fin: indica que se han terminado todas las operaciones de la transacción. 2. copiar el bloque a un buffer de memoria principal 3. copiar el dato X de la variable del programa a la posición adecuada en el buffer 4. copiar el bloque actualizado del buffer al disco 1/03/01 Bases de datos • confirmación: indica el éxito de la transacción, permitiendo que el SGBD guarde los cambios efectuados en la base de datos • anulación: indica el fracaso de la transacción debido a algún motivo. El SGBD deshace todos los posibles cambios efectuados por la transacción 33 3. Integridad: transacciones 1/03/01 Bases de datos 34 3. Integridad: transacciones Propiedades que deben cumplir las transacciones: principio activa fin parcialmente confirmada • atomicidad: una transacción es una unidad atómica de ejecución (o se ejecutan todas sus operaciones o ninguna) confirmación confirmada • consistencia: la transacción debe dar lugar a un estado de la base de datos consistente (se cumplen todas las restricciones de integridad) anulación anulación fallada terminada • aislamiento: las modificaciones introducidas por una transacción no confirmada no son visibles al resto de transacciones • persistencia: la confirmación de implica la grabación de los cambios introducidos en la base de datos, de forma que no se puedan perder por un fallo del sistema o de otras transacciones 1/03/01 Bases de datos 35 1/03/01 Bases de datos 36 3. Integridad: integridad semántica 3. Integridad: integridad semántica • Restricción de integridad: • Tipos de restricciones de integridad: Propiedad del mundo real que modela la base de datos – estáticas: se deben cumplir en cada estado de la base de datos • Las restricciones se definen en el esquema lógico y el SGBD debe velar por su cumplimiento. – de transición: se deben cumplir en dos estados consecutivos • La comprobación se realiza cuando la base de datos cambia (se ejecuta una operación de actualización) • Las restricciones que no se incluyen en el esquema de la base de datos se han de mantener en los programas de aplicación 1/03/01 Bases de datos 37 1/03/01 Bases de datos 38 3. Integridad: integridad semántica 3. Integridad: integridad semántica • Restricciones en el SQL/92: – estáticas: sobre dominios: de valor sobre atributos: valor no nulo, de rango, etc. sobre relaciones: clave primaria, unicidad y claves ajenas. sobre la base de datos: condiciones de búsqueda generales (no suelen mantenerlas los sistemas comerciales) • cuando se comprueba: después de cada operación, al final • acciones compensatorias: • Procedimientos de comprobación de la integridad : – programación de la comprobación por parte del diseñador – se incluyen en el esquema de la base de datos las restricciones complejas – en los procedimientos se debe incluir: operaciones que los activan código a ejecutar que incluye operaciones sobre la base de datos acciones de rechazo o compensación en caso de violación – de transición: se deben cumplir en dos estados consecutivos (no suelen mantenerlas los sistemas comerciales) 1/03/01 Bases de datos 39 1/03/01 Bases de datos 40 3. Integridad: control de accesos concurrentes 3. Integridad: control de accesos concurrentes • El SGBD debe controlar los accesos concurrentes de las aplicaciones Pérdida de las actualizaciones • Problemas por los accesos concurrentes: – pérdida de las actualizaciones – obtención de información incoherente de estados válidos de la base de datos P1 P2 R a0 b0 lee(R) lee(R) – lectura de datos actualizados que no han sido confirmados escribir(R(a1, b0)) escribir(R(a0, b1)) tiempo 1/03/01 Bases de datos 41 1/03/01 Bases de datos 42 3. Integridad: control de accesos concurrentes 3. Integridad: control de accesos concurrentes Obtención de información incoherente Lectura de datos actualizados sin confirmar P1: Obtención del total de saldos Cuentas corrientes P2: Transferencia de la cuenta 100 a la 1 P1 P1: Cambia el campo A del registro R P2: Lee el campo A del registro R y lo usa P2 1/03/01 … lee(C100) escribir(C100-X) lee(C1) escribir(C1+X) lee(C100) tiempo R a0 escribir(R(a1)) … … P2 lee(R) lee(C1) lee(C2) lee(C50) lee(C51) P1 100000 anulación lee(R) utiliza el valor a1 … 200000 tiempo Error: excede en X Bases de datos 43 1/03/01 Error: usa un dato inválido Bases de datos 44 3. Integridad: reconstrucción de la base de datos 3. Integridad: reconstrucción de la base de datos Las propiedades de atomicidad y persistencia de una transacción obligan a que el SGBD asegure que: Pérdidas de memoria principal a) si se confirma, los cambios efectuados son grabados en la base de datos y que no se pierden b) si es anulada, los cambios efectuados sobre la base de datos son deshechos 1/03/01 Bases de datos 45 • Desajuste temporal entre la confirmación de una transacción y la grabación de sus campos en memoria secundaria • La transacción está confirmada y sus cambios están en los bloques de los buffers • En el intervalo se produce un fallo con pérdida de memoria principal y los bloques de los buffers se pierden 1/03/01 Bases de datos 3. Integridad: reconstrucción de la base de datos 3. Integridad: reconstrucción de la base de datos Pérdidas de memoria secundaria Causas del fallo de un transacción • Transacción confirmada y cuyos cambios están grabados en la base de datos • Fallo en la memoria secundaria y estos cambios se pierden 46 • Locales a la transacción (funcionamiento del sistema normal) – errores en la transacción (acceso a la base de datos incorrecto, cálculos fallidos, etc.) – excepciones (violación de la integridad, de la seguridad, etc.) – control de la concurrencia (estado de bloqueo entre dos transacciones) – decisiones humanas 1/03/01 Bases de datos 47 1/03/01 Bases de datos 48 3. Integridad: reconstrucción de la base de datos 3. Integridad: reconstrucción de la base de datos Reconstrucción frente a fallos del sistema Causas del fallo de un transacción • Externas a la transacción (errores del sistema) • Módulo de reconstrucción – fallos del sistema con pérdida de la memoria principal • Recuperar transacciones confirmadas que no han sido grabadas – fallos del sistema de almacenamiento con pérdida de la memoria secundaria • Anular transacciones que han fallado • Técnica más extendida: uso del fichero diario 1/03/01 Bases de datos 49 3. Integridad: reconstrucción de la base de datos 50 Tipos de entradas que se graban en el fichero diario • Registrar las operaciones de actualización de las transacciones • Se almacena en disco para evitar la desaparición por un fallo del sistema • Se graba periódicamente a una unidad de almacenamiento masiva Bases de datos Bases de datos 3. Integridad: reconstrucción de la base de datos Actividades sobre el fichero diario 1/03/01 1/03/01 • [inicio, T] • [escribir, T, X, valor_antes, valor_después] • [leer, T, X] • [confirmar, T] • [anular, T] 51 1/03/01 Bases de datos 52 3. Integridad: reconstrucción de la base de datos Fallo de una transacción T 3. Integridad: reconstrucción de la base de datos Fallo del sistema Deshacer cambios de T • Transacciones sin confirmar [inicio, T] en el diario sin [confirmar, T] • actualizar los datos modificados por T con su valor original (valor_antes) • Proceso anterior • buscar las entradas en el diario [escribir, T, X, valor_antes, valor_después] • Transacciones confirmadas [confirmar, T] Fallo del sistema 1/03/01 • Volver a ejecutarlas: Aplicar el proceso anterior a todas las transacciones sin confirmar Bases de datos [escribir, T, X, valor_antes, valor_después] 53 3. Integridad: reconstrucción de la base de datos 1/03/01 Bases de datos 54 3. Integridad: reconstrucción de la base de datos Puntos de verificación Puntos de verificación • Tamaño del fichero diario puede crecer rápidamente Se graban en el diario periódicamente • Suspender temporalmente la ejecución de transacciones • Recuperación en caso de fallo muy costosa (hay que rehacer muchas operaciones) • Grabar en el diario el punto de verificación • Forzar la grabación de todas las actualizaciones de las transacciones confirmadas (copiar los buffers a disco) • Reanudar la ejecución de las transacciones suspendidas 1/03/01 Bases de datos 55 1/03/01 Bases de datos 56 3. Integridad: reconstrucción de la base de datos Puntos de verificación 3. Integridad: reconstrucción de la base de datos Reconstrucción a partir del último Reconstrucción frente a fallos del sistema almacenamiento tiempo • Pérdida de memoria secundaria T1 • Base de datos puede estar dañada total o parcialmente T2 • Técnica: reconstruir la base de datos a partir de R T3 A T4 R T5 punto de verificación 1/03/01 A – Recuperar una copia de seguridad más reciente – A partir del instante de la copia utilizar el diario para rehacer las operaciones realizadas por las transacciones confirmadas fallo del sistema Bases de datos 57 4. Seguridad 1/03/01 Bases de datos 58 4. Seguridad Técnicas: • Identificación del usuario Objetivo: • Determinación de los accesos permitidos a la información sólo pueden acceder las personas autorizadas y en la forma autorizada – lista de autorizaciones (objeto y operaciones permitidas) por usuario – niveles de autorización • Gestión de autorizaciones transferibles: traspaso de autorizaciones de un usuario a otro 1/03/01 Bases de datos 59 1/03/01 Bases de datos 60 4. Seguridad Requerimientos para realizar la gestión de autorizaciones transferibles • Conocimiento de las autorizaciones de acceso de cada usuario (cuales son transferibles y cuales no) • Transferencia de un autorización de un usuario a otro (en modo transferible o no) • Revocación posterior de una autorización de acceso – Si se otorgo en modo transferible, revocación de las autorizaciones que partieron de ella • Revocación independiente de una autorización de acceso otorgada de forma múltiple 1/03/01 Bases de datos 61