sábado, 7 de marzo de 2015

VII ORGANIZACIÓN FÍSICA DE LAS BASES DE DATOS



1. INTRODUCCIÓN

2. CONCEPTOS BÁSICOS

3. FICHEROS

4. IMPLEMENTACION DE BASES DE DATOS RELACIONALES

Las bases de datos, independientemente del modelo de datos que se

haya usado para su diseño, se almacenan físicamente como ficheros de

registros, los cuales se almacenan normalmente en discos magnéticos.

Durante este tema presentaremos cómo se organiza la base de datos en

su espacio de almacenamiento, y cuáles son las técnicas que se usan

para acceder a estos datos de la forma más eficaz y rápida posible.



125

VII1. introducción

La colección de datos que constituye una base de datos debe estar

almacenada en un medio de almacenamiento del ordenador. De esta

manera, el SGBD será capaz de recuperar, actualizar y procesar dichos datos

siempre que sea necesario. Los medios de almacenamiento en un ordenador

forman una jerarquía llamada jerarquía de almacenamiento o jerarquía de

memoria que contiene dos categorías principales:

el almacenamiento primario: que incluye la memoria principal y la

memoria caché, medios de almacenamiento muy rápidos aunque

con capacidad limitada.

el almacenamiento secundario: que incluye discos magnéticos,

discos ópticos, cintas, etc., todos ellos medios de almacenamiento

de grandes capacidades, aunque con un acceso mucho más lento.

Si bien el nivel de almacenamiento primario se caracteriza por ser más caro y

rápido que el secundario, podemos decir que dentro de cada uno de estos

niveles hay subniveles atendiendo también a estos criterios de coste y

velocidad.

Así, en el nivel de almacenamiento primario destacamos los subniveles:

memoria caché: es la capa más cara de la jerarquía y se trata de

una memoria RAM estática, usada por la CPU para aumentar la

velocidad de ejecución de las máquinas. Volátil.

memoria DRAM (RAM dinámica) o memoria principal: usada por la

CPU para mantener los programas y los datos. Más lenta que la

RAM estática aunque más barata. Volátil.

memoria flash: memoria no volátil situada en el último subnivel,

dentro del nivel primario.

En el nivel de almacenamiento secundario se destaca:

los discos magnéticos: siendo los más rápidos de este nivel.

los discos CD-ROM (Compact Disk Read Only Memory) y su

versión reescribible CD-RW: basados en tecnología óptica con

lectura láser.

las cintas: en el nivel más barato.

En cualquier caso, tanto el nivel de almacenamiento primario como el

secundario se usan para almacenar bases de datos. La memoria principal,

siempre que tenga capacidad suficiente, puede ser usada para albergar datos

(o parte de ellos), manteniendo siempre una copia de respaldo en memoria

secundaria para evitar los problemas que podría ocasionar la volatilidad de la

primera.

Sin embargo, en la gran mayoría de las ocasiones, el tamaño de la base de

datos impide su almacenamiento en una memoria primaria, y se mantiene en

almacenamiento secundario utilizando la memoria primaria para cargar

índices que aumentan la velocidad de acceso a los datos.

Dentro de la jerarquía del almacenamiento secundario, el principal soporte

usado hasta el momento para el almacenamiento de las bases de datos es el

disco magnético, y aunque puede que en el futuro los CD-ROM, DVD y otras

tecnologías usurpen el espacio que actualmente ocupa el disco magnético,

por el momento nos centraremos en este último como la principal fuente de

almacenamiento para bases de datos. Así en este tema nos centraremos en

el estudio y comprensión de las propiedades y características de los discos

magnéticos y la forma en que se pueden organizar los ficheros de datos en el

disco con el fin de obtener bases de datos con un rendimiento adecuado.

Las técnicas usadas para el almacenamiento de grandes cantidades de

información en disco deben ser conocidas tanto por los diseñadores como por

los administradores de bases de datos, así como, evidentemente por los

diseñadores e implementadores del SGBD.

VII2. conceptos básicos

Para comenzar con el estudio de las técnicas usadas en el almacenamiento

de datos en los discos magnéticos, es necesario recordar algunas de las

características principales que tienen estos medios. Comenzaremos por

repasar el hardware de los discos.

EL DISCO MAGNÉTICO

El disco magnético sirve para almacenar grandes cantidades de datos.

Aunque originalmente se construían de una sola cara, con el tiempo se

