Introducción a las bases de datos

Modelos de datos. Lenguajes de bases de datos. Usuarios y administradores de la ..... Gestor de memoria intermedia o caché Es responsable de traer los datos.
156KB Größe 242 Downloads 180 vistas
Introducci´on a las bases de datos Juan Ignacio Rodr´ıguez de Le´on

Abstract Aplicaciones de los sistemas de bases de datos. Sistemas de bases de datos frente a sistemas de archivos. Visi´on de los datos. Modelos de datos. Lenguajes de bases de datos. Usuarios y administradores de la base de datos. Gesti´ on de transacciones. Estructura de un sistema de bases de datos. Arquitecturas de aplicaciones. Historia de los sistemas de bases de datos. Tambi´en se presenta un ejemplo de una aplicaci´on de bases de datos: una empresa bancaria que cuenta con varias sucursales. Este ejemplo se usa como ejemplo de trabajo a lo largo de toda la asignatura.

1

Sistemas de bases de datos frente a sistemas de ficheros.

Mantener la informaci´on en un sistema de ficheros presenta una serie de inconvenientes importantes, precisamente los que se intentan evitar con las sistemas de bases de datos: • Redundancia e inconsistencia de datos. La informaci´on puede estar duplicada en diferentes sitios, y codificada de diferentes maneras. Esta redundancia tiene como primera consecuencia mayores costes de almacenamiento y de acceso. Adem´as, puede conducir a inconsistencias de datos. • LDificultad en el acceso a los datos. No existe otro m´etodo de acceso a los datos que los programas que se hayan implementado. • Aislamiento de los datos. Debido a que los datos est´an dispersos en varios ficheros, e incluso representados en distinto formatos, es dif´ıcil interrelacionarlos. • Problemas de integridad. Las restricciones que se deseen imponer a los datos deben hacerse por programa. Si existen varios programas (quiz´a incluso en varios lenguajes) hay que a˜ nadir el c´odigo de restricci´on a todos. En caso de tener que modificar o ampliar estas restricciones, el trabajo puede ser considerable.

1

1

SISTEMAS DE BASES DE DATOS FRENTE A SISTEMAS DE FICHEROS.2 • Problemas de atomicidad. En un sistema de archivos es dif´ıcil garantizar la atomicidad de las operaciones. • Anomal´ıas en el acceso concurrente. Es complicado controlar el acceso concurrentes de diferentes usuarios y/o m´aquinas. • Problemas de seguridad. Seguridad no centralizada.

Un sistema de base de datos es una colecci´on de archivos interrelacionados y un conjunto de programas que permiten a los usuarios acceder y modificar esos archivos, intentando resolver los problemas descritos anteriormente.

1.1

Visi´ on de los datos

Uno de los principales objetivos de este sistema es proporcionar a los usuarios una visi´on abstracta de los datos, de forma que no deba de preocuparse por los detalles del almacenamiento de los datos. Esta simplificaci´on de los detalles de almacenamiento y gesti´on de los datos se realizan en diversos niveles. Nivel F´ısico En este nivel se describen en detalle las estructuras de datos que definen como se almacenan realmente los datos. Nivel l´ ogico En este siguiente nivel, lo que se define es que datos se almacenan, as´ı como las relaciones entre los mismos. Este nivel permite describir la base de datos completa en base a un subconjunto de estructuras relativamente simples. Los usuarios a nivel l´ogico (Dise˜ nadores y administradores de bases de datos) no necesitan preocuparse del nivel f´ısico. Nivel de vistas Este nivel completa, mediante la definici´on de vistas, las necesidades finales de acceso a los datos. La vista puede reorganizar la informaci´on del nivel l´ogico, ampliando, transformando o incluso reduciendo la informaci´on que se desea mostrar al usuario (Programadores y administradores de bases de datos) . Adem´as de esconder los detalles del nivel l´ogico, las vistas proporcionan tambi´en un mecanismo de seguridad que evita los accesos a determinadas partes de la base de datos. Las bases de datos normalmente se ven modificadas a lo largo del tiempo. Se denomina ejemplar de la base de datos a la colecci´on de informaci´on almacenada en la misma en un momento determinado. El dise˜ no completo de la base de datos se llama esquema de la base de datos. Existen diferentes esquemas, de acuerdo con los niveles explicados anteriormente. As´ı, el esquema f´ısico describe el dise˜ no final en el nivel f´ısico, mientras que el

