Sistemas Gestores de Bases de Datos Técnicas de Bases de Datos Anteriormente los sistemas se basaban en ficheros creados para cada aplicación especifica. Debido a que los sistemas eran de poca envergadura no existían casi problemas y estos se podían solventar fácilmente. Con el paso del tiempo, los sistemas fueron creciendo y la cantidad de datos a almacenar crecían, la planificación mala y los modelos de datos pobres hicieron que este crecimiento trajera enormes problemas a la hora de solucionar pequeños errores o mantener el modelo de datos. Como solución a este problema surgen las Técnicas de Bases de Datos, las cuales tienen como objetivo prioritario el unificar toda la información en un solo sistema para evitar redundancias, no perder las distintas perspectivas según usuario y organizar un conjunto de datos que no este diseñado para una aplicación en concreto. Sistemas de Bases de Datos Los sistemas de Bases de Datos tienen 4 componentes: • Datos • Hardware • Software • Usuarios Esquema de acceso del SGBD a los datos El SGBD introduce un nuevo nivel de independencia entre los usuarios y la base de datos, constituyendo una capa sobre el sistema operativo del computador. La base de datos debe almacenarse en un dispositivo de memoria secundaria, dado el volumen que puede alcanzar y el periodo de tiempo que tengamos que trabajar con ella. Almacenamiento en disco magnético En un disco magnético, la memoria (bytes) disponible se divide en bloques de longitud fija, que se definen cuando se le da formato al disco, estos bloques representan la unidad de transferencia entre los datos del disco y la memoria principal. La transferencia la realiza el dispositivo de entrada/salida del computador, quien deposita el bloque leído en memorias intermedias de la memoria principal (áreas contiguas de memoria con capacidad para varios bloques de datos, que se suelen denominar buffers). En el disco magnético, y desde el punto de vista del sistema operativo, los datos se organizan en ficheros de registros. En un fichero los registros se estructuran siguiendo alguna de las organizaciones de ficheros disponibles en el sistema. Cada tipo de organización, implica una distribución física particular de los registros en el disco y un tipo de acceso a los mismos. Estas organizaciones de ficheros son las que se utilizan para implementar las estructuras de datos de la base de datos, según se define en el esquema físico. Esta jerarquía de abstracciones de datos (bloques de datos – ficheros de registros – estructuras de bases de datos) existente en un sistema de bases de datos es explicada en la figura que se muestra a continuación Paso 1 El programa de aplicación del usuario 1 realiza una consulta al SGBD Paso 2 El SGBD consulta en el esquema externo 1, el esquema lógico y el esquema físico, realiza la correspondencia entre ellos, y traduce la consulta del usuario en una operación de lectura sobre un fichero. Paso 3 El SGBD emite órdenes al administrador de ficheros del SO indicando el registro que debe leer y el fichero en el que está almacenado. Paso 4 El administrador de ficheros del SO solicita al administrador de entrada/salida la lectura del bloque en el que se encuentra el registro requerido. Paso 5 El administrador de entrada/salida del SO recupera el bloque de datos solicitado y lo transfiere de la memoria secundaria a las memorias intermedias de la memoria principal (si el bloque no estuviera ya en ella memoria principal). Paso 6 El administrador de archivos del SO devuelve al SGBD el registro solicitado. Paso 7 El SGBD, comparando el esquema externo 1 y el esquema lógico, realiza las transformaciones necesarias para determinar los datos requeridos, y transfiere estos datos al área de trabajo del programa que ha realizado la consulta. Si la consulta del usuario (paso 1) requiere la recuperación de varios registros de datos, los pasos 3 al 6 se repetirán para cada uno de los registros necesitados. Una vez recuperados estos registros, el SGBD los examina en memoria principal para ejecutar el paso 7. Usuarios de una Base de Datos Administrador de Datos y Administrador de Base de Datos La base de datos y los SGBD son recursos corporativos que deben gestionarse igual que cualquier otro recurso. La administración de datos y de la base de datos son papeles que generalmente se asocian con la gestión y control de un SGBD y de los datos en él almacenados. El administrador de datos es responsable de gestionar los recursos de datos, lo que incluye la planificación de la base de datos, el desarrollo y mantenimiento de estándares, políticas y procedimientos y el diseño procedimental/lógico de la base de datos. El administrador de datos consulta con los gerentes de mayor nivel y les aconseja, para garantizar que la dirección seguida por el desarrollo de la base de datos permita soportar los objetivos corporativos. El administrador de la base de datos, es responsable de la materialización física de la base de datos, incluyendo la implementación y diseño físicos de la base de datos, el control de la seguridad y la integridad, el mantenimiento de la fiabilidad del sistema y la garantía de que las aplicaciones exhiban un rendimiento satisfactorio para los usuarios finales. El papel de un administrador de bases de datos tiene una orientación más técnica que el administrador de datos, requiriéndose un conocimiento detallado del sistema de gestión de bases de datos de destino y del entorno de sistema en el que está implementado. En algunas organizaciones no hay distinción entre estos dos papeles, esto depende del volumen de datos y la importancia de los recursos corporativos. En resumen, el administrador de bases de datos, es el encargado de definir la base de datos dentro del SGBD y de optimizar su rendimiento, al mismo tiempo que da soporte a las necesidades específicas de cada usuario. Las funciones de un administrador de la BD son: • Definir el esquema lógico (suponiendo la arquitectura a cuatro niveles) Partiendo el esquema conceptual que describe el sistema de información, el DBA transformará dicho esquema en el esquema lógico que manejará el SGBD a utilizar. Al realizar esta transformación, tomará las decisiones oportunas bajo criterios de optimización de la eficiencia del sistema final. Debe, así mismo, especificar las correspondencias a establecer entre los esquemas conceptual y lógico. • Definir el esquema interno. El DBA debe decidir cuál será la forma en que se almacenarán físicamente los datos, y establecer, al igual que antes, las debidas correspondencias entre esquemas. • Definir los esquemas externos. Atendiendo a las necesidades de los usuarios, el DBA debe asegurar que toda la información necesaria está disponible y accesible por aquellos que la precisan, y debe crear (o asesorar en su creación) los esquemas externos de cada aplicación que definirán las partes del sistema de información a las que accederán. Además, el DBA será el encargado de suministrar asesoramiento técnico para el diseño de aplicaciones, formación de usuarios y programadores, etc. • Definir las reglas de integridad y seguridad. Se encargará de definir aquellas reglas de integridad que actúan sobre los datos y las operaciones en términos que entienda el SGBD. Los permisos otorgados a los usuarios sobre los datos, y la política de transferencia de permisos entre ellos es, también, responsabilidad del DBA. • Especificar los mecanismos de recuperación y copias de seguridad. El sistema de base de datos e un elemento crítico en el funcionamiento de la Organización, y el DBA debe especificar los procedimientos adecuados para la realización de copias de seguridad periódicas y recuperación de datos ante eventuales daños en parte o en todo el sistema de información almacenado. • Verificar el rendimiento del sistema y atender a los cambios en los requerimientos. • Como parte muy importante de sus funciones, el DBA debe vigilar que el sistema de información no se degrade, por la continua manipulación y actualización de sus datos, hasta el punto de afectar a los tiempos de respuesta o la sobreocupación de memoria secundaria. Se responsabilizará de las reorganizaciones necesarias, a cualquier nivel, que permitan mantener o mejorar el rendimiento de todo el sistema, incluido la renovación del hardware y el software si fuera necesario. Desarrolladores de aplicaciones Una vez implementada la base de datos, es necesario implementar también los programas de aplicación que proporcionen la funcionalidad requerida por los usuarios finales. Esto es responsabilidad de los desarrolladores de aplicaciones. Normalmente, los desarrolladores de aplicaciones trabajan a partir de especificaciones dadas por los analistas de sistemas. Cada programa contiene enunciados que exigen al SGBD realizar algún tipo de operación sobre la base de datos. Esto incluye insertar datos, insertarlos, actualizarlos o borrarlos. Usuarios finales Los usuarios finales son los “clientes” de la base de datos, que se diseña, implementa y mantiene precisamente para dar servicio a sus necesidades de información. Los usuarios finales pueden clasificarse de acuerdo a la forma en que utilizan en sistema. Usuarios inexpertos: Normalmente no son conscientes de la existencia de un SGBD, acceden mediante programas que intentan que las operaciones sean lo más simple posible. Usuarios avanzados: Son los que están familiarizados con la estructura de una base de datos y con el SGBD, suelen utilizar un sistema de consulta con lenguajes de alto nivel, como SQL. DATOS El objetivo final de los sistemas de BBDD es el almacenamiento de estos datos. Para ello debemos los datos se estructuraran basándose en un Modelo de Datos que podemos elegir según nuestras conveniencias. Existen tres grupos de modelos de datos: • • • Modelos Lógicos basados en objetos Son modelos que describen datos en los niveles de abstracción lógico y de vistas. Proporcionan capacidades estructurales muy flexibles y permiten una especificación explicita de las ligaduras de datos. Algunos de los modelos de este tipo mas conocidos son: ◦ El Modelo Entidad-Relación ◦ El modelo orientado a objetos ◦ El modelo de datos Semántico ◦ El modelo de datos funcional Modelos Lógicos basados en registros Estos modelos describen los datos en los niveles lógico y de vistas, igual que los basados en objetos, se usan para describir la especificación a alto nivel y para especificar la estructura lógica de la BD. Su nombre proviene de que la BD se estructura en registros de formato fijo. Algunos de ellos son, ◦ Modelo Relacional ◦ Modelo de Red ◦ Modelo Jerárquico Modelos físicos Describe datos en un nivel mas bajo que los otros dos modelos. Describen la forma física de almacenar los datos, el formato de los registros, estructura de los ficheros y los métodos de acceso utilizados. Existen pocos modelos de este tipo, algunos de ellos pueden ser el modelo de unificación y el modelo de memoria por marcos. Sistemas de Gestión de Bases de Datos Antes de la creación de los Sistemas de Bases de Datos los datos se almacenaban en archivos adjuntos a la aplicación, esto provocaba una serie de inconvenientes • • • • • • • Redundancia e inconsistencia de datos Dificultad en el acceso a los datos Aislamiento de datos Problemas de integridad Problemas de atomicidad Anomalías en el acceso concurrente Problemas de seguridad Estos problemas llevaron a la creación de los Sistemas de Gestores de Bases de Datos. Este sistema se encarga de proporcionar una descripción centralizada de los datos y ademas da la posibilidad de mantener distintas vistas de los datos según para que usuario sean. Los objetivos de un SGBD son: • Independencia • Integridad • Seguridad Integridad La integridad de datos atiende a la calidad de la información almacenada en los siguientes aspectos: • los valores de los datos han de ser correctos. • las ocurrencias de los datos (los valores en un instante determinado) han de estar debidamente interrelacionados. • no se deben producir interferencias en las lecturas y escrituras concurrentes, del tipo de actualizaciones incorrectas, bloqueos activos o mortales, etc. Se distinguen dos aproximaciones a este problema: optimista y pesimista. La primera da por supuesto que tales problemas se presentan muy de cuando en cuando, así que la solución más eficiente es solucionarlos cuando han ocurrido. Dichos problemas pueden venir de deterioros de la BD por catástrofes, interrupciones en procesos de actualización, actualizaciones indebidas por fallo humano, etc. De hecho, la táctica es llevar un registro, más o menos actualizado, de los estados sucesivos de la base de datos o de las últimas transacciones efectuadas para devolver a la base de datos a un estado anterior que se sabía correcto, y volver a comenzar desde ese punto. La segunda identifica las situaciones que pueden provocar un conflicto y retrasa su ejecución hasta que tal posibilidad desaparece. Así, pues, tenemos: Técnicas Preventivas Verificación de las restricciones semánticas, controlar la consistencia de las copias redundantes, y control de los accesos concurrentes, generalmente por el método de reservas (evitar que un programa acceda al dato mientras lo está modificando y/o consultando otro). Técnicas Curativas Fichero dietario con el que deshacer o rehacer todas las actualizaciones realizadas por transacciones durante un tiempo determinado, copias de seguridad o volcados de la BD completa en un momento en que todas las transacciones efectuadas han sido confirmadas, toma de puntos de control, ... Ejemplo de Técnica Preventiva: Bloqueos Un bloqueo es una forma de trabajo para el acceso de distintos usuarios a un mismo conjunto de datos. Dependiendo de las bases de datos que se utilicen, hay distintas amplitudes de bloqueo, pueden serlo a nivel de toda una tabla, es decir, que si utiliza un usuario la tabla "Clientes" para hacer modificaciones en la misma, no puede ser accedida por otro usuario en tanto no la abandone. En este ejemplo concreto, y pensando en este tipo de bases de datos, solamente sería lógico el bloqueo de tabla para operaciones que requieran utilizar la totalidad de la misma, como puede ser una ordenación (Sort) o indexación, en caso contrario, se haría a nivel de registros concretos, si un usuario modifica el Cliente X otro usuario no puede acceder a él, en cambio sí podrían hacerlo ambos si el acceso se realiza a nivel de consulta y no de modificación. Otras bases lo que impiden es modificar por páginas, es decir, bloques de datos, no registros concretos. Bloqueo Pesimista Las bases pequeñas, las que se denominan tablas planas, suelen utilizar el llamado bloqueo pesimista, es decir, que si un usuario está modificando el siguiente en acceder es expulsado. Bloqueo Optimista Permiten que las transacciones accedan libremente a los objetos. Se determina, antes de su finalización, si ha habido o no interferencias. Cada transacción consta de dos o más fases: ● Fase de lectura ● Fase de validación ● Y, posiblemente, una fase de escritura. Durante la fase de lectura todas las escrituras tienen lugar en copias locales (versiones transitorias). Durante la fase de validación se establece si se viola la serialidad, y las copias locales se hacen globales. Conceptos clave de Integridad Granularidad Es el grado de detalle de definición de los esquemas externos en función del esquema lógico. Los más usuales son: • de registro completo. • de campo de registro. Se dice que la granularidad es más fina en el segundo caso que en el primero, y cuanto más fina sea mayor grado de independencia de datos conseguiremos. Es evidente que si la granularidad es fina, un determinado esquema externo puede precisar de la definición de un único campo y, por tanto, modificaciones en el resto de campos del mismo registro no le afectarán; si la granularidad es a nivel de registro completo, aún sin utilizar todos los campos, debería incluir la definición del registro y sería modificado en cualquier alteración del mismo en el esquema lógico. Ligadura La ligadura es la transformación de una operación descrita en términos de un esquema externo en otra descrita en términos del esquema interno. Una definición de dato de un EE, en el momento de la ligadura, se transforma en una longitud y una posición dentro de un registro, términos en los que se expresa el EI. No obstante, puesto que se hace necesaria una primera transformación entre EE y esquema lógico, y de éste al EI, se diferencia entre ligadura lógica y ligadura física. El momento en que se produce la ligadura desaparece la independencia de datos puesto que el esquema externo ya ha sido traducido al más bajo nivel. Por eso, si el momento de la ligadura se produce cuando se compilan los programas, cualquier alteración en el esquema interno provocará la recopilación, aunque tal modificación se haya producido en un dato que no usen. Podemos decir, por entendernos, que al realizar la ligadura en el momento de la compilación, los esquemas externos “desaparecen”, puesto que en cada ejecución del programa se parte ya de los datos físicos de almacenamiento. Si, por el contrario, es en cada acceso a la base de datos cuando se realiza la ligadura, cada vez se realizará una nueva traducción del esquema externo en esquema interno. Eso implica que, si el cambio en el EL o EI no le afecta directamente, no habrá necesidad de modificar su correspondiente EE. No obstante, cuanto más tardía sea la ligadura (por ejemplo, en cada acceso) la eficiencia será menor puesto que continuamente estaremos haciendo uso de las correspondencias entre esquemas. Se consideran cuatro momentos en los que puede tener lugar la ligadura, siendo el último el más tardío y el que garantiza una mayor independencia de datos: • En la compilación o en un paso de precompilación • En el montaje (link) para generar el módulo ejecutable del programa • Al iniciarse la ejecución del programa , o más concretamente, antes de que el programa solicite acceso a la base de datos. • En cada acceso a la BD. La independencia de datos, resumiendo, es mayor cuanto más fina sea la granularidad de los esquemas externos y cuanto más tardío el momento de la ligadura. La tendencia de los SGBD actuales es apoyarse en la granularidad a nivel de campo y la ligadura al comienzo de la ejecución del programa. Seguridad La seguridad es uno de los objetivos de los sistemas de gestión de bases de datos, la idea es que sólo puedan acceder las personas autorizadas a ciertos conjuntos de datos. Identificación de usuario Consiste en determinar qué usuario es el que quiere entrar a los datos, este es un paso previo a determinar qué permisos tiene este usuario (lectura, escritura), normalmente la identificación se suele hacer mediante una clave de acceso. Determinación de los accesos permitidos Hay dos formas de establecer los accesos permitidos: 1. Cada usuario tiene asociada una lista de autorizaciones donde se indican los datos a los que se puede acceder y las operaciones permitidas a cada uno de ellos. Esta es la forma más flexible, ya que permite una especificación más detallada de las autorizaciones. 2. Definición de distintos niveles de autorización, todos los usuarios con el mismo nivel pueden realizar las mismas operaciones sobre los mismos objetos. Gestión de autorizaciones transferibles • Un sistema de gestión de autorizaciones debe satisfacer lo siguiente: • Conocimiento de las autorizaciones de accesos de cada usuario, de estas, algunas podrían ser transferibles a terceros y otras no. • Revocación posterior de una autorización de acceso. • La revocación de una autorización de acceso transferible implica la revocación automática de todas las autorizaciones que son resultado de la misma. • Si un usuario puede recibir de otros más de una autorización por el mismo acceso, cada una de éstas puede ser revocada independientemente de las demás. Tipos de Esquemas Para intentar cumplir el objetivo de la independencia de datos se plantea, según algunos autores, una arquitectura de cuatro niveles, aunque el grupo ANSI/SPARC lo planteo como una estructura de tres niveles. Estos esquemas son: • • • • Esquema Conceptual (EC) → es la visión desde un punto de vista organizativo. Es completamente independiente del SGBD que se utilice e incluso de si se utilizara una BD o no. Es una descripción desde un punto de vista no informático Esquema Lógico (EL) → es un esquema que se representa los datos usando un modelo de datos soportado por el SGBD. Aquí representamos las entidades y relaciones de acuerdo al modelo de datos a usar. Esquema Interno (EI) → es la forma en la que se representan los datos en la memoria externa del equipo. Es también conocido como Esquema Físico. Esquemas Externos (EE) → describe los datos y las relaciones que hay entre ellos. Es para una aplicación dada y se pueden ver como subconjuntos del EL de la BD. Características de un buen SGBD • • • • • • Transformación EC-EL: Al describir el Esquema conceptual externo al SGBD según un cierto modelo de datos, debemos poder convertir manualmente del conceptual al lógico. Uso distintos modelos de Datos: el SGBD debe permitirnos diseñar el EC en los distintos modelos de datos, E-R, Relacional, Modelo Semántico General, etc.... Establecer correspondencias entre los distintos esquemas: es decir, el poder traducir que un dato o una relación en cierto esquema, corresponde a otra en el siguiente esquema. Independencia lógica: Si modificamos un dato en el esquema lógico, los esquemas externos que no lo contengan en su definición no deben verse afectados por el cambio Independencia física: No puede verse afectado el esquema lógico si modificamos el modo de acceso físico, los tamaños de paginas, etc etc Independencia de datos: En definitiva, aislar los esquemas para que no se vean afectados por cambios en los otros esquemas Este es un ejemplo de la característica de correspondencia entre los distintos esquemas. Tenemos dos esquemas externos escritos en PL/I y COBOL y debajo sus correspondientes tanto en Esquema Lógico como en Esquema Interno. Bibliografia Asignatura Bases de Datos de la Universidad de Sevilla http://www.cs.us.es/cursos/bd-2001/ Transparencias sobre SGBD existentes http://www.slideshare.net/eder8/dbms-existentes Apuntes de ficheros y Bases de Datos de la Universidad Jaume I http://www3.uji.es/~mmarques/f47/apun/apun.html Fundamentos de bases de datos Silberschatz, Abraham Sistemas de bases de datos : un enfoque práctico para diseño, implementación y gestión Connolly, Thomas M. Bases de datos relacionales Matilde Celma Giménez, Juan Carlos Casamayor Ródenas, Laura Mota Herranz Celma Giménez, M. Apuntes de Teoría de la asignatura