Sie sind auf Seite 1von 22

Bases de Datos Indexacin y Hashing o

Indexacin o
Jorge Prez Rojas e Universidad de Talca, II Semestre 2006

Bases de Datos Indexacin y Hashing o

Acceso a Datos
Muchas consultas hacen referencia slo a una pequea parte de o n los datos. Por ejemplo: Encontrar todos los empleados del departamento de Marketing hace referencia slo a una pequea fraccin de los o n o datos en la tabla empleado. Es muy ineciente que el sistema deba recorrer todos los registros e ir comprobando el cdigo del departamento de cada empleado o antes de dar la respuesta. Lo ideal ser que el sistema pudiera localizar directamente estos a registros. Problema grave adicional: En el contexto de BDs los datos se encuentran f sicamente en memoria secundaria acceso muy costoso.

Bases de Datos Indexacin y Hashing o

Acceso a Datos (cont.)


Para aumentar la eciencia de acceso se disean estructuras n adicionales asociadas a los archivos que mantienen la informacin o de la BD. Existen distintas formas generales (slo veremos construccin de o o ndices). Cada una de las tcnicas tiene ventajas y desventajas e comparativas y deben evaluarse en funcin de: o tiempo de acceso a datos. tiempo de insercin de datos. o tiempo de eliminacin de datos. o espacio extra necesario.

Bases de Datos Indexacin y Hashing o

Indices
La idea de un ndice en una BD es la misma que en el caso de un ndice de un libro de texto. En un libro un ndice alfabtico permite e ir directamente a la pgina asociada con cada entrada del a ndice. Una situacin similar ocurre en una biblioteca en donde se o mantienen chas indexadas por Autor, Tema, T tulo, que entregan la direccin (estante y nmero) de un libro para as encontrarlo o u fcilmente. a

Bases de Datos Indexacin y Hashing o

Indices (cont.)
Un ndice se dene para un atributo de una relacin. Se guarda o para cada valor de este atributo las direcciones de todos los bloques que contienen tuplas con ese valor para dicho atributo. Los valores en un ndice se mantienen con cierto orden de modo que se puede buscar rpidamente. a Existen distintas tcnicas de indexacin, con distintas e o caracter sticas. Indexacin por archivos secuenciales. o Indexacin por Arboles B. o

Bases de Datos Indexacin y Hashing o

Indexacin por Acceso Secuencial o


Es uno de los esquemas de indexacin ms antiguos. o a Supone que los archivos (tuplas) se encuentran ordenados secuencialmente y por lo tanto tienen una llave de bsqueda u primaria. Por ejemplo, si los datos de los empleados se encuentran f sicamente ordenados por nombre en el disco, el nombre del empleado se convierte en una llave de bsqueda. u Importante: no confundir con llave primaria de la relacin! o No olvidar que la bsqueda debe hacerse sobre memoria u secundaria lenta. Dos tipos de ndices: ndice denso, ndice escaso.

Bases de Datos Indexacin y Hashing o

Indice Denso
Indice Campos Carcamo Chavez Cortez Figueroa Galvez Gomez . . . Venegas Campos Carcamo Chavez Cortez Figueroa Galvez Gomez Gonzalez Parra Pena Perez . . . Vargas Venegas Tabla 11003441 13447180 12008991 11003442 09998711 13556781 13556788 08881672 10934412 12008993 10934411 . . . 12400113 12400112 campos@empresa.cl carcamo@empresa.cl chabez@empresa.cl cortez@empresa.cl gueros@empresa.cl galvez@empresa.cl gomez@empresa.cl gonzalez@empresa.cl parra@empresa.cl pena@empresa.cl perez@empresa.cl . . . vargas@empresa.cl venegas@empresa.cl 800000 500000 600000 800000 600000 600000 500000 2000000 300000 600000 300000 . . . 600000 600000

. . .

. . .

Un registro de ndice para cada valor de la llave de bsqueda. El u registro contiene el valor de la llave y un puntero a la tupla.

Bases de Datos Indexacin y Hashing o

Indice Denso (cont.)


Si queremos encontrar los datos para el empleado Cortez: Buscamos Cortez en el ndice. Seguimos el puntero para obtener los datos.

Bases de Datos Indexacin y Hashing o

Indice Escaso
Indice Escaso Campos Figueroa Parra . . . Vargas Campos Carcamo Chavez Cortez Figueroa Galvez Gomez Gonzalez Parra Pena Perez . . . Vargas Venegas Tabla 11003441 13447180 12008991 11003442 09998711 13556781 13556788 08881672 10934412 12008993 10934411 . . . 12400113 12400112 campos@empresa.cl carcamo@empresa.cl chabez@empresa.cl cortez@empresa.cl gueros@empresa.cl galvez@empresa.cl gomez@empresa.cl gonzalez@empresa.cl parra@empresa.cl pena@empresa.cl perez@empresa.cl . . . vargas@empresa.cl venegas@empresa.cl 800000 500000 600000 800000 600000 600000 500000 2000000 300000 600000 300000 . . . 600000 600000

. . .

. . .

Registros de ndice slo para algunos valores de la llave. o

Bases de Datos Indexacin y Hashing o

10

Indice Escaso (cont.)


Si queremos encontrar los datos para el empleado Cortez: Buscamos la llave en el ndice que es menor o igual a Cortez. Resulta ser Campos en el ejemplo Seguimos el puntero a Campos y buscamos secuencialmente a Cortez en la tabla.