2

MODELO DE DATOS

3

esquema l´ ogico lo describe en el nivel l´ogico. Normalmente, es el esquema l´ogico el m´as importante, ya que afecta de manera importante a los programas de aplicaci´on. El nivel f´ısico, aunque importante, puede ser alterado sin que las aplicaciones se vean afectadas.

2

Modelo de datos

El modelo de datos es una colecci´on de herramientas conceptuales que se utilizan para describir datos, incluyendo relaciones, sem´antica y restricciones de consistencia. Se estudiar´an dos modelos de datos, el modelo entidad-relaci´ on y el relacional. Los diferentes modelos de datos que se han propuesto se clasifican en tres grupos: modelos l´ogicos basados en objetos, modelos l´ogicos basados en registros y modelos f´ısicos.

2.1

Modelo Entidad-Relaci´ on (E-R)

Este modelo representa el mundo real mediante una colecci´on de objetos b´asicos, que denomina entidades, y las relaciones entre estos objetos. Una entidad es cualquier cosa o parte del mundo que es distinguible del resto. Por ejemplo, en un sistema bancario, las personas y las cuentas bancarias se podr´ıan interpretar como entidades. Las entidades se describen mediante una serie de atributos (por ejemplo, n´ umero de cuenta, saldo y fecha de alta pueden ser atributos de la entidad cuenta). Una relaci´on es una asociaci´on entre varias entidades (Por ejemplo, una relaci´on impositor relaciona cada cliente con las cuentas que tenga abiertas). El conjunto de todas las entidades del mismo tipo se denomina conjunto de entidades, y el conjunto de todas las relaciones del mismo tipo se denominan conjunto de relaciones. La estructura l´ogica se representa mediante el diagrama Entidad-Relaci´on o diagrama E-R, que consta de los siguientes componentes. s´ımbolos Rect´angulos Elipses Rombos L´ıneas

Representan Conjuntos de entidades Atributos Relaciones entre conjuntos de entidades Unen a los atributos con los conjuntos de entidades, y los conjuntos de entidades con las relaciones

Adem´as de representar entidades y relaciones, el modelo permite representar ciertas restricciones que los datos almacenados deben cumplir. Una restricci´on importante es la correspondencia de cardinalidad, que expresa el n´ umero de entidades con las que otra entidad se puede asociar a trav´es de un conjunto de relaciones. El modelo E-R se estudiar´a con m´as detalles en el tema 2.

3

1.4 LENGUAJES DE BASE DE DATOS

2.2

4

Modelo relacional

En el modelo relacional se utiliza un grupo de tablas para representar los datos y las relaciones entre ellos. Cada tabla est´a compuesta por varias columnas, y cada columna tiene su propio nombre, que debe ser u ´nico. Este modelo es un ejemplo de modelo basado en registros. Estos modelos se denominan as´ı porque la base de datos se estructura en registros de formato fijo, de diferentes tipos. Cada tabla contiene registros de un tipo particular. Cada tipo de registro define un n´ umero fijo de campos, donde cada campo representa un atributo. El modelo de datos relacional es el modelo m´as ampliamente usado, y la mayor´ıa de los sistemas actuales se basan, parcial o totalmente, en el modelo relacional. Este modelo se estudiar´a con m´as detalle en los temas 3 al 7. Es habitual realizar primero un esquema E-R, situado en un nivel superior de abstracci´on, que luego es traducido al modelo relacional. En el Tema 2 se ver´a con m´as detalle este mecanismo de traducci´on. Por u ´ltimo, se ha de destacar que en el modelo relacional es posible crear esquemas que tengan, por ejemplo, informaci´on duplicada innecesariamente. El tema 7 se dedicar´a ´ıntegramente a evitar estos malos dise˜ nos.

3

1.4 Lenguajes de base de datos

