Está en la página 1de 6

Universidad de Extremadura

Centro Universitario de Mérida


Departamento de Ingeniería en Sistemas Informáticos y Telemáticos.
Área de Lenguajes y Sistemas Informáticos

Tema 3.
Indexación de Bases de Datos.

Sistemas de Información

Indexación de Bases de Datos.


1. Introducción
2. Índice simple
2.1. Características
2.2. Operaciones
2.3. Índices demasiado grandes para almacenarse en
memoria
3. Árboles
3.1 Árboles Binarios
3.1 Árboles AVL
3.1 Árboles Paginados
3.1 Árboles B
3.1 Árboles B+

1. Introducción

 Uno de los principales problemas que encontramos en


el almacenamiento de los datos es acceder a ellos de
forma eficiente y rápida

 Cuando los datos radican en memoria principal, el


problema es pequeño, pero cuando la cantidad de
datos es enorme y estos están en un dispositivo de
memoria secundaria el problema se acentúa

 por ello aparece la noción de índice .

1
1. Introducción

 El objetivo de la indexación es acceder de forma rápida


a los datos, haciendo uso de índices.
 Un índice es un recurso para acceder de forma rápida a
la información.
 Las búsquedas en un índice se realizan por una clave
que puede ser
 Única  cave primaria
 Duplicada  cave secundaria
 Todos los índices se componen de un conjunto de
pares de elementos de la forma [valor clave, campos
de referencia]

2. Índice simple

Al índice formado por una tabla de pares clave-


posición se le denomina índice simple
¿Cómo se forma?
Extraer del fichero de datos las claves primarias.
Al ser el tamaño de la clave mucho menor que el
tamaño de los registros, tiene muchas posibilidades
de que quepa en memoria principal.
Ordenar el índice en memoria principal para permitir
acceso binario.
El índice debe tener además de la clave un
apuntador a la posición física del registro en el
fichero.

2. Índice simple
 Ejemplo:
Supongamos que tenemos un fichero de equipos de fútbol de una
región y queremos indizarlo para que las búsquedas sean más
rápidas.
El fichero es de longitud variable y la información podría ser:
Direcc. del reg Etiqueta ID Nomb. equipo Entrenador
30 Mer 123 iii María
55 Bad 122 lll Antonio
155 Mer 145 xxx Pepe
209 Nav 234 ...
300 Alm 157
...

2
2. Índice simple
 Ejemplo:
Una alternativa es construir un índice para el fichero de la
siguiente forma :

Archivo de índices (clasificado) Archivo de datos

Etiqueta Campo referencia Datos del equipo:


(Direcc. Reg) Nomb. Equipo,
Entrenador, ...
Alm157 300 30 Iii | María
Bad122 55 55 Lll | Antonio
Mer123 30 155 Xxx | Pepe
Mer145 155 ...
Nav234 209 ...
...

2. Índice simple

Características:
Impone a un fichero un orden sin que haya
que reorganizar todo el fichero
Proporciona varias formas de acceso a un
fichero (en función de la calve de acceso)
Proporciona acceso por clave a ficheros con
registros de longitud variable.
Esta formado por registros de longitud fija
aunque el fichero de datos contenga registros
de longitud variable.

2. Índice simple

Operaciones básicas
Crear
Cargar
Búsqueda
Inserción
Borrado
Modificación
Cierre

3
2.2. Índice simple. Operaciones

Crear
Crear los ficheros vacíos originales de índice y
datos.
Se crean como ficheros vacíos, con registro de
encabezado y nada más.

Cargar
Se define el array indice[]. Cada elemento del array es
un registro del índice. Luego se leen los registros del
fichero índice y se cargan en la tabla o array.

2.2. Índice simple. Operaciones

Búsqueda
Hay que buscar mecanismos que aceleren el
proceso de búsqueda dependiendo del uso del
fichero, aunque por lo general es la operación que
más se repite en una base de datos.
En un índice, se puede realizar una búsqueda
binaria para localizar la entrada que estamos
buscando. Si la búsqueda en el índice no tiene éxito,
se realizan cero accesos al fichero de datos. Si tiene
éxito, se realiza, como mucho, un acceso.

2.2. Índice simple. Operaciones

Inserción. En la mayoría de las ocasiones, una


inserción conlleva una búsqueda previa debido
a que:
se debe comprobar si el registro existe ya.
se debe buscar una posición en el índice para ese
nuevo registro (si no se encuentra el registro, el
puntero de búsqueda se parará en el sitio en donde
deberá situarse el nuevo elemento). Una vez
realizada esa operación de búsqueda, se inserta en
una posición determinada del fichero y se almacena
su posición en éste, con lo que obtenemos así el par
para el índice, y lo insertamos en él desplazando los
pares necesarios.

4
2.2. Índice simple. Operaciones
Borrado. Al igual que la inserción, necesita de
una búsqueda previa.
Si se encuentra se borra del fichero (se libera el
espacio que ocupa) y se elimina del índice,
desplazando los registros del índice.
Puede ocurrir que la operación de borrado no sea
muy frecuente y no interese perder tiempo en
reorganizar el índice. En estos casos, se marca como
borrado y luego, al volcar el índice, no se graban los
registros borrados.
En el caso de que haya muchos borrados no interesa
esta opción pues se desaprovecha mucha memoria
que puede ser útil para incluir otras entradas.

2.2. Índice simple. Operaciones


Modificación. La consideraremos desde dos
puntos de vista:
que afecte a la clave: cambiaríamos de entidad al
objeto y se podría considerar como borrado más
inserción, pero esto es poco frecuente y por lo
general no está permitido por los sistemas. El borrado
más inserción puede ser lento y quizás interese
cambiar directamente los valores y reorganizar el
índice, reduciéndose de este modo los accesos a
disco (si el índice está en memoria).
que no afecte a la clave. Tenemos que considerar
que:
– afecte a la longitud del registro: en la mayoría de los casos
se reposiciona en un sitio libre más amplio, por lo que es
necesario modificar el puntero del índice.
– no afecte a la longitud: se realiza el cambio y el índice no se
ve afectado.

2.2. Índice simple. Operaciones

Cierre. Cuando se termina el trabajo con el


fichero hay que rescribir el array en el fichero
de índices de nuevo, si ha habido cambios
Abrir el fichero de índice como un fichero vacío.
Actualizar el encabezado del fichero (página
cabecera) y rescribir el encabezado.
Escribir el índice al fichero que se acaba de crear.

5
2.3. Índices demasiado grandes
para almacenarse en memoria
Desventajas del acceso a disco
Varios desplazamientos para realizar la búsqueda
binaria, con lo que no presenta ventajas frente a un
archivo clasificado.
Reajuste del índice en memoria secundaria al
insertar o eliminar (millones de veces mas lento que
hacerlo en memoria principal).
Cuando el índice es demasiado grande para
almacenarlo en memoria se debe considerar el
uso de:
Organización por dispersión si es crítica la velocidad
de acceso.
Organización del índice en un árbol B.

2.3. Índices demasiado grandes


para almacenarse en memoria

Ventajas del índice en memoria secundaria


frente al archivo clasificado.
Realizar búsqueda binaria para obtener acceso por
clave a un registro de longitud variable. Al tener
asociado un registro de longitud fija con uno de
longitud variable.
Si los registros índices son más pequeños que los
del archivo, es menos costoso la clasificación y
mantenimiento al tener que mover menos
información.
Indización para acceder a los registros por varias
claves

También podría gustarte