tema05

14
BLOQUE 5: ORGANIZACIÓN DE UNA SISTEMA GESTOR DE BASES DE DATOS RELACIONALES 5.1.- INTRODUCCIÓN Normalmente los usuarios de Sistemas Informáticos están rodeados de grandes volúmenes de datos, que no resultan muy útiles cuando no están bien documentados y no tienen asociada una semántica precisa que indique el significado y utilidad de cada uno de ellos. De aquí surge la necesidad de disponer de un diccionario de recursos de información (DRI) que contenga las descripciones de todos los datos que constituyen el sistema informático y ayuden a la gestión de la información. Esto se consigue almacenando, administrando y controlando lo que se denominan metadatos, es decir los datos que definen y describen los datos que maneja el sistema. En principio se crearon dos almacenes distintos para contener esta información: Diccionario de datos: que contenía la información sobre los datos almacenados en la base de datos, sus definiciones, significado, estructura, etc., que era mantenido por el propio usuario. Directorio de datos: contenía donde y como estaban almacenados los datos en la base de datos y era mantenido por el Sistema Gestor de Base de Datos. En las bases de datos relacionales aparece el concepto de catálogo del Sistema Gestor de Base de Datos, que une ambas cosas, el diccionario de datos y el directorio de datos y además lo gestiona el propio SGBD y es una base de datos más dentro de la propia base de datos, por esta razón también recibe el nombre de metabase. El catálogo del sistema gestor de una base de datos relacional supone grandes ventajas para el usuario y sobre todo para el administrador de la base de datos ya que esta mantenido de forma automática por el SGBD y además se puede acceder a él como a cualquier otra base de datos mediante el lenguaje SQL. Pág. 1

description

TM59895895895896958965896589658965899889778588596968569856856985

Transcript of tema05

TEMA 5: ORGANIZACIN DE UNA SISTEMA GESTOR DE BASES DE DATOS

BLOQUE 5: ORGANIZACIN DE UNA SISTEMA GESTOR DE BASES DE DATOS RELACIONALES

5.1.- INTRODUCCIN

Normalmente los usuarios de Sistemas Informticos estn rodeados de grandes volmenes de datos, que no resultan muy tiles cuando no estn bien documentados y no tienen asociada una semntica precisa que indique el significado y utilidad de cada uno de ellos. De aqu surge la necesidad de disponer de un diccionario de recursos de informacin (DRI) que contenga las descripciones de todos los datos que constituyen el sistema informtico y ayuden a la gestin de la informacin.

Esto se consigue almacenando, administrando y controlando lo que se denominan metadatos, es decir los datos que definen y describen los datos que maneja el sistema. En principio se crearon dos almacenes distintos para contener esta informacin:

Diccionario de datos: que contena la informacin sobre los datos almacenados en la base de datos, sus definiciones, significado, estructura, etc., que era mantenido por el propio usuario.

Directorio de datos: contena donde y como estaban almacenados los datos en la base de datos y era mantenido por el Sistema Gestor de Base de Datos.

En las bases de datos relacionales aparece el concepto de catlogo del Sistema Gestor de Base de Datos, que une ambas cosas, el diccionario de datos y el directorio de datos y adems lo gestiona el propio SGBD y es una base de datos ms dentro de la propia base de datos, por esta razn tambin recibe el nombre de metabase.

El catlogo del sistema gestor de una base de datos relacional supone grandes ventajas para el usuario y sobre todo para el administrador de la base de datos ya que esta mantenido de forma automtica por el SGBD y adems se puede acceder a l como a cualquier otra base de datos mediante el lenguaje SQL.

Segn palabras de Codd (1990), el requisito para que un SGBD pueda considerarse relacional es que soporte un catlogo dinmico en lnea en el que la descripcin de la base de datos se represente como cualquier otro dato, permitiendo a los usuarios autorizados aplicar el mismo lenguaje relacional tanto a la descripcin como a los datos regulares.

5.2.- CATLAGO DE LA BASE DE DATOS

El catlogo de una base de datos est formado por un conjunto de tablas donde se recoge toda la informacin sobre las tablas, columnas, ndices, permisos, etc., que tiene una determinada base de datos.

El mantenimiento de las tablas del catlogo lo realiza automticamente el Sistema Gestor de la Base de Datos, las tablas se almacenan en el directorio de la base de datos . Ejemplos de este catlogo pueden ser: . systables: tablas que componen la base de datos.

. syscolumns: columnas que forman cada una de las tablas de la base de datos.

. sysindexes: ndices de cada tabla

