Vous êtes sur la page 1sur 29

Introduccin Es este tema se van a tratar sobre la indexacin y asociacin de ndices con los registros almacenados en la base de datos,

para poder aumentar el rendimiento global en la ejecucin de consultas sobre la misma, as como su rendimiento en inserciones, actualizaciones y borrados de datos.

Conceptos bsicos ndices, hay dos tipos bsicos: ndices Ordenados: Basados en la disposicin valores ndices Asociativos: Distribucin uniforme de funciones de asociacin (hash) entre cajones (buckets). Hay varias maneras de indexar, mejores segn el caso, debiendo ser valoradas atendiendo Tipos de acceso: Bsqueda nica, mltiple, por rango Tiempo de acceso Tiempo de insercin Tiempo de borrado Espacio adicional requerido por el ndice

ndices ordenados: Primarios ndice primario (o ndice con agrupacin): Los ficheros se ordenan secuencialmente a partir de una clave de bsqueda principal. Estos archivos se llaman archivos secuenciales indexados. Muy utilizados en bases de datos que exigen procesamiento secuencial. Los ndices cuyas claves de bsqueda tienen un orden no secuencial se llaman ndices sin agrupacin. Existen dos clases de ndices ordenados:

ndices ordenados: Densos ndice Denso: Se crea un nuevo registro ndice para cada valor de la clave de bsqueda en el archivo. El registro ndice contiene la clave de bsqueda y un puntero al primer registro de la base de datos con ese valor. Las implementaciones con ndices densos pueden almacenar una lista de punteros a todos los registros con el mismo valor para la clave de bsqueda.

ndices ordenados: Densos Su funcionamiento es sencillo: Al realizar una bsqueda en la base de datos se accede al ndice y se busca el elemento que coincida con la clave de bsqueda. Una vez encontrado, se puede acceder de forma directa al registro que contiene esa informacin, y a partir de ese registro, si hay otros con la misma clave de bsqueda, aparecern a Continuacin:
Barcelona
Barcelona Guadalajara

3.500.000 4.300.000

S S No

Barcelona

Guadalajara 500.000

Madrid
Madrid

2.900.000
7.000.000 8.000.000

Si
Si No

Madrid Madrid

ndices ordenados: Dispersos ndice Disperso: Slo se crea el registro ndice para ciertos valores. Al igual que los ndices densos, cada registro ndice contiene un valor de la clave de bsqueda y un puntero al primer registro con ese valor de clave. Los ndices dispersos utilizan menos espacio, al no almacenar todas las claves de bsqueda, y menor mantenimiento para las actualizaciones y los borrados.

ndices ordenados: Dispersos Para localizar un registro se busca la entrada del ndice con el valor ms grande que sea menor o igual al valor que se est buscando. Una vez encontrado, se pasa a recorrer la base de datos hasta encontrar el registro exacto que se Busca.
Barcelona Barcelona Ganda Guadalajara Lerida Madrid Madrid Madrid Zaragoza 3,500,000 4,300,000 7.000,000 500,000 80,000 2,900,000 7,000,000 8,000,000 800,000 Si Si No No No Si Si No Si

Barcelona Guadalajara Madrid

ndices ordenados: Multinivel ndices Multi-nivel: Se utilizan para grandes cantidades de datos. Utilizan bloques de ndice, generando una estructura en rbol con dos niveles de indireccin. Cada bloque de ndices corresponde normalmente con un bloque de disco, de forma que se optimizan al mximo los accesos. El bloque principal, o ndice externo se suele cargar en la memoria principal o en la memoria de intercambio, al ser el ms utilizado. Dependiendo de la cantidad de datos, se puede aumentar el nivel de indireccin.

ndices ordenados: Multinivel El registro ndice del ndice externo contiene la clave de bsqueda y un puntero hacia un bloque de ndice interno El registro ndice de los ndices internos contiene la clave de bsqueda y, si est en el ltimo nivel de indireccin, un puntero a un registro de la base de datos, si no est en el ltimo nivel deindireccin, un puntero a otro bloque ndice interno.
Bloque datos 0 Bloque datos 1