construyeron discos de dos caras, capaces de albergar información en las

dos superficies, e incluso formando paquetes de discos donde los datos se

organizan en varias superficies. La información almacenada en un disco se

encuentra en círculos concéntricos de pequeña anchura que se denomina

pista y que varían de diámetro conforme se alejan o se acercan al eje del

disco. En los paquetes de discos, todas las pistas de cada disco que tienen el

mismo diámetro se organizan formando un cilindro. El concepto de cilindro

es importante para el almacenamiento de una base de datos, ya que los datos

que se encuentran en mismo cilindro se pueden leer con mayor rapidez que si

se encuentran en varios cilindros, debido a que las cabezas lectoras del disco

son capaces de leer simultáneamente los datos de todas las pistas de un

mismo cilindro.

Puesto que un pista puede contener gran cantidad de información, ésta se

puede organizar a su vez en unidades menores llamadas sectores.

Finalmente, en la fase de formateo del disco, el sistema operativo realiza la

división de la pista en unidades de igual tamaño llamadas bloques de disco

o páginas.

El mecanismo hardware que se encarga de escribir o leer los bloques es la

cabeza de lectura/escritura del disco que se maneja gracias a un brazo

mecánico. Esta estructura junto con el disco, y el motor del disco, forman la

unidad de disco.

Además, el controlador de disco (situado generalmente en la unidad de

disco) controla y hace de interfaz entre ésta y el ordenador. El controlador

acepta instrucciones de E/S de alto nivel y realiza las acciones oportunas

para colocar el brazo y dar la orden de lectura o escritura. Una vez conocida

la dirección del bloque a la que se desea acceder, el controlador de disco

necesita un tiempo (entre 8 y 14 mseg) para colocar la cabeza sobre la pista

correcta. Este tiempo se conoce como tiempo de búsqueda. Una vez situada

la cabeza sobre la pista, es necesario que el disco gire hasta situar el inicio

del bloque bajo la cabeza generándose otro retardo llamado retado

rotacional o latencia. Por último deberá transcurrir un tiempo adicional para

la trasferencia de los datos, conocido como tiempo de transferencia de

bloque. Para mejorar la eficiencia en la transferencia de bloques, se suelen

transferir varios bloques consecutivos de la misma pista, e incluso del mismo

cilindro.

Figura 1. Partes principales del disco magnético

Resumiendo, el tiempo necesario para localizar y transferir un bloque es la

suma de:

tiempo de búsqueda + latencia + tiempo de transferencia de bloque

Este tiempo suele variar entre 12 y 60 mseg dependiendo del fabricante. Es

por tanto crucial la elección de un buen disco duro como uno de los factores

de éxito en la implantación de una base de datos.

TECNOLOGÍA RAID

Pese a que la tecnología en el desarrollo de dispositivos de almacenamiento

secundario (especialmente discos duros) ha evolucionado espectacularmente,

las prestaciones que se pueden alcanzar con una única unidad de disco

resultan insuficientes para el almacenamiento eficiente de grandes cantidades

de datos. Es por este motivo por el que se ha desarrollado la tecnología

conocida con el nombre de RAID (Redundant Array of Inexpensive Disk).

La idea original de RAID fue la de igualar los rendimientos de los discos a los

de los procesadores y memorias principales. Mientras la capacidad de la RAM

se cuadruplica cada dos o tres años, los tiempos de acceso a disco apenas

mejoran un 10% al año, y los tiempos de transferencia menos de un 20%.

Como solución RAID plantea crear un array de pequeños discos

independientes que actúan como un único disco lógico de alto rendimiento.

Además, se utiliza una estrategia de almacenamiento conocida como data

striping (franjeo de datos) que se basa en el paralelismo. Según esta técnica

un mismo fichero se distribuye entre varios discos para que su lectura

completa se realice simultáneamente desde todos los discos. El acceso en

paralelo a todos los discos es mucho más rápido que un acceso secuencial a

uno de ellos. De ahí que las lecturas y escrituras de los datos resulten mucho

más rápidas.

RAID tiene como objetivo principal mejorar el rendimiento de los discos

magnéticos, aunque sin olvidar un aspecto fundamental que es la fiabilidad.

Para un array de n discos, la posibilidad de fallo es n veces mayor que para

un único disco. El mantenimiento de una única copia de los datos en este tipo

de estructura conllevaría una importantísima pérdida de fiabilidad. La solución

es introducir redundancia de datos.