. systabauth: permisos de acceso a las tablas.

. syscolauth: permisos de acceso a las columnas.

. sysusers: permisos de acceso a la base de datos.

. sysviews: composicin de views.

. sysdepend: estructura de las views.

. syssynonyms: sinnimos de las tablas.

. sysforeing: claves referenciales de cada tabla.

. syscolattr: atributos CTSQL de cada columna.

. syscollating: secuencia de ordenacin.

5.3.- ESTRUCTURA DEL SISTEMA GESTOR DE BASES DE DATOS

Un sistema de base de datos est formado por diferentes mdulos y cada uno se encarga de realizar funciones concretas, aunque generalmente algunas de esas funciones las puede realizar el sistema operativo.

Las funciones que desarrolla el sistema gestor de la base de datos (aunque no siempre) se pueden incluir en dos mdulos:

Procesador de consultas: para ello dispone de los siguientes mdulos:

a) Compilador del lenguaje de manejo de datos (DML): que traduce las instrucciones SQL a instrucciones de bajo nivel y transforma las solicitudes del usuario en otras mas eficientes, las optimiza.

b) Precompilador de lenguaje de manejo de datos (DML): que convierte las instrucciones SQL embebidas en otro lenguaje de programacin en instrucciones que entiende el procesador de consultas.

c) Interprete del lenguaje de definicin de datos(DDL): que interpreta las instrucciones DDL y realiza las anotaciones correspondientes en el catlogo de la base de datos.d) Motor de evaluacin de consultas: ejecuta las instrucciones de bajo nivel generadas por el compilador del DML.

Gestin del almacenamiento: es el interfaz entre los datos almacenados en el disco y las instruciones de bajo nivel obtenidas por el procesador de consultas, est compuesto por los siguientes mdulos:

a) Gestor de autorizacin e integridad: comprueba que se satisfagan las reglas de integridad impuestas y las debidas autorizaciones de los usuarios para acceder a los datos.

b) Gestor de transacciones: se asegura de que la base de datos tenga un estado consistente aunque existan fallos del sistema y de que la ejecucin de transacciones consistentes ocurran sin conflictos.

c) Gestor de archivos: gestiona la reserva de espacio de almacenamiento en disco y las estructuras de datos usadas para representar la informacin.

d) Gestor de memoria interna: es el responsable de traer los datos del disco a memoria principal.

5.4.- ACCESO AL ALMACENAMIENTO

Las bases de datos contienen varios archivos diferentes que son mantenidos por el sistema operativo subyacente, cada archivo se divide en unidades de almacenamiento de longitud constante llamadas bloques que son las unidades de asignacin de almacenamiento y de transferencia de datos. Cada bloque puede contener varios elementos de datos dependiendo de la organizacin fsica de los datos que se utilice.

Uno de los principales objetivos de las bases de datos es minimizar el nmero de accesos al disco para ello mantiene en memoria principal todos los bloques posibles, de forma que cuando se necesite un determinado dato, el bloque que lo contienen ya est en memoria y no sea necesario realizar un acceso a disco. El espacio donde se almacenan los bloques es la memoria intermedia (buffer) y el subsistema responsable de la asignacin del espacio de memoria intermedia se denomina gestor de la memoria intermedia.

El sistema de trabajo es el siguiente: los programas de bases de datos realizan solicitudes al gestor de memoria intermedia cuando necesitan un bloque, si ese bloque est en memoria intermedia el gestor pasa al solicitante su direccin en memoria principal. Si el bloque no est en memoria intermedia, el gestor primero asigna espacio en memoria intermedia para el bloque, si hiciera falta espacio, descarta alguno de los bloques, escribiendolo en el disco si ha habido alguna modificacin y despues accede al disco para leer y bloque solicitado y lo escribe en memoria intermedia pasando la direccin correspondiente al solicitante.

Los sistemas que se utilizan para la sustitucin de bloques en memoria intermedia pueden ser diferentes. En los programas que no utilizan una base de datos es imposible predecir con precisin cuales sern los bloques a los que se va a hacer referencia por tanto los sistemas operativos normalmente utilizan el sistema LRU (Least Recently Used, menos utilizado recientemente) para sustuir los bloques en memoria intermedia. En las aplicaciones que utilizan bases de datos, se dispone de informacin para conocer al menos a corto plazo cual ser la informacin necesaria (optimizador), adems existen bloques como los correspondientes al catlogo de la base de datos, que se utilizan constantemente, o los ndices de los archivos que se utilizan con ms frecuencia que los propios archivos de la base de datos, por tanto debe evitar quitarlos de la memoria intermedia. Hay otra serie de factores que debe tener en cuenta como conservar la consistencia de la base de datos si existe concurrencia de varios usuarios etc. Por todo lo expuesto un sistema de base de datos debe utilizar sistemas diferentes al LRU para realizar la sustitucin de bloques en la memoria intermedia y no siempre es suficiente la gestin realizada por el sistema operativo.

