SISTEMA DE GESTIÓN DE BASES DE DATOS Alumnos : Angel Castejón Asensio 48576067K Miguel Lirio Villena 45839549C Javier-Umbe Gómez Tirado 48624943E Pablo Sánchez Alonso 53240612M 1. TÉCNICAS DE GESTIÓN DE BASE DE DATOS Los sistemas de gestión de bases de datos son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Existen distintos objetivos que deben cumplir los SGBD: Abstracción de la información. Los SGBD ahorran a los usuarios detalles acerca del almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de archivos, este hecho se hace transparente al usuario. Así, se definen varios niveles de abstracción. Independencia. La independencia de los datos consiste en la capacidad de modificar el esquema (físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella. Consistencia. En aquellos casos en los que no se ha logrado eliminar la redundancia, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea. Por otra parte, la base de datos representa una realidad determinada que tiene determinadas condiciones, por ejemplo que los menores de edad no pueden tener licencia de conducir. El sistema no debería aceptar datos de un conductor menor de edad. En los SGBD existen herramientas que facilitan la programación de este tipo de condiciones. Seguridad. La información almacenada en una base de datos puede llegar a tener un gran valor. Los SGBD deben garantizar que esta información se encuentra segura de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos. Manejo de transacciones. Una transacción es un programa que se ejecuta como una sola operación. Esto quiere decir que luego de una ejecución en la que se produce una falla es el mismo que se obtendría si el programa no se hubiera ejecutado. Los SGBD proveen mecanismos para programar las modificaciones de los datos de una forma mucho más simple que si no se dispusiera de ellos. Tiempo de respuesta. Lógicamente, es deseable minimizar el tiempo que el SGBD tarda en darnos la información solicitada y en almacenar los cambios realizados. 1.1. MEJORAS DE LOS SGBD Proveen facilidades para la manipulación de grandes volúmenes de datos (ver objetivos). Entre éstas: Simplifican la programación de equipos de consistencia. Manejando las políticas de respaldo adecuadas, garantizan que los cambios de la base serán siempre consistentes sin importar si hay errores correctamente, etc. Organizan los datos con un impacto mínimo en el código de los programas. Bajan drásticamente los tiempos de desarrollo y aumentan la calidad del sistema desarrollado si son bien explotados por los desarrolladores. Usualmente, proveen interfaces y lenguajes de consulta que simplifican la recuperación de los datos. 1.2 INCONVENIENTES DE LOS SGBD Típicamente, es necesario disponer de una o más personas que administren de la base de datos, en la misma forma en que suele ser necesario en instalaciones de cierto porte disponer de una o más personas que administren los sistemas operativos. Esto puede llegar a incrementar los costos de operación en una empresa. Sin embargo hay que balancear este aspecto con la calidad y confiabilidad del sistema que se obtiene. Si se tienen muy pocos datos que son usados por un único usuario por vez y no hay que realizar consultas complejas sobre los datos, entonces es posible que sea mejor usar una planilla de cálculo. Complejidad: los software muy complejos y las personas que vayan a usarlo deben tener conocimiento de las funcionalidades del mismo para poder aprovecharlo al máximo. Tamaño: la complejidad y la gran cantidad de funciones que tienen hacen que sea un software de gran tamaño, que requiere de gran cantidad de memoria para poder correr. Coste del hardware adicional: los requisitos de hardware para correr un SGBD por lo general son relativamente altos, por lo que estos equipos pueden llegar a costar gran cantidad de dinero. 2 .- ARQUITECTURA DE LOS SISTEMAS DE GESTIÓN DE LAS BASES DE DATOS Como primera definición, estableceremos que un Sistema de Gestión de Bases de Datos (SGDB) no es más que un conjunto de programas que administran y gestionan la información que posee la propia base de datos. Esta definición es la que encontraremos dentro de cualquier gestor del mercado. Dentro de los SGBD, podríamos destacar tres niveles principales enfocados en su función y en su visión por el usuario de la base de datos: • Nivel Interno es el que más se aproxima al almacenamiento físico de los datos con un esquema interno que describe la estructura física de almacenamiento de la base de datos. Almacena los datos tal y como están escritos en el ordenador, los cuales, realmente solo existen en este nivel. Se podría decir que es el que almacena la descripción del Nivel Conceptual. • Nivel Conceptual sigue un esquema conceptual representando los datos que va a utilizar sin tener en cuenta el aspecto, contrariamente a lo que hace el nivel interno. En este nivel, también se describe la estructura para todos los usuarios que accedan a la BD. Oculta los detalles físicos del almacenamiento y trabaja con elementos lógicos como entidades atributos y relaciones. • Nivel Externo (o de vistas). Puede poseer varios esquemas externos o vistas para el usuario. Cada vista, posee una descripción de dicha visión diferente para cada grupo de usuarios. Esta arquitectura fue implantada por la ANSI-SPARC (American National Standard Institute – Standards Plannings and Requeriments Committee) en 1975 como ayuda para la separación entre aplicaciones y datos, el manejo de múltiples vistas y el uso de catálogos para el almacenamiento de los esquemas de las BD. La importancia de esta arquitectura, es que nos resulta muy útil a la hora de conseguir la diferenciación entre los niveles mencionados anteriormente. El problema que nos encontramos tras este modelo, es que muchos SGBD no distinguen del todo los tres niveles a causa de la introducción del nivel físico en el esquema conceptual o, lo que ocurre en la mayoría de los casos, que los esquemas externos de cara al usuario describen la misma información que al nivel conceptual. Destacando que los esquemas no son más que descripciones de los mismos datos pero variando su nivel de abstracción, los únicos datos existentes, son los que poseemos a nivel físico, como por ejemplo, en un disco. Por lo tanto, el SGBD debe de poder transformar cualquier petición expresada en términos introducidos por el usuario vía esquemas externos, y con estos, el SGBD debe transformar la petición expresada en términos de esquema externo, en una petición con términos del esquema conceptual para seguidamente a una con un esquema interno que se procesará sobre la base de datos almacenada. 2.1. Estructura General de una SGBD. Como regla general, todo SGBD sigue un patrón para su desarrollo: • • Gestor de ficheros, el cual se encarga de las estructuras de los datos a la hora de almacenarlas, asignándoles el espacio en el disco. Gestor de BD. Es el interfaz de los datos de bajo nivel junto con los programas de consulta. • Procesador de consultas. Encargado de traducir las proposiciones del lengiaje de consultas a instrucciones comprensibles por la BD. • Compilador DDL. Convierte las proposiciones DDL en un conjunto de tablas con metadatos. • Ficheros de datos. • Diccionario de datos. Almacén de información referida a la estructura de la BD. Su uso es continuo debido al énfasis del buen diseño y a la implementación adecuada del diccionario de datos. Estructura General de una BD. 2.2. Beneficios de las SGBD y una BD. El beneficio de la arquitectura de tres niveles es por la explicación de independencia de datos, definida como la capacidad de modificación del esquema a un nivel de sistema sin tener que modificar el esquema superior de forma inmediata. Lo que más tenemos que destacar en un SGBD lo suficientemente funcional, es lo siguiente: • • • • • • • Versatilidad en la representación de los datos, ofreciendo las visiones de la información almacenada de todas las formas necesarias. Corto tiempo de respuesta y acceso simultaneo a datos. Mínima redundancia. Simplicidad y Privacidad. Seguridad, teniendo la capacidad de proteger los datos ante perdidas totales o parciales (incendios, accesos no autorizados, uso incorrecto de los datos...). Afinación de datos, organizandolos de la forma mas optima para obtener unos rápidos tiempos de respuesta. Integridad, otorgando a los datos fiabilidad, frente a fallos de Hardware y Software. Ventajas de las BD ante los Ficheros Clásicos ; • Independencia de los datos al tratamiento, lo que implica que un cambio en el programa, tanto lógico o físico no deben obligar la alteración del programa, ya que la reprogramación origina un importante esfuerzo que no se podría costear si se producen a menudo. Podemos encontrarnos con dos tipos de independencia: ◦ ◦ Independencia lógica de los datos, la cuál se refiere modificaciones de la representación lógica del problema no afecta a los programas que lo manipulan, y viceversa. Independencia física de los datos, referido a la distribución en unidades de almacenamiento, es independiente de la estructura lógica general, o viceversa. • Coherencia de los resultados. La información de las BD se recogen y almacenan una sola vez, por lo tanto todos lo programas que tienen acceso a estos, tienen que mostrarlos de una forma coherente y muestrable. Además, al reducir en gran parte la redundancia de datos, desaparece el problema del enfoque clásico, eliminando la necesidad de al cambiar un dato, tener que actualizar el resto. • Mejor disponibilidad de los datos para el conjunto de usuarios. Al aplicar la metodología de BD, puesto que estos comparten el conjunto de aplicaciones, los datos pasan a ser de todos, existiendo una mejor disponibilidad y acceso entre ellos para tdo usuario autorizado. • Mayor eficiencia en recogida y validación de la entrada de datos al sistema. Como no se producen apenas redundancias, los datos se recogen y validan una única vez, aumentando así el rendimiento en todo el proceso previo al almacenamiento. • Espacio en disco reducido. Como ya se ha mencionado anteriormente, al no producirse redundancias, y así como la utilización de aplicaciones de compactación, las BD poseen una menor ocupación de almacenamiento en el disco magnético. 2.3. Inconvenientes de las SGDB. Los inconvenientes a valorar antes de de la instalación de un SGDB son varios; • • Instalación costosa: tanto en equipos físicos (nuevas instalaciones) como en lógicos(SO, programas, compiladores...). Personal especializado: es imprescindible la disposición de un buen equipo para la correcta utilización , el problema consiste en la dificultad de contratación de formación. • Implantación larga y difícil. • No son rentables a corto plazo, se suelen ver los resultados económicos al transcurso de varios meses o incluso años en instalaciones grandes. • Ausencia de reglas y estándares, los cuales últimamente están siendo un punto a tratar, con el surgimiento de estándares como el SQL. 3. EL ADMINISTRADOR DE LA BD Toda Base de Datos necesita de un encargado de gestionar y optimizar todas sus funciones, datos y características de cara a una mejora del rendimiento de la base de datos y una mejora para la utilización de los usuarios, además de garantizar la seguridad de los datos, y controlar la ocupación de memoria evitando ralentizaciones. Las funciones del administrador de la Base de Datos son la toma de decisiones en la definición de los esquemas que determinarán el funcionamiento de la Base de Datos tales como el esquema lógico, interno o externo. También es el encargado del control de las reglas de integridad y seguridad definiéndolas de la mejor forma para el SGBD, gestionando los permisos para los usuarios. Las Bases de Datos tienen que estar sujetas a cambios, el administrador tiene que atender a esos cambios, y reorganizar para que el sistema no se desfase o degrade. 4 . Componentes y Funciones de un SGBD. El objetivo de un SGBD es proporcionar un interfaz adecuado y eficaz para que podamos manipular la información que deseemos en nuestra base de datos, ya sea almacenarlos o acceder a ellos. Debe permitirnos a nosotros como usuarios el poder crear y mantener la base de datos a la vez que controla el acceso a la misma. Las funciones más importantes de un SGBD deben ser: Definición de los datos: el sistema debe entender la definición de los datos que le proporcionamos, escrito en el lenguaje adecuado para que los pueda entender, y procesarlos. Este mismo sistema tiene que tener los elementos necesarios y ser capaz de procesar los datos, para cada uno de los diferentes lenguajes de definición de datos (DDL). Manipulación de los datos: el sistema tiene que poder encargarse de realizar las diferentes órdenes que introduzca el usuario, ya bien sea para acceder, guardar, borrar o editar datos. Para dicha manipulación, es necesario que el SGBD tenga incluidos lenguajes de manipulación de datos (DML). Dichos lenguajes pueden ser independientes si ellos mismos son capaces de traducir las instrucciones que le indiquemos sin necesidad de requerir un programa que le haga de traductor previamente. Seguridad e integridad en los datos: para que un SGBD sea estable y asegure la integridad de los datos, debe controlar el acceso a los mismos por parte de los usuarios, y controlar cualquier posible violación de las reglas que el administrador de la base de datos habrá establecido anteriormente. Recuperación y concurrencia de los datos: los datos almacenados deben permanecer coherentes tras la manipulación de los mismos por parte de los usuarios, también se debe controlar el acceso a los mismos cuando varios usuarios se disponen a acceder a la vez a la base de datos. Además se tendrá que tener en cuenta y poner remedio a posibles fallos, ya sea bien por instrucciones no realizadas completamente, fallos de energía, errores de software o posibles problemas de hardware. Diccionario de datos: la última de las funciones más importantes de un SGBD consiste en incluir información adicional sobre los datos propios. Esta información se utilizará para el análisis y diseño de la base de datos. Los componentes que podemos encontrar en un SGBD están divididos en diferentes módulos. Aquí podemos ver un esquema de las diferentes partes. • Procesador de consultas: convierte las instrucciones introducidas por el usuario en un lenguaje de órdenes que entiende el gestor de la base de datos. • Gestor de la base de datos: proporciona un canal entre los datos guardados en la base de datos y los programas de aplicación y las consultas que se hacen en el sistema, para comunicarse entre ambos y poder realizar dichas consultas. • Gestor de archivos: gestiona la cantidad de espacio en la memoria del disco y de los datos usados para representar la información almacenada en disco. • Pre compilador del lenguaje de manipulación de datos DML: convierte las instrucciones en DML integradas en un programa de aplicación en llamadas normales a procedimientos en el lenguaje principal. • Compilador del lenguaje de definición de datos DDL: convierte sentencias en DDL en un conjunto de metadatos, para que después sean incorporados al diccionario de datos. • Gestor del diccionario de datos: almacena los metadatos creados anteriormente en la estructura de la base de datos 5. INDEPENDENCIA DE DATOS La independencia de datos es el hecho de que la modificación de datos solo afectarán a aquellos programas y esquemas que están directamente vinculados o afectados por esos datos. El grado de independencia es calculado basándose en dos conceptos: granularidad y ligadura. El proceso de transformación del esquema externo en esquema interno es conocido como ligadura. No se trata de un proceso de transformación directa sino que se produce en dos pasos. Primero se transforma de externo a lógico y de este a interno, por tanto diferenciaremos entre ligadura lógica y física. Para determinar la independencia de datos basándonos en este concepto, tenemos que tener en cuenta el momento en el que se realizará la ligadura. Cuanto más tarde se realice la ligadura mayor será la independencia. Vamos a ordenar según el momento en el que puede darse acabo el proceso de ligadura, de menor a mayor independencia. 0 • Compilación 1 • Montaje 2 • Inicio ejecución 3 • Cada acceso a la base de datos. El grado de detalle con el que se definen los esquemas externos en función del esquema interno, es lo que se llama granularidad. • Registro completo • Campo de registro Para determinar la independencia de datos se utiliza el grado de “fina”, cuanto más “fina” es la granularidad se dice que mayor es el grado de independencia. La integridad de datos valora la calidad de la información basándose en: 1• Buena relación entre datos. 2• Valores correctos 3• Sin interferencias. En caso de que se presente uno de estos problemas se pueden abordar de un punto optimista, solucionándolo cuando se presente o pesimista, ya desde un principio tener en cuenta los posibles problemas. Dicho de otra forma podemos solucionar los problemas utilizando una de estas dos técnicas. 4• técnicas preventivas 5• técnicas curativas 6 2La seguridad de los datos se refiere a la autorización de determinados permisos (lectura, escritura etc), a los usuarios durante el uso de la BD. 3Se utilizan técnicas tales como la identificación del usuario (login y passworrd). 6. ARQUITECTURA CLIENTE- SERVIDOR Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras. En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma. Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema. La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico. En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus características son: Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo). Espera y recibe las respuestas del servidor. Por lo general, puede conectarse a varios servidores a la vez. Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario. Al receptor de la solicitud enviada por cliente se conoce como servidor. Sus características son: Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo). Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente. Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado). No es frecuente que interactúen directamente con los usuarios finales. ARQUITECTURA MULTICAPAS La arquitectura cliente/servidor genérica tiene dos tipos de nodos en la red: clientes y servidores. Consecuentemente, estas arquitecturas genéricas se refieren a veces como arquitecturas de dos niveles o dos capas. Algunas redes disponen de tres tipos de nodos: Clientes que interactúan con los usuarios finales. Servidores de aplicación que procesan los datos para los clientes. Servidores de la base de datos que almacenan los datos para los servidores de aplicación. Esta configuración se llama una arquitectura de tres-capas. Ventajas de las arquitecturas n-capas: La ventaja fundamental de una arquitectura n-capas comparado con una arquitectura de dos niveles (o una tres-capas con una de dos niveles) es que separa hacia fuera el proceso, eso ocurre para mejorar el balance la carga en los diversos servidores; es más escalable. Desventajas de las arquitecturas de la n-capas: Pone más carga en la red, debido a una mayor cantidad de tráfico de la red. Es mucho más difícil programar y probar el software que en arquitectura de dos niveles porque tienen que comunicarse más dispositivos para terminar la transacción de un usuario. MEJORAS DE LA ARQUITECTURA CLIENTE-SERVIDOR Centralización del control: los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda dañar el sistema. Esta centralización también facilita la tarea de poner al día datos u otros recursos (mejor que en las redes P2P). Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden añadir nuevos nodos a la red (clientes y/o servidores). Fácil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se verán afectados por ese cambio (o se afectarán mínimamente). Esta independencia de los cambios también se conoce como encapsulación. Existen tecnologías, suficientemente desarrolladas, diseñadas para el paradigma de C/S que aseguran la seguridad en las transacciones, la amigabilidad del interfaz, y la facilidad de empleo. INCONVENIENTES DE LA ARQUITECTURA CLIENTE-SERVIDOR La congestión del tráfico ha sido siempre un problema en el paradigma de C/S. Cuando una gran cantidad de clientes envían peticiones simultaneas al mismo servidor, puede ser que cause muchos problemas para éste (a mayor número de clientes, más problemas para el servidor). Al contrario, en las redes P2P como cada nodo en la red hace también de servidor, cuantos más nodos hay, mejor es el ancho de banda que se tiene. El paradigma de C/S clásico no tiene la robustez de una red P2P. Cuando un servidor está caído, las peticiones de los clientes no pueden ser satisfechas. En la mayor parte de redes P2P, los recursos están generalmente distribuidos en varios nodos de la red. Aunque algunos salgan o abandonen la descarga; otros pueden todavía acabar de descargar consiguiendo datos del resto de los nodos en la red. El software y el hardware de un servidor son generalmente muy determinantes. Un hardware regular de un ordenador personal puede no poder servir a cierta cantidad de clientes. Normalmente se necesita software y hardware específico, sobre todo en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentará el coste. El cliente no dispone de los recursos que puedan existir en el servidor. Por ejemplo, si la aplicación es una Web, no podemos escribir en el disco duro del cliente o imprimir directamente sobre las impresoras sin sacar antes la ventana previa de impresión de los navegadores.