Bloque ndice 0

ndice Externo
Bloque datos 2 Bloque ndice 1

ndices ordenados: Actualizaciones Actualizaciones de los ndices: Borrado: Primero se busca el ndice a borrar. Si el registro borrado era el nico con el valor de su clave de bsqueda, se elimina del ndice Para ndices densos, el borrado de un valor de una clave es similar al borrado de un registro en un archivo Para ndices dispersos, se borra un valor clave sustituyendo su entrada en el ndice por el siguiente valor de la clave.

ndices ordenados: Actualizaciones Insercin: Se realiza una bsqueda del valor de la clave a insertar. Si el ndice es denso y el valor de la clave no aparece, se inserta.

Si el ndice es disperso y almacena una entrada por bloque, no es necesario actualizar a menos que se cree un bloque nuevo. En este caso, el primer valor de la clave que aparezca en el nuevo bloque es el valor a insertar en el ndice. Para ndices multinivel, se actualiza desde el nivel ms bajo hacia arriba, si fuese necesario.

ndices secundarios -Los ndices secundarios sobre claves candidatas son similares a los ndices primarios densos, excepto que los registros apuntados por los valores del ndices no se encuentran almacenados de forma secuencial. -Los ndices secundarios estn estructurados de manera diferente a los primarios. Es necesario mantener referencias a todos los registros de una clave de bsqueda. -Se suelen utilizar bloques de punteros asociados a cada una de las claves de bsqueda.

Archivos de ndices de rbol B+ - Los archivos secuenciales indexados tienen problemas a la hora de realizar bsquedas, dado que a medida que crece el fichero se va degradando el rendimiento. - Las estructuras de ndice de rbol B+ mantienen su eficiencia a pesar de la insercin y borrado de datos. - Los rboles B+ son estructuras arbreas equilibradas, donde los caminos de la raz a cada hoja tiene entre n/2 y n hijos, donde n se fija para cada rbol en particular.

Archivos de ndices de rbol B+ - Cada nodo del rbol contiene n punteros a bloques, junto con n-1 claves de bsqueda.
P1 K1 P2 K2 . Pn-1 Kn-1 Pn

-Los valores de la clave de bsqueda de un nodo estn ordenados, as para i<j tenemos que Ki<Kj. - Los nodos internos del rbol B+ forman un ndice multinivel (disperso) sobre los nodos hoja.

Archivos de ndices de rbol B+

Pamplona

Madrid

Reus

Barcelona

Daimiel

Madrid

Pamplona

Reus

Ronda

Archivos de ndices de rbol B+ - La estructura para los nodos hoja es la siguiente: para i=1,2,,n-1 el puntero Pi apunta o bien a un registro del archivo con valor de la clave de bsqueda Ki o a un cajn de punteros cada uno de los cuales apunta a un registro del archivo con valor de la clave de bsqueda Ki. - Por ejemplo, un nodo hoja con n=3 y clave de besqueda nombre_sucursal
Barcelona Daimiel C-212 C-101 C-110 .. Barcelona Daimiel Daimiel 750 500 600 ..

Archivos de ndices de rbol B+ - Cada hoja puede guardar hasta n-1 valores y pueden contener al menor (n-1)/2 valores. - De la misma forma que en los ndices multinivel, lo ideal para la implementacin de los archivos de ndices de rbol B+ es que se diseen de forma que cada uno de los nodos del rbol se correspondan con bloques de disco. - Cuando se disean los nodos de esta forma, se pueden reducir drsticamente los accesos a disco, y por consiguiente se aumenta el rendimiento del sistema.

Archivos de ndices de rbol B+: Consultas - El procesamiento de consultas con rboles B+ es extremadamente rpido. - Se realiza buscando el menor valor de la clave de bsqueda que sea mayor que k, siendo k la clave de bsqueda que se desea consultar. -Una vez encontrado, se pasa al nodo indicado por el puntero de esa clave, y dentro de ese nodo se vuelve a realizar la bsqueda, repitiendo este proceso hasta llegar a un nodo hoja, el cual indicar el registro, o cajn, deseado. - La bsqueda se realiza en un tiempo de Log(n/2) (K), donde K es el nmero de claves del ndice. - Suponiendo que cada nodo pueda almacenar 100 claves, y se tengan un total de 1.000.000 de valores de claves, Log 50 (1.000.000) = 4 accesos a disco.