Una técnica que permite la redundancia es lo que se conoce como mirroring

o shadowing, también conocido en español como espejo. Según esta

técnica, los datos se escriben físicamente en dos discos diferentes de forma

redundante. Al leer los datos, éstos se recuperan del disco que tenga menos

carga de peticiones, o que sea más rápido. Si un disco falla, se usa el otro

hasta que se repare el primero.

ORGANIZACIÓN Y NIVELES RAID

Hay diferentes organizaciones RAID atendiendo a la forma de hacer el franjeo

de los datos y a la forma de acceder a los datos redundantes. Estas

organizaciones se jerarquizan en 7 niveles: desde RAID nivel 0 hasta RAID

nivel 6.

RAID 0 no tiene redundancia de datos. De todas las organizaciones

RAID, ésta tiene el mejor rendimiento en escritura ya que no tiene que

duplicar modificaciones. Sin embargo, el rendimiento en lectura es

menor.

RAID 1 ya plantea la redundancia de datos mediante discos espejo. El

rendimiento en lectura es mayor que en RAID 0 debido a que la

petición de lectura se aplica al disco que sea más rápido en cada

momento.

RAID 2 optimiza el almacenamiento de información redundante al

almacenar los códigos de detección de error (bits de paridad) una

única vez (no una para cada copia como ocurre en RAID 1) comunes.

De esta manera, un ejemplo concreto de 4 discos, sólo necesitaría 3

discos espejo (en lugar de los 4 que necesita RAID 1).

RAID 3 a RAID 6 optimizan RAID 2 con diferentes estrategias para

detección de errores que minimizan el número de discos necesarios

aumentando el rendimiento del sistema sin perder fiabilidad.



Como conclusión para este apartado podríamos concluir que el disco

magnético es una de las fuentes de almacenamiento secundario más

extendidas para el almacenamiento de bases de datos. Sin embargo, la

organización física de las bases de datos

129

evolución tecnológica del disco magnético no ha sido tan espectacular como

lo ha sido la evolución tecnológica de la memoria RAM o de los procesadores.

Por este motivo ha sido necesario la introducción de técnicas de

almacenamiento redundante que han conseguido mejorar los rendimientos de

estos dispositivos. En concreto, la organización RAID es una de las más

extendidas en los servidores que tienen como principal misión el

almacenamiento de grandes bases de datos.

Una vez sentados los fundamentos del “hardware” que se usa para la

implementación de las bases de datos, introduciremos algunos conceptos

sobre cómo se almacena físicamente un fichero.

VII3. ficheros

El fichero es la organización básica de almacenamiento en disco, y por tanto

es la organización empleada para la implementación de una base de datos.

Para introducir el concepto de fichero es necesario introducir previamente el

concepto de registro.

VII3.1. registro

Un registro es una colección de valores o elementos de datos relacionados

donde cada valor está formado por uno o más bytes y corresponde a un

determinado campo del registro.

Por regla general, cada registro representa a una entidad, y cada valor de

campo en ese registro representa a un atributo de esa entidad. La lista de

nombres asociados a cada campo y los tipos de datos que se almacenan en

ellos constituyen lo que se llama el formato del registro.

Actualmente las bases de datos también incluyen grandes objetos que no

pueden ser estructurados en campos como imágenes, secuencias de video,

secuencias de audio, o incluso texto libre. Estos objetos se conocen como

BLOB (Binary Large OBjects) y por lo general se almacenan aparte de su

registro, en un área de bloques de disco, y se incluye un puntero desde el

registro al BLOB.

VII3.2. fichero

Un fichero se define como una secuencia de registros.

Si todos los registros de un fichero tienen la misma longitud se les conoce

como registros de longitud fija. Sin embargo, si cada registro tiene una

longitud diferente hablaremos de registros de longitud variable. Esto nos

proporciona diferentes organizaciones para el almacenamiento de los

registros:

a) almacenamiento de registros de longitud fija: el registro tiene una

longitud conocida y cada campo ocupa una posición conocida

dentro del registro. Para acceder a alguno de ellos únicamente es

BD1 2006-2007

130

necesario conocer su posición de inicio y de fin del campo en el

registro.

1 10 15 20 33

Campo Posición inicio Posición fin

NOMBRE 1 9

CÓDIGO 10 14

DEPARTAMENTO 15 19

DIRECCIÓN 20 33

b) almacenamiento de registros de longitud variable formados por