Bases de Datos Indexacin y Hashing o

11

Indexacin por Acceso Secuencial o


Qu tan rpida resulta la bsqueda? e a u Si el ndice es sucientemente pequeo podr n amos hacer toda la bsqueda en memoria principal, lo que resulta muy rpido. u a Generalmente, el ndice no cabe completamente en memoria principal debemos hacer varias lecturas a memoria secundaria (disco) para encontrar el puntero buscado. Indices grandes resultan costosos en cuanto a accesos a memoria secundaria. Podemos solucionarlo tratando el ndice como un archivo secuencial cualquiera, o sea, podemos construir un ndice sobre el ndice.

Bases de Datos Indexacin y Hashing o

12

Indice de dos Niveles


Indice Externo Indice Interno Bloques de Datos

. . .

. . .

. . . . . .

Bases de Datos Indexacin y Hashing o

13

Indice de dos Niveles (cont.)


El ndice externo se mantiene en memoria principal La bsqueda puede hacerse con menos acceso a memoria u secundaria. Se puede repetir el esquema en varios niveles.

Bases de Datos Indexacin y Hashing o

14

Indexacin por Acceso Secuencial o


Sin importar cul sea la forma de indexacin siempre debemos a o actualizar todos los ndices cada vez que se inserta o elimina una tupla. Esto por la necesidad de que los archivos estn ordenados e secuencialmente. Muy ineciente para Bases de Datos en las que se realizan muchas inserciones o eliminaciones. Mientras ms datos en la BD ms cuesta acceder y manipular los a a datos.

Bases de Datos Indexacin y Hashing o

15

Indexacin por Acceso Secuencial o


Tambin se pueden indexar atributos no llaves, o sea, atributos e por los que el archivo no se encuentra secuencialmente ordenados. Se usan ndices secundarios. Un ndice secundario apunta a bloques de punteros en memoria secundaria. Se accede a un bloque de punteros y luego se realiza una bsqueda siguiendo los punteros que se encuentran en el bloque. u

Bases de Datos Indexacin y Hashing o

16

Indice Secundario

Indice Secundario

Tabla Campos Carcamo Chavez Cortez Figueroa Galvez Gomez Gonzalez Parra Pena . . . Venegas 11003441 13447180 12008991 11003442 09998711 13556781 13556788 08881672 10934412 12008993 . . . 12400112 campos@empresa.cl carcamo@empresa.cl chabez@empresa.cl cortez@empresa.cl gueros@empresa.cl galvez@empresa.cl gomez@empresa.cl gonzalez@empresa.cl parra@empresa.cl pena@empresa.cl . . . venegas@empresa.cl 800000 500000 600000 800000 600000 600000 500000 2000000 300000 600000 . . . 600000

08881672 11003441 12008993 13447180

Registros de Punteros

Indice secundario para el atributo rut.

Bases de Datos Indexacin y Hashing o

17

Indice Secundario (cont.)


Para encontrar la tupla con rut 12008991 Entramos al registro apuntado por 11003441. Dentro de este registro se busca uno a uno en los punteros. Se accede a las tuplas con rut 11003441 y 11003442. Finalmente se accede a la tupla con rut 12008991.

Bases de Datos Indexacin y Hashing o

18

Indexacin por ArbolesB o


Los ArbolesB (B+ Trees y BTrees) son una de las estructuras de datos ms usadas para mantener a ndices de acceso a BD. Son excelentes para hacer bsquedas externas en memoria u secundaria (en disco). Aseguran un tiempo eciente, de orden logar tmico en el peor caso, en cuanto al tiempo de procesamiento y en cuanto a la cantidad de accesos al disco.

Bases de Datos Indexacin y Hashing o

19

ArbolesB
Estructura de Arbol balanceado, todas las hojas del rbol estn a a a la misma profundidad. Cada nodo del rbol se mantiene en una unidad (pgina) de a a memoria secundaria. Cada nodo tiene un mximo y un m a nimo de punteros a tuplas de la base de datos. El rbol completo funciona como a ndice. Las inserciones y eliminaciones de registros en el ndice se pueden realizar de forma muy eciente, no es necesario reconstruir el ndice.

Bases de Datos Indexacin y Hashing o

20

Indice de ArbolB

Cortez

Rios Bloques de Datos

Campos

Crcamo a

Galvez

Parra

Soto

Torres

ArbolB para mantener un ndice al atributo nombre. No es necesario que el archivo de datos (tabla) est f e sicamente ordenado en forma secuencial.

Bases de Datos Indexacin y Hashing o

21

Indices en SQLServer
Almacena los datos en pginas de 8 KB a Un header de 96 bytes vincula estas pginas. a Los datos en las pginas se almacenan en orden (segn la llave de a u bsqueda). u El parmetro ll factor se usa para mantener las pginas a a ordenadas de forma eciente. Al crear el ndice ordena las pginas de manera tal que cada a una deje cierto porcentaje m nimo desocupado. Un Arbol-B mantiene el ndice de las pginas de datos. a

Bases de Datos Indexacin y Hashing o

22

Indices en SQLServer
Para crear un ndice se usa create index, por ejemplo create modif index mi_indice on tabla atributo en donde modif puede ser unique, clustered, nonclustered. unique: virtualmente equivalente a una llave primaria clustered: ordena la tabla por el atributo indicado a lo ms a una por tabla nonclustered: no ordena la tabla, pueden ser muchas por tabla.

Das könnte Ihnen auch gefallen