Archivos de ndices de rbol B+: Actualizaciones Insercin: Se busca el valor de la clave de bsqueda en el ndice. Si existe, se aade el registro a la BD y si es necesario un puntero al cajn. Si no existe, se aade al ndice, de forma que las claves de bsqueda estn ordenadas. Si el nodo donde se inserta la clave de bsqueda no soporta ms datos, se procede a una divisin del mismo y reestructuracin del rbol si es necesario.

Archivos de ndices de rbol B+ : Actualizaciones Borrados: Se busca el valor de la clave de bsqueda que se desea borrar en el ndice. Si no hay un cajn asociado con el valor de la clave de bsqueda o si el cajn queda vaco como resultado del borrado, se borra el valor de la clave de bsqueda del nodo hoja Si el nodo queda demasiado vaco, se procede a combinar nodos, pudiendo darse una reestructuracin del rbol.

Archivos de ndices de rbol B -Son similares a los rboles B+ excepto que el rbol elimina el almacenamiento redundante de los valores de la clave de bsqueda. - Esta operacin se realiza aadiendo un campo ms los nodos internos del rbol, y eliminando por tanto esos datos de los nodos hojas finales, lo que crea una reestructuracin completa del rbol.

Archivos de ndices de rbol B - En los rboles B es ms complicado el borrado, pero ms simple la insercin.
Daimiel Cajn de Daimiel Barcelona Cdiz Madrid Reus Cajn de Reus

Pamplona

Ronda

Cajn de Barcelona

Cajn de Cdiz

Cajn de Madrid

Cajn de Pamplona

Cajn de Ronda

Asociacin Esttica - Es una tcnica basada en la utilizacin de funciones de asociacin. - Sea K el conjunto de los valores de clave de bsqueda, y B el conjunto de todas las direcciones de los cajones, una funcin de asociacin h es una funcin de K a B tal que h(K)=B

Funciones de Asociacin Distribucin Uniforme: Cada cajn tiene asignado el mismo nmero de valores de la clave de bsqueda dentro del conjunto de todos los valores posibles

Distribucin Aleatoria: En el caso medio, cada cajn tendr el mismo nmero de valores asignados a l, sin tener en cuenta la distribucin actual de los valores de la clave de bsqueda. El valor de la asociacin no ser correlativo a ninguna orden exterior visible en los valores de la clave de bsqueda

Gestin del desbordamiento de cajones - Cajones insuficientes: El nmero de cajones debe ser escogido tal que nc>nr/fr - Atasco: Algunos cajones tienen asignados ms registros que otros, puede ocurrir por: - Varios registros podran tener la misma clave de bsqueda - La funcin de asociacin elegida podra producir una distribucin irregular de las claves de bsqueda - En general, para evitar el desbordamiento de cajones se toma nc=(nr/fr)*(1+d) dnde d suele ser un factor de 0,2 aproximadamente.

ndices asociativos 1. Son similares a los archivos asociativos, pero cada uno de los registros almacenados en los distintos cajones constan de dos campos: Clave de Bsqueda, mediante la cual se calcula la funcin hash Puntero al registro de la base de datos

Asociacin Dinmica
1 3 Barcelona C-217 150,000

2 Daimiel Daimiel 3 Madrid C-215 140,000 C-101 C-110 100,000 120,000

3 Pamplona C-102 Pamplona C-201 80,000 180,000

3 Pamplona C-218 140,000

Definicin de ndices en SQL - La norma SQL no permite el control de los ndices de la base de datos - Aun as, la mayora de sistemas permiten la gestin de ndices: A. Ejemplos create index <nombre-indice> on <nombre-relacion> (<listaatributos>) create index indice-s on sucursal(nombre-sucursal) create unique index indice on tabla(claveunica) drop index <nombre-indice>

Vous aimerez peut-être aussi