campos de longitud fija y campos de longitud variable: se utilizan

caracteres especiales para delimitar el final de un campo de longitud

variable, y se usan las longitudes conocidas de los campos de

longitud fija para conocer sus límites.

1 n n+6 n+10

Campo Posición inicio Posición fin

NOMBRE 1 n-1

Carácter fin 􀁊 N n

CÓDIGO n+1 n+5

DEPARTAMENTO n+6 n+10

DIRECCIÓN n+11 m-1

Carácter fin 􀁊 M m

c) almacenamiento de registros de longitud variable formados por

campos de longitud variable y algunos de ellos opcionales: La

existencia de campos optativos obliga a almacenar junto con cada

campo el nombre del campo. Así se introducen tres tipos de

caracteres especiales separadores: separador del nombre del

campo, indicador de fin de campo e indicador de fin de registro.

Carácter separador de nombre de campo

Carácter indicador fin de campo

Carácter indicador fin de registro

Los ficheros constituyen la unidad básica en el almacenamiento físico de las

bases de datos. A nivel práctico, podemos considerar que cada tabla de un

esquema lógico definida sobre el modelo relacional se convertirá en un

fichero (o conjunto de ficheros) que será manejado por el sistema operativo

desde el SGBD.

A L B E R T O A L B 0 1 A DMONMA Y OR, 2 4 - 3 D

A L B E R T O A L B 0 1 A DMONMA Y OR, 2 4 - 3 D

n o m b r e B A L E RT O d i r e c c i o n M A Y O R , 2 4 - 3 D

organización física de las bases de datos

131

VII3.3. operaciones con ficheros

Las operaciones que se realizan con los ficheros se pueden clasificar en

operaciones de recuperación y operaciones de actualización, encargadas

de leer y de escribir datos respectivamente. En cualquiera de los dos casos

es necesario realizar una selección previa del registro con el que se quiere

trabajar mediante una condición de selección o filtro que especifica los

criterios que debe satisfacer el registro o registros con los que se va a operar.

Quien se encarga de acceder físicamente a los ficheros, y por tanto, quien

ejecuta las operaciones de recuperación y actualización de ficheros es el

sistema operativo. Sin embargo, la condición de búsqueda debe establecerse

desde fuera del sistema operativo. Cuando se trabaja con una base de datos,

el encargado de establecer esa condición de selección es el propio SGBD.

Una condición de selección simple puede ser una comparación de igualdad

de un valor para un campo, por ejemplo, dni=’22233334’.

Sin embargo, en bases de datos es frecuente realizar selecciones con

múltiples condiciones (ya conocemos la complejidad selectiva que puede

llegar a tener una sentencia SELECT de SQL). En este caso, el SGBD debe

descomponer la selección en sus múltiples condiciones para acceder al

registro adecuado. Por ejemplo, si un usuario solicita “empresas de Murcia

que tienen más de tres empleados”, su pregunta la traducirá a una consulta

SQL como:

SELECT * FROM empresas WHERE ciudad=’murcia’ AND empleados>3

Esta consulta se introduce en el SGBD. Sin embargo, el sistema operativo no

podrá interpretar SQL. Por este motivo, el SGBD tendrá que traducir esta a

consulta una operación de recuperación que deberá obtener el registro (o

registros) que cumpla las dos siguientes condiciones de selección:

a) campo ciudad del fichero empresas = ‘murcia’

b) campo empleados del fichero empresas > 3

Cuando hay varios registros que satisfacen la condición de selección,

inicialmente el sistema operativo únicamente le devuelve al SGBD el primer

registro que cumple con esa selección, aunque le proporciona un puntero al

siguiente para que el SGBD pueda ir recorriendo la cadena de registros

seleccionada.

Para realizar esta búsqueda, la mayoría de los SGBD disponen de las

siguientes instrucciones implementadas a través del sistema operativo:

Abrir: prepara un fichero para su lectura o escritura. Si se puede, carga en

memoria principal los bloques del disco que contienen al fichero, si no puede

(por falta de memoria) cargará una parte del fichero (al menos la cabecera).

Además sitúa el puntero al principio del fichero para iniciar la operación.

Volver al principio: pone el puntero de un fichero abierto en el principio.

Buscar: localiza el primer registro que satisface una condición de búsqueda,

y transfiere ese bloque de disco a memoria principal (si no está ya).

Leer: copia el contenido del registro en una variable del programa.