Un sistema de base de datos proporciona un lenguaje de definici´on de datos para especificar el esquema de la base de datos y un lenguaje de manipulaci´on de datos para expresar las consultas y las modificaciones a la base de datos. En la pr´actica, los dos lenguajes no suelen ir por separado, sino que forman un u ´nico lenguaje, como por ejemplo en el lenguaje SQL, ampliamente utilizado. Lenguaje de definici´ on de datos (LDD) sirve para especificar el esquema de la BD. El resultado de la compilaci´on es un conjunto de tablas que se almacenan en un archivo especial llamado diccionario de datos o directorio de datos. El diccionario de datos almacena metadatos, es decir, datos acerca de los datos. La estructura de almacenamiento y los m´etodos usados se especifican mediante un conjunto de definiciones del lenguaje de almacenamiento y definici´on de datos. Lenguaje de manipulaci´ on de datos (LMD) permite acceder o manipular los datos organizados. Hay dos tipos: LMD procedimentales, que requieren que el usuario especifique que datos se necesitan y como obtenerlos, y LMD no procedimentales, que requiere que el usuario especifique que datos se necesitan, sin especificar como obtenerlos. La manipulaci´on de la informaci´on almacenada en una base de datos contempla:

4

USUARIOS Y ADMINISTRADORES DE LA BASE DE DATOS

5

• La recuperaci´on de la informaci´on almacenada • La inserci´on de informaci´on nueva • El borrado de informaci´on • La modificaci´on de la informaci´on Una consulta es una instrucci´on para recuperar informaci´on, y la parte del LMD que implica recuperaci´on de informaci´on se llama lenguaje de consultas. Existen varios lenguajes de consultas. En el tema 4 se estudiar´a SQL, el m´as extendido de todos. En el tema 5 se estudiar´an otros.

3.1

Acceso a la base de datos desde programas de aplicaci´ on

Los programas de aplicaci´on se escriben normalmente en un lenguaje de programaci´on de alto nivel (Cobol, C, C++, Java, Python, etc...), que denominaremos lenguaje anfitri´ on. Para acceder a la base de datos, las instrucciones LMD necesitan ser ejecutadas desde el lenguaje anfitri´on. Hay dos maneras de hacerlo: • Mediante una API (Librer´ıa de procedimientos) que se puede usar para enviar las instrucciones LMD y LDD a la base de datos, as´ı como recuperar los resultados. ODBC (Open Data Base Connectivity) es un ejemplo de API definida para permitir el acceso a la base de datos desde C. JDBC (Java Data Base Connectivity) es similar, pero utilizando Java como lenguaje anfitri´on. • Extendiendo la sintaxis del lenguaje anfitri´on para incorporar llamadas LMD dentro del programa del lenguaje anfitri´on. Normalmente se realiza mediante un preprocesador. Si se utiliza esta t´ecnica se dice que el lenguaje de consulta est´a embebido en el lenguaje anfitri´on.

4

Usuarios y administradores de la base de datos

Las personas que hacen uso de una base de datos pueden clasificarse en diferentes roles:

4.1

Usuarios

• Usuarios normales: Usuarios no sofisticados, que interact´ uan con el sistema mediante la ejecuci´on de programas espec´ıficos escritos previamente. Normalmente la interfaz para este tipo de usuarios es del tipo de formularios e informes generados.

5

´ DE TRANSACCIONES GESTION

6

• Programadores de aplicaciones: Profesionales inform´aticos que escriben los programas de aplicaci´on que utilizan los usuarios. Para ello se suelen usar lenguajes convencionales, entornos de herramientas de desarrollo r´apido de aplicaciones (RAD -Rapid Application Development-) o lenguajes de cuarta generaci´on. • Usuarios sofisticados: Interact´ uan con el sistema sin usar aplicaciones espec´ıficas, usando directamente el lenguaje de consultas. Los analistas que utilizan consultas para explotar los datos en la base de datos entran en esta categor´ıa. • Usuarios especializados: son usuarios sofisticados que escriben aplicaciones de BD especializadas que no son adecuadas en el marco de procesamiento de datos tradicional.

4.2

Administrador de la base de datos

Una de las ventajas de usar un un sistema gestor de base de datos es tener un control centralizado tanto de datos como de los programas que acceden a los datos. La persona que se encarga de manejar este control se denomina administrador de la base de datos. Sus funciones incluyen: • Definici´on de esquemas. • Definici´on de estructuras y m´etodos de accesos • Realizar las modificaciones de los esquemas y de la organizaci´on f´ısica, cuando sea necesario. • Conceder o revocar autorizaci´on a los usuarios para poder consultar, insertar, modificar o borrar los datos. • Mantenimientos rutinarios: copias de respaldo, comprobaci´on de espacio ocupado en los discos, comprobaciones de rendimiento.

5

Gesti´ on de transacciones

