======= Introducción a las bases de datos ====== ===== Definición ===== La Base de Datos es un conjunto de datos relativos a una determinada parcela del mundo real, que se almacenan en un soporte informático no volátil. Además, no debe existir redundancia (datos repetidos), deben de atender a múltiples usuarios, y a distintas aplicaciones. ===== Sistema de Gestión de Bases de Datos (SGBD) ===== En inglés //Database Management System// (DBMS). Se trata de una herramienta o programa (o conjunto de éstos) que sirve de interfaz entre los diferentes usuarios (ya sean roles "humanos" o programas informáticos) y la base de datos. La unión de la base de datos, SGBD y las aplicaciones que acceden a la BD, se denomina **Sistema de Bases de datos**. Para trabajar con una base de datos, se requieren de diferentes roles de usuario, según la función a realizar: * **Función de definición**: permite a los diseñadores de la BD definir y modificar su estructura. * **Función de manipulación**: permite a los usuarios de la BD añadir, suprimir o modificar los datos de la misma siempre y cuando se respeten los aspectos de seguridad que haya establecido el administrador de la BD. * **Función de control**: esta función aúna los interfaces que requieren los distintos tipos de usuarios para comunicarse con la BD así como las herramientas necesarias para el administrador para establecer los mecanismos de seguridad y mantenimiento de la BD. Para que el SGBD pueda llevar a cabo estas funciones se necesita un lenguaje que permita especificar lo que cada tipo de usuario necesita en su comunicación con la BD. En las BD relacionales se emplea el SQL (Standard Query Language). Se trata de un modelo, que los distintos desarrolladores han implementado con sus propios servidores-clientes de bases de datos relacionales. ===== Arquitectura de BD a tres niveles ===== En una BD se identifican tres capas de estructuración según tres niveles de abstracción. Así, se distingue un nivel externo, un nivel lógico y un nivel físico: * **Nivel externo**: visión de la BD que cada usuario tiene en particular. * **Nivel lógico**: visión total de la base de datos. * **Nivel físico**: vista del soporte físico informático en cuanto a que se refiere a la forma en que se organizan los datos en el almacenamiento físico (índices o punteros, longitud de los campos, caminos de acceso a los datos, particionamientos de memoria, etc.). ===== Lenguajes de un SGBD ===== De acuerdo a las funciones a las que debe dar soporte un SGBD, se debe disponer de un lenguaje para que los distintos tipos de usuario puedan comunicarse con la BD. Así, en los SGBD relacionales se tiene el lenguaje SQL que de acuerdo a su función se descompone en: * **Lenguaje de Definición de Datos (LDD)**: utilizado para definir la estructura lógica de la BD (nivel lógico), la estructuras externas requeridas para el desarrollo de las diferentes aplicaciones (nivel externo) así como la estructura interna (nivel físico). * **Lenguaje de Manipulación de Datos (LMD)**: Permite leer, eliminar y modificar datos de la BD. * **Lenguaje de Control**: el administrador de la BD utiliza este lenguaje para especificar los aspectos de seguridad física (copias de seguridad, rearranque de la BD en caso de caída, etc.), de protección frente a accesos no permitidos (autorizaciones y contraseñas, perfiles de usuarios, etc.) y para definir los interfaces que necesitan los distintos usuarios para comunicarse con la BD. ===== Algunas arquitecturas de Sistemas de Bases de Datos ===== Aspectos que definen la arquitectura de una BD: * //Red//: unas tareas se ejecuten en un sistema servidor y otras se ejecuten en los clientes (denominados sistemas de BD cliente-servidor). * //Paralelismo//: acelera la ejecución de tareas (transacciones, etc.) de acuerdo al sistema informático subyacente (sistemas de BD paralelos). * //Distribución//: Datos situados donde se han generado o donde son más necesarios pero accesibles desde todos los sitios (sistemas de BD distribuidos). Según estos aspectos distinguimos: * **Sistemas Centralizados**: existe un único sistema informático sin interacción con otros ordenadores. En estos sistemas podemos diferenciar entre: * //Sistema monousuario//: formado por un ordenador personal o por una estación de trabajo con una única CPU y un sistema operativo monousuario (no permite que varios usuarios puedan acceder simultáneamente a la BD). * //Sistema multiusuario//: formado por varias CPU y con sistema operativo multiusuario con terminales conectados al sistema servidor. * **Sistemas Cliente-Servidor**: existe un reparto de funcionalidades, los terminales cliente gestionan el interfaz de usuario SQL, interfaz de formularios, diseñadores de informes e interfaz gráfica. Los sistemas servidores satisfacen las peticiones generadas por los sistemas clientes. Hay 2 tipos de servidores: * //Servidores de transacciones (servidores de consultas)//: los clientes envían peticiones para realizar una acción que el servidor ejecutará y cuyos resultados se devuelven al cliente. * //Servidores de datos//: el servidor envía los datos a las máquinas clientes en las que se realiza el procesamiento enviando después los datos de vuelta. * **Sistemas Paralelos**: pensados para el manejo de BD muy grandes o con un gran volumen de transacciones por segundo. El objetivo es realizar operaciones simultáneamente mediante el uso de varios procesadores y varios discos en paralelo. Los modelos de arquitecturas para máquinas paralelas son: * //Memoria compartida//: Todos los procesadores comparten una memoria común. * //Disco compartido//: Los procesadores comparten un disco común (cada procesador con su memoria). * //Sin compartimiento//: No hay compartición ni de disco ni de memoria. * //Jerárquico//: modelo híbrido de los anteriores. * **Sistemas Distribuidos**: la BD se almacena en varios ordenadores que no comparten ni memoria ni discos pero que se comunican mediante redes de alta velocidad o líneas telefónicas. Estos ordenadores se encuentran en varios lugares geográficos distintos. Las ventajas que proporcionan los sistemas distribuidos frente a los sistemas centralizados son la compartición de datos (acceso a datos en distintos sitios), la autonomía en cuanto a que cada administrador controla su BD y, por último, la disponibilidad de los datos (si un ordenador falla están los demás para poder seguir trabajando si hay duplicación de datos). En un sistema distribuido se dan dos tipos de transacciones: * //Transacciones locales//: Acceso a datos del ordenador en el que se inició la transacción. * //Transacciones globales//: Acceso a datos de un ordenador distinto o acceso a datos de varios ordenadores distintos.