Buscar siguiente: busca el siguiente registro que satisface la condición de

búsqueda especificada en la última operación buscar efectuada. Carga el

bloque en memoria (si no lo tiene ya).

Eliminar: elimina el registro actual del fichero y actualiza el fichero en el

disco.

Modificar: modifica valores de algunos campos del registro y actualiza el

fichero en el disco.

BD1 2006-2007

132

Insertar: inserta un nuevo registro en el fichero localizando el bloque donde

se debe insertar, trasfiriéndolo a memoria principal, insertándolo, y volviendo

a escribir el bloque en el disco.

Cerrar: finaliza el acceso al fichero liberando la memoria principal ocupada

por él.

VII3.4. organizaciones de ficheros usadas para

bases de datos

En el almacenamiento de los datos, la organización interna del fichero tiene

también su importancia. La organización de los ficheros debe facilitar la

localización de los registros, especialmente en las búsquedas que se realizan

sobre determinados campos. Por ejemplo, si deseo buscar un cliente por su

dni, el fichero que contiene a los clientes de la base de datos debería estar

ordenado físicamente por este valor o definir un índice sobre este campo. Sin

embargo, si sobre el mismo fichero deseo buscar los clientes que residen en

una misma ciudad, se necesitaría agrupar físicamente los datos por el campo

ciudad para obtener una respuesta eficiente. A priori, esta organización no es

compatible con la anterior, sin embargo, vamos a estudiar a continuación

diversos tipos de organización que pueden ser útiles para hacer compatibles

dichas organizaciones.

Ficheros de montículo (heap)

Los ficheros de montículo o heap constituyen el tipo más simple de

organización. Los registros se colocan en el mismo orden en el que se

insertan. Esta organización simplifica algunas de las operaciones aunque

otras se hacen más complejas.

VII3.4.1.1. Inserción

Cada registro nuevo se inserta al final del fichero de la siguiente forma:

a) se consulta en la cabecera del fichero la dirección física del último

bloque de disco para ese fichero,

b) se copia el bloque a memoria principal,

c) se añade el nuevo registro,

d) se reescribe el bloque en el disco,

e) se actualiza la cabecera del fichero con la dirección del último

bloque de disco (si hace falta).

La operación se realiza de forma sencilla y eficiente.

organización física de las bases de datos

133

VII3.4.1.2. Búsqueda

Por el contrario, en este tipo de organización la búsqueda de un determinado

registro de acuerdo a una condición de búsqueda se realiza comprobando

registro a registro, lo que supone físicamente una lectura bloque a bloque del

disco. En un fichero de n bloques, se requiere realizar n/2 comprobaciones

por término medio.

VII3.4.1.3. Borrado

Para eliminar un registro hay que:

a) buscar el bloque de disco donde se encuentra el registro,

b) copiar el bloque a memoria principal,

c) eliminar el registro,

d) rescribir el bloque en disco.

Solamente el primero de los pasos (la búsqueda) ya tiene complejidad

suficiente para hacer la operación poco eficiente. Además, será necesario

pasar un proceso periódico de reorganización del fichero ya que los huecos

que quedan libres por las eliminaciones nunca se rellenan por lo que se

desperdicia espacio.

VII3.4.1.4. Actualización

La actualización de un registro se realiza según los siguientes pasos:

a) buscar el bloque de disco donde se encuentra el registro,

b) copiar el bloque a memoria principal,

c) modificar el registro,

d) rescribir el bloque en disco.

El proceso de nuevo se complica en el primer paso, pero también tiene una

complicación añadida cuando se usan registros de longitud variable. Si un

registro se modifica ampliando su longitud puede que ya no tenga espacio

suficiente en su bloque para poder albergarlo. En ese caso, la operación de

actualización se convertiría en dos operaciones: borrado del registro antiguo +

inserción de uno nuevo al final del fichero.

VII3.4.1.5. Lectura

La lectura del fichero según un determinado criterio (por ejemplo, por orden

alfabético del nombre, o por orden de dni) requiere hacer una copia del

fichero según este orden, o bien, si el tamaño es excesivo utilizar ficheros de

índices externos.

BD1 2006-2007

134

Ficheros ordenados (o secuenciales)

Los ficheros ordenados se caracterizan por tener un orden físico según los

valores de uno de sus campos, llamado campo de ordenación. Si el campo

de ordenación tiene además propiedades de identificador (es decir, siempre

tiene valor y no se repite) se conoce como clave de ordenación del fichero.