Una de las grandes ventajas que proporciona el uso de un sistema gestor de base de datos es el de garantizar la atomicidad. La atomicidad es la garant´ıa que nos da el sistema de que, ante la ejecuci´on de una serie de operaciones, englobadas en una transacci´on, o bien se ejecutan todas las operaciones, o bien no se efect´ ua ninguna. En otras palabras, el conjunto de operaciones se hace entero o no se hace, no dejando ning´ un efecto sobre el sistema. La atomicidad nos permite realizar cambios en la base de datos garantizando la consistencia de los datos. la consistencia es la garant´ıa de que determinadas reglas declaradas sean siempre verificadas despu´es de la transacci´on,

6

ESTRUCTURA DE UN SISTEMA DE BASE DE DATOS

7

independientemente del resultado de la misma. Por ejemplo, en una transacci´on de fondos desde la cuenta A a la cuenta B, la regla de que A+B debe ser constante debe cumplirse tanto antes como despu´es de la transacci´on (aunque durante la transacci´on si es posible que se produzcan inconsistencias). Otra caracter´ıstica importante es la durabilidad. La durabilidad de una transacci´on garantiza que, en el instante en el que se finaliza la transacci´on, esta perdura a pesar de otras consecuencias. Por ejemplo, incluso en el caso de fallo en el disco duro, el sistema a´ un ser´a capaz de recordar todas la transacciones que han sido realizadas en el sistema. La responsabilidad de asegurar la atomicidad y durabilidad recaen en una parte del sistema gestor de base de datos, concretamente en el componente de gesti´on de transacciones. En ausencia de fallos, toda transacci´on concluida es definitiva. En caso de fallo, el sistema debe realiza la recuperaci´on de fallos, es decir, restaurar la base de datos al estado en que estaba antes de que ocurriera el fallo. Finalmente, otra caracter´ıstica importante del sistema de transacciones es el aislamiento entre operaciones. El aislamiento es la garant´ıa de que todas las transacciones que se est´en realizando simult´aneamente en el sistema son invisibles al resto los usuarios hasta que estas hayan concluido. Este aislamiento garantiza que los usuarios del sistema no observen los cambios intermedios. Es responsabilidad del gestor de control de concurrencia controlar la interacci´on entre las transacciones concurrentes. Estas cuatros caracter´ısticas de los sistemas gestores de bases de datos se suelen resumir con el acr´onimo ACID, que corresponde con las iniciales en ingles (Atomicity, Consistency, Isolation, Durability).

6

Estructura de un sistema de base de datos

Un SGBD se divide en m´odulos que se encargan de cada una de las responsabilidades del sistema completo. A grandes rasgos, estos m´odulos pueden agruparse en dos categor´ıas, el gestor de almacenamiento y el procesador de consultas. El gestor de almacenamiento es importante porque las bases de datos requieren normalmente una gran cantidad de espacio, siendo ya relativamente normales bases de datos de varios Giga bytes, e incluso Terabytes. Debido a estos tama˜ nos y a la diferencia de velocidades entre la memoria principal y la de disco, la estructuraci´on correcta de los datos puede minimizar la necesidad de movimientos entre niveles de memoria y, consecuentemente, optimizar el rendimiento. El procesador de consultas es importante porque ayuda al SGBD a simplificar y facilitar el acceso a los datos. Las vistas de alto nivel ayudan a conseguir este objetivo. Es necesario traducir las actualizaciones y las consultas realizadas en lenguaje no procedimental (nivel l´ogico) en una se-

6

ESTRUCTURA DE UN SISTEMA DE BASE DE DATOS

8

cuencia de operaciones (en el nivel f´ısico).

6.1

Gestor de almacenamiento