5.5.- ORGANIZACIN DE LOS ARCHIVOS.AGRUPACIONES (CLUSTERS)

En los sistemas de bases de datos se organiza la informacin en diferentes archivos formado cada uno de ellos por registros que contienen informacin sobre la misma entidad de negocio, por tanto es equivalente a cualquier otro sistema de ficheros. Todo sistema operativo dispone de un sistema de gestin de archivos que ser donde se apoye la base de datos para gestionar sus tablas.

La informacin sobre el contenido de cada archivo se encuentra en la cabecera de archivo (FAT) y la informacin sobre los archivos que contiene el disco en el directorio del disco y normalmente es el sistema de gestin de archivos del sistema operativo quien mantiene el almacenamiento fsico de los datos, esta forma de implementar las bases de datos relacionales deja de ser eficiente a medida que aumenta el tamao de la base de datos.

Sistemas de bases de datos de gran tamao no utilizan directamente el sistema operativo para la gestin de archivos, sino que se asigna a la base de datos un archivo de gran tamao del sistema operativo donde se guardan todas las relaciones y la gestin de este archivo corresponde al sistema gestor de base de datos.

Supongamos la siguiente consulta:

SELECT num_cuenta, nombre,calle,ciudad

FROM impositor,cliente

WHERE impositor.nombre=cliente.nombre

si tenemos dos archivos diferentes:

impositor

cliente

NombreNum_cuentaNombreCalleCiudad

LpezC-102LpezPrincipalAlmazn

LpezC-220AbrilDel PezBurgo

LpezC-503

AbrilC-305

En el peor de los casos si cada registro se encuentra en un bloque diferente tendremos que realizar tantos accesos a disco como registros necesitamos.

Si realizamos el almacenamiento de la siguiente manera:

LpezPrincipalAlmazn

Lpez C-102

LpezC-220

LpezC-503

AbrilDel PezBurgo

AbrilC-305

Esta estructura mezcla las tuplas de dos relaciones pero permite un procesamiento mas eficaz ya que cuando se lee una tupla correspondiente a la relacin cliente pasa todo el bloque a memoria intermedia y por tanto pasan tambin las tuplas de la relacin impositor que se relacionan con dicho cliente, si un cliente tiene tantas cuentas que no caben en el mismo bloque, estarn en otro bloque y como mucho se realizarn dos lecturas para procesar los datos correspondientes a dicho cliente.

Para poder realizar consultas sobre la misma relacin, se aade un sistema de punteros que recorre los registros que pertenecen a la misma relacin.

Esta forma de almacenar la informacin se denomina en agrupaciones o clusters y la agrupacin que se debe realizar depende de los tipos de consulta que se vayan a obtener en la aplicacin y su frecuencia por tanto se determinan en la fase de diseo de la base de datos cuando se ha estudiado la carga que va tener.

Un buen SGBD debe permitir al administrador que especifique agrupamientos diferentes para distintos archivos o modificar un determinado agrupamiento si cambian las requerimientos de la aplicacin, pero en ningn momento un cambio en el agrupamiento debe suponer modificaciones en las aplicaciones que utilizan dichos datos ya que debe existir total independencia entre los datos y los programas.

5.6.- EL OPTIMIZADOR DE SQL

El optimizador de queries decide la estrategia de bsqueda sobre las tablas que intervienen en las sentencias teniendo en cuenta los siguientes factores:

ndices existentes.

Uso del ROWID

Nmero de filas en la tabla

Enlaces

Orden de las condiciones en la clusula WHERE.

Orden de las tablas en la clusula FROM de la instruccin SELECT.

Para tomar una decisin realiza los siguientes pasos:

Paso 1.- analiza las condiciones incluidas en la clusula WHERE y las agrupa por tabla, evaluando los rangos de valores en cada tabla.

Paso 2.- teniendo en cuenta los rangos encontrados en cada tabla selecciona la mejor estrategia de bsqueda: por ndice, por ROWID o secuencial. Para ello comprueba si las columnas implicadas forman parte de algn ndice, si incluye condiciones por ROWID o en el peor de los casos si debe realizar un acceso secuencial a toda la tabla.