Figura 3. Fichero secuencial

Los ficheros ordenados plantean ciertas ventajas sobre los ficheros de

montículo:

a) la lectura de registros en el orden físico almacenado es

extraordinariamente eficiente,

b) los accesos a registros en orden consecutivo no requiere cambiar

de bloque en la mayoría de los casos, por lo que no se efectúan

muchos accesos a disco,

c) las condiciones de búsqueda que afectan a valores de un campo

clave de ordenación son muy eficientes cuando se emplean

organización física de las bases de datos

135

estrategias de búsquedas binarias. Una búsqueda binaria accede

normalmente a log2(n) bloques, encuentre o no el registro que

busca entre n bloques.

Sin embargo, sigue planteando algunas desventajas. Analicemos una a una

las diferentes operaciones.

VII3.4.1.6. Inserción

La inserción es una operación costosa ya que se debe conservar el orden

físico de los registros. Se debe:

a) encontrar la posición para el nuevo registro en el fichero según el

campo de ordenación,

b) abrir espacio en el bloque correspondiente, desplazando el resto de

los registros.

Esta última fase de la operación es especialmente dura, ya que significa que

se tiene que leer y volver a escribir una media de n/2 bloques para un fichero

de n bloques.

VII3.4.1.7. Búsqueda

La búsqueda por un campo de ordenación ya sabemos que es

extremadamente eficiente, sin embargo la búsqueda por cualquier otro tipo de

campo se convierte en una tarea de búsqueda lineal como lo era en el fichero

de montículo.

VII3.4.1.8. Borrado

El borrado se realiza exactamente igual que en el fichero de montículo. Sigue

siendo una operación costosa. La única diferencia estriba en que la búsqueda

del registro a borrar será más eficiente si se busca por el campo de

ordenación.

VII3.4.1.9. Actualización

La actualización se realiza de la misma manera que en los ficheros de

montículo. Sólo un par de diferencias:

a) el proceso de búsqueda es más eficiente,

b) si lo que se ha modificado es el valor del campo de ordenación,

entonces se convierte en una operación de borrado + inserción del

registro en su nueva ubicación, con la complejidad que ello conlleva.

BD1 2006-2007

136

VII3.4.1.10. Lectura

La lectura secuencial del fichero ordenado es muy eficiente siempre que se

siga el campo de ordenación. En cualquier otro caso es igual que la lectura de

un fichero de montículo.

Ficheros de direccionamiento calculado (hashing)

Los ficheros de direccionamiento calculado, también conocidos como

dispersos o hashing, proporcionan un acceso muy rápido a los registros bajo

ciertas condiciones de búsqueda. La condición de búsqueda se realiza sobre

un único campo del registro conocido como campo de direccionamiento

calculado. Este campo también se llama clave de direccionamiento

calculado. El funcionamiento de esta organización se basa en establecer una

función h llamada función de direccionamiento calculado, que una vez

aplicada sobre el valor del campo de direccionamiento calculado de un

registro produciría la dirección del bloque de disco en el que se almacena el

registro. Una vez obtenido el bloque se copia a memoria principal y se realiza

la búsqueda del registro dentro del bloque.

Una función de direccionamiento calculado muy común para campos de

direccionamiento calculado con valor numérico es:

h(K) = K mod M

donde K es el valor del campo, y M es el número total de bloques de disco

donde se almacenan los registros.

Así por ejemplo, si se van a usar 20 bloques, y el campo de direccionamiento

calculado DNI tiene valor = 21987239, la función h devuelve

h(21987239)= 21987239 mod 20 = 19

Esto indicaría que el registro correspondiente al valor de dni 21987239 se

almacena en el bloque número 19. A partir de ahí ya sólo resta conocer la

dirección física de ese bloque y copiarlo a memoria principal.

Figura 4. Localización física de los bloques calculados en disco

Los ficheros basados en el direccionamiento calculado plantean muchas

ventajas respecto a los de montículo o a los ordenados.

a) Las búsquedas se realizan de manera rápida en cualquiera de los

campos de búsqueda.

organización física de las bases de datos

137

b) Los datos se insertan en el disco de forma dispersa, lo cual permite

fácilmente las operaciones de borrado, inserción y actualización, sin

necesidad de reorganizar el fichero.

VII3.5. estructuras de índices para ficheros

En el apartado anterior hemos podido comprobar que hay diferentes