El gestor de almacenamiento es el m´odulo que proporciona la interfaz entre los datos de bajo nivel en la base de datos y los programas de aplicaci´on y las consultas emitidas al sistema; por tanto, es n interprete de las instrucciones LMD a secuencias de ´ordenes de nivel inferior. Tambi´en es responsable de la interacci´on con el sistema de ficheros. As´ı, el gestor de almacenamiento es responsable del almacenamiento, actualizaci´on y recuperaci´on de los datos en la base de datos. Los componentes de gestor de almacenamiento incluyen: Gestor de autorizaci´ on e integridad Comprueba que se satisfacen las restricciones de integridad y la autorizaci´on de los usuarios para acceder a los datos. Gestor de transacciones Asegura la consistencia de la base de datos, a pesar de los fallos en el sistema. Tambi´en es responsable de que la ejecuci´on de transacciones concurrentes ocurra sin conflictos. Gestor de archivos Gestiona la reserva de espacio de almacenamiento en disco, y las estructuras de datos usadas para almacenar la informaci´on. Gestor de memoria intermedia o cach´ e Es responsable de traer los datos de disco hacia memoria principal, y de decidir que datos tratar en memoria cach´e. Este m´odulo es cr´ıtico para el rendimiento del sistema. El gestor de almacenamiento implementa varias estructuras de datos como parte de la implementaci´on f´ısica del sistema: • Archivo de datos, que almacena la base de datos en si. • Diccionario de datos, que almacenan metadatos acerca de la estructura de la base de datos, en particular, el esquema. • ´Indices, que proporcionan acceso r´apido a determinados datos.

6.2

Procesador de consultas

Los componentes de este m´odulo son: Int´ erprete del LDD Interpreta las instrucciones del LLD y registra las definiciones en el diccionario de datos.

7

ARQUITECTURA DE APLICACIONES

9

Compilador del LMD Traduce las instrucciones del LMD en un lenguaje de consultas a un plan de evaluaci´ on, que consiste en instrucciones de bajo nivel que entiende el motor de evaluaci´on de consultas. El compilador tambi´en puede producir y evaluar el coste de distintos planes alternativos, realizando as´ı una fase de optimizaci´ on de la consulta. Motor de evaluaci´ on de consultas Ejecuta las instrucciones de bajo nivel generadas por el compilador de LMD. La figura 1 pretende mostrar estos componentes y sus conexiones.

7

Arquitectura de aplicaciones

Las aplicaciones de Base de datos se dividen normalmente en dos o tres capas. En una arquitectura de dos capas, la aplicaci´on se divide en un componente que reside en el cliente, que llama directamente a la funcionalidad del sistema de base de datos en el servidor mediante instrucciones de consultas, usando normalmente est´andares como ODBC o JDBC. En una arquitectura de tres capas, existe un cliente muy ligero, que act´ ua simplemente como frontal, y que no llama directamente a la base de datos, sino que se comunica con un servidor de aplicaciones. Es este servidor de aplicaciones el que interact´ ua con la base de datos. La ventaja de este u ´ltimo esquema es que la implementaci´on de la l´ogica de negocio se realiza en un u ´nico sitio, en la capa intermedia o servidor de aplicaciones, lo que facilita enormemente su mantenimiento.

7

ARQUITECTURA DE APLICACIONES

10

Figure 1: Componentes de un SGBD

Programas de aplicación

Interfaz de aplicaciones

Compilador y enlazador

Herramientas de consulta

Herramientas de administración

Consultas LMD

Intérprete del LDD

Código objeto de los programas de aplicación Compilador del LMD y organizador

Motor de evaluación de Consultas Procesador de consultas

Gestor de Memoria Intermedia (Caché)

Gestor de archivos

Gestor de autorización e integridad

Gestor de transacciones

Gestor de almacenamiento

Diccionario de datos

Índices

Datos

Datos estadísticos Almacenamiento en disco

8

8

PREGUNTAS HABITUALES

11

Preguntas habituales 1. ¿Cual de estos componentes no forma parte del Gestor de almacenamiento en un sistema gestor de base de datos. (a) Gestor de consultas (b) Gestor de autorizaci´on e integridad (c) Gestor de transacciones (d) Gestor de memoria intermedia 2. ¿A qu´e se refiere el t´ermino “Esquema de la base de datos” en un sistema de base de datos? (a) Al dise˜ no completo de una base de datos (b) Al nivel f´ısico (c) Al nivel l´ogico (d) Al nivel vista 3. ¿Qu´e parte del lenguaje de base de datos se utiliza para especificar el esquema de la base de datos? (a) DML (b) DLL (c) DDL (d) EBD 4. ¿Cu´al de estas afirmaciones es verdadera? (a) Un DML procedimental necesita que el usuario especifique que datos necesita pero no como obtenerlos. (b) Un DML procedimental necesita que el usuario especifique que datos necesita y como obtenerlos. (c) Un DML procedimental necesita que el usuario especifique que datos necesita mediante procedimientos. (d) Ninguna de ellas.