Paso 3.- seleccin de la secuencia de acceso a las diferentes tablas que intervienen, decidiendo cual ser la primera tabla a la que tiene que acceder que en principio ser la que devuelva un menor nmero de filas con el menor nmero de lecturas en el disco. Esto decisin la toma teniendo en cuenta los datos obtenidos en el paso 2. Una vez seleccionada la primera tabla vuelve al paso 2 para ver los enlaces de la tabla relacionada con el resto. Este proceso contina hasta terminar con todas las tablas que intervienen en la sentencia.

El optimizador solamente decide en el caso de que una estrategia sea mejor que el resto, sino no hay ningn motivo para decantarse por una forma de acceder u otra elige la primera estrategia encontrada. La persona que realiza los programas puede forzar al SQL a utilizar una estrategia determinada en funcin de cmo escriba sus sentencias.

Para tomar la decisin de qu ndice es el ms adecuado intervienen los siguientes elementos:

1.- Nmero de partes del ndice referenciadas en la WHERE mediante condiciones =, >=, >, LIKE, IN, BETWEEN.

2.- Si un ndice es compuesto solamente se tendr en cuenta la referencia a una de sus partes si se referencian todas las componentes del ndice anteriores a esa parte en otras condiciones de la WHERE.

3.- Un ndice referenciado en todas sus partes por las condiciones indicadas es mejor que un ndice del que no se referencian todas sus componentes.

4.- Un ndice referenciado en todas sus partes por condiciones de igualdad es mejor que otro referenciado en todas sus partes por cualquier otra condicin.

5.- Un ndice referenciado en todas sus partes por condiciones de igualdad es mejor que otro en su mismo caso si el primero es nico y el segundo no.

6.- Si hasta aqu llegamos en condiciones de igualdad de los dos ndices, el optimizador seleccionar en primer lugar el primero al que se hace referencia en la clusula WHERE y si esta columna pertenece a los dos ndices se elige el que sea clave primaria (si lo es), sino el que se haya creado antes.

7.- Una condicin es optimizable si es nica o est unida a otras condiciones por la clusula AND.

SELECT * FROM clientes WHERE num_cliente>20 OR num_provincia>10no es optimizable y se har un acceso secuencial a la tabla.

SELECT * FROM clientes WHERE num_cliente>20 AND num_provincia>10Si es optimizable y se acceder por num_cliente si hay un ndice para dicha columna o bien hay un ndice compuesto en el que la primera columna es num_cliente, si hubiera ndices para num_cliente y num_provincia, se acceder por num_cliente por ser el que se ha referenciado primero. Por tanto el programador puede forzar los accesos por num_provincia si escribe la sentencia de la siguiente manera: SELECT * FROM clientes WHERE num_provincia>10 AND num_cliente>20.

8.- Una condicin optimizable por ROWID es siempre mejor que un acceso por ndice, en el caso: SELECT * FROM clientes WHERE num_cliente>15 AND rowid in (13,23,1,45), acceder directamente a las filas indicadas por el ROWID.

9.- Una clasula ORDER BY supone realizar una ordenacin del resultado de una SELECT salvo si la ordenacin se puede optimizar, esto ocurre cuando se dan todas las condiciones siguientes:

La SELECT se realiza sobre una sola tabla.

No se ha podido determinar ningn ndice de acceso a la tabla o bien el ndice de acceso coincide con el de ordenacin.

Para determinar la secuencia de accesos a las tablas se tienen en cuenta las siguientes condiciones:

siempre es mejor acceder primero a la tabla cuyas filas vlidas sea menor, ya que en principio el nmero de accesos a disco es menor. Para conocer el nmero de filas devuelve cada tabla utiliza siempre las condiciones ms restrictivas, siempre es mejor una tabla a la que se puede acceder mediante un ndice o por ROWID que otra que no pueda serlo.

Si existen dos tablas a las que no se puede acceder por ndice se elige la que tenga menos filas. El nmero de filas se obtiene de la columna nrow de la tabla systables, por lo que es conveniente tener actualizada esta columna.

Si a dos tablas no se va a acceder por ndices y tienen el mismo nmero de filas se elige el orden de acceso definido en la clusula FROM.

USUARIOS

Administrador

Programadores

Usuarios

GESTOR DE ALMACENAMIENTO

PROCESADOR DE CONSULTAS

Sistema Gestor de la Base de Datos

Almacenamiento en disco

Indices

Datos estadsticos

Diccionario de datos

Archivos de datos

Pg. 9