organizaciones primarias para almacenar la información: organización de

montículo (no ordenada), organización ordenada, y organización de

direccionamiento calculado (dispersa o hashing).

Sin embargo, estas estructuras pueden no ser suficientes para las

necesidades de una base de datos. En muchos casos es necesario hacer uso

de unas estructuras de acceso auxiliares llamadas índices que se emplean

para aumentar la velocidad de recuperación de registros bajo ciertas

condiciones de búsqueda.

Los índices proporcionan caminos alternativos para acceder a los registros sin

que se vea afectada la posición física que los registros ocupan dentro del

disco.

Los campos de un registro que se utilizan para construir un índice se

denominan campos de indexación.

Cualquier campo del registro puede ser un campo de indexación, y un mismo

fichero puede incluir múltiples índices (es decir más de un campo de

indexación por registro).

El funcionamiento del índice es el siguiente: cuando se produce una condición

de búsqueda que afecta a un campo de indexación, en lugar de acceder

directamente al fichero de datos para iniciar la búsqueda (según la

organización propia del fichero de datos: montículo, ordenada o

direccionamiento calculado), se accede previamente a un fichero (llamado

índice o fichero de índice) donde se encuentran los valores del campo de

indexación correspondiente ordenados según la organización propia del

fichero de índice, junto con un puntero que señala físicamente al bloque de

disco que alberga a ese registro en el fichero de datos. El acceso al registro

ya es una tarea trivial según hemos visto.

El uso de índices permite:

a) realizar búsquedas eficientes en ficheros de datos organizados en

montículo (sin índices recordemos que se trataba de una lenta

búsqueda bloque a bloque)

b) acceder de forma eficiente mediante condiciones de búsqueda que

afectan a cualquier campo en un fichero ordenado (recordemos que

esta organización sólo se accedía de forma eficiente cuando la

búsqueda se realizaba sobre el campo de ordenación, y éste era

único para un determinado fichero).

c) acceder de forma eficiente mediante condiciones de búsqueda que

afectan a cualquier campo en un fichero con direccionamiento

calculado (éste accede de forma eficiente cuando la búsqueda se

refiere al campo de direccionamiento calculado, pero las búsquedas

por otros campos se tienen que realizar secuencialmente).

La implementación de los ficheros de índice se realiza mediante organización

ordenada, o mediante el empleo de estructuras de datos en árbol (árboles

binarios) que optimizan las búsquedas.

BD1 2006-2007

138

Figura 5. Funcionamiento del índice sobre un fichero con organización ordenada

VII4. implementación de bases de

datos relacionales

Las bases de datos relacionales, como cualquier otra base de datos, necesita

una estructura física de almacenamiento basada en el uso de ficheros.

Aunque los ficheros basados en direccionamiento calculado tienen un acceso

muy potente, su implementación es compleja y no siempre es rentable su

coste.

Para la implementación de tablas que tienen mucha volatibilidad, es decir, que

crecen y decrecen rápidamente, puede ser especialmente aconsejable el uso

de ficheros de direccionamiento calculado. Sin embargo, para las tablas que

tienen poca movilidad puede ser suficiente con ficheros de montículo o

ficheros ordenados.

El apoyo de ficheros de índice que permiten localizar los registros

rápidamente siguiendo cualquier condición de búsqueda, se hace

organización física de las bases de datos

139

especialmente necesario cuando se implementan las bases de datos

relacionales. Pensemos que la instrucción SELECT de SQL permite realizar

búsquedas que afectan a cualquier columna de la tabla, por lo que se traduce

físicamente en condiciones de búsqueda que afectan a cualquier campo del

registro.

En general, el uso de uno u otro tipo de organización de ficheros depende de

que el SGBD permita su uso (no todos los SGBD implementan ficheros de

direccionamiento calculado), y del criterio que tome el administrador de la

base de datos acerca de la implementación concreta de cada tabla. El uso o

no de ficheros de índice que mejoren la velocidad de búsqueda de registros

queda también a juicio del propio administrador.

Para facilitar la tarea del administrador, el SGBD suele mostrar estadísticas

de uso y tiempos de acceso a cada uno de los ficheros que implementan la

base de datos. Con estos datos, el administrador se encargará de hacer los

ajustes correspondientes (operación conocida como tunning) tomando las

oportunas decisiones respecto a la organización de los ficheros.

No hay comentarios:

Publicar un comentario