Anda di halaman 1dari 31

Terico 11 Indexacin y Hashing

Bases de Datos 2012 -Terico: Indexacin y Hashing

Conceptos bsicos

Los mecanismos de indexacin son usados para acceder rpidamente a los datos deseados.

E.j., autor en un catalogo de libros

Clave de bsqueda: es un atributo o conjuntos de atributos usados para buscar registros en un archivo. n archivo de !ndices esta compuesto de registros "llamados entrada de !ndices# de la $orma:
Clave de bsqueda puntero

Los archivo de !ndices son generalmente mucho mas peque%os que el archivo original. &a' dos clases bsicas de !ndices:

(ndices ordenados: Las claves almacenadas ordenadas.

de

bsquedas

estn

(ndices de &ash: Las claves de bsquedas estn distribuidas uni$ormemente a trav)s de *cajones+ utili,ando una *$uncin Bases de Datos 2012 -Terico: 2 de hash+. Indexacin y Hashing

Evaluacin de Mtricas para ndices


Las t)cnicas de indexacin son evaluadas en base a:

-ipos de accesos soportados e$icientemente. E..,


/egistros con un valor especi$ico para un atributo. /egistros con un valor en un rango determinado.

-iempo de acceso. -iempo de 0nsercin. -iempo de borrado. Espacio adicional requerido.

Bases de Datos 2012 -Terico: Indexacin y Hashing

ndices

rdenados

En un !ndice ordenado" las entradas de !ndices son almacenadas ordenadas por el valor de clave de bsqueda. Ej., catalogo de 1utor en una librer!a. ndices #ri$arios% en un archivo ordenado secuencialmente, es el !ndice cu'a clave de bsqueda especi$ica el orden secuencial del archivo.

La clave de bsqueda de un !ndice primario es usualmente, pero no necesariamente, la clave primaria.

ndices secundarios: es un !ndice cu'a clave de bsqueda especi$ica un orden di$erente del orden secuencial del archivo.
Bases de Datos 2012 -Terico: Indexacin y Hashing

ndices #ri$arios

Bases de Datos 2012 -Terico: Indexacin y Hashing

&rchivos de !ndices densos


ndices 'ensos 2 aparece un registro !ndice para cada valor de la clave de bsqueda en el archivo. En la siguiente $igura se muestra un !ndice denso para la tabla "archivo# cuenta: 7ombre 5aldo Edad 1pellido
89 1,curra Cordoba 3ernande, 4ere, 5uare, 6abala ;8 :9 89 9: :9 A: <A C; 1,curra Cordoba Cordoba 3ernande, 4ere, 4ere, 4ere, 5uare, 6abala .orge Luis Carlos >eatri, .uan .orge Evelio &ernan
Bases de Datos 2012 -Terico: Indexacin y Hashing

9:9: 98; <=< ?9:= @A B B ;C 9:


6

.ose

&rchivos de ndices 'ispersos

(ndices dispersos: contienen registros !ndices slo para algunos valores de la clave de bsqueda.

1plicable cuando los registros del archivo estn ordenados secuencialmente en la clave de bsqueda. >uscar el registro de !ndice con el valor mas grande que sea menor o igual que el valor que se esta buscando. >uscar en el archivo secuencialmente comen,ando en el registro que apunta la entrada de !ndice seleccionada.

4ara locali,ar un registro con valor de clave de bsqueda D:

Eenos espacio ' menos overhead de mantenimiento para inserciones ' borrados. Feneralmente mas lento que un !ndice denso para locali,ar registros. >uen /endimiento: los !ndices dispersos con una entrada por cada bloque en el archivo, esta entrada se corresponde con el menor valor de clave en el bloque.
Bases de Datos 2012 -Terico: Indexacin y Hashing

E(e$plo de &rchivo de ndices 'ispersos


Edad
89 1,curra 3ernande, 5uare, ;8 :9 8: 9: := A: <A C; 1pellido 1,curra Cordoba Cordoba 3ernande, 4ere, 4ere, 4ere, 5uare, 6abala 7ombre .orge Luis Carlos >eatri, .uan .orge Evelio &ernan .ose 5aldo 9: 9BB <=< ?9:= 9BB B B 9BB 9:

Bases de Datos 2012 -Terico: Indexacin y Hashing

ndices Multinivel

5i el !ndice primario no cabe en memoria, el acceso llega a ser mu' costoso. 4ara reducir el nmero de accesos a disco, se trata el !ndice primario con un archivo secuencial ' se constru'e un !ndice disperso sobre el !ndice primario.

(ndice externo Gun !ndice disperso del !ndice primario (ndice interno G el archivo de !ndice primario

5i el !ndice externo es tan grande que no cabe en memoria, otro nivel de !ndices puede ser creado ' as! sucesivamente. Los !ndices en todos los niveles deben ser actuali,ados en la insercin o borrado de un registro en el archivo.
Bases de Datos 2012 -Terico: Indexacin y Hashing

"

ndice Multinivel )Cont*+

Bases de Datos 2012 -Terico: Indexacin y Hashing

10

ndices ,ecundarios

3recuentemente, uno quiere encontrar registros en un archivo"tabla# cu'os valores en un cierto campo"el cual no es la clave de bsqueda del !ndice primario# satis$ace alguna condicin.

Ejemplo C: En una tabla cuentas bancarias almacenadas secuencialmente por nmero de cuenta, nosotros podemos querer encontrar todas las cuentas de una determinada sucursal o todas las cuentas con un determinado saldo. Ejemplo ;: En una tabla personas que tiene clave primaria H70, podemos querer hacer bsquedas por 1pellido

7osotros podemos tener un !ndice secundario con un registro !ndice por cada valor de clave, Los registros !ndices apuntan a cajones que contienen punteros a todos los registros con esa clave. Bases de Datos 2012 -Terico: 11
Indexacin y Hashing

ndice ,ecundario 'enso en el Ca$po ,aldo de la Tabla Titular


Cuenta 89 B <: 9BB 9:= <=< ;8 :9 8: 9: := A: <A C; 1pellido 1,curra Cordoba Cordoba 3ernande, 4ere, 4ere, 4ere, 5uare, 6abala 7ombre .orge Luis Carlos >eatri, .uan .orge Evelio &ernan .ose
Bases de Datos 2012 -Terico: Indexacin y Hashing

5aldo <: 9BB <=< 9:= 9BB B B 9BB <:


12

ndices #ri$arios y ,ecundarios

Los !ndices secundarios tienen que ser denso, en el sentido que tiene que haber un puntero en los cajones a cada registro del archivo. Los !ndices o$recen bene$icios sustanciales al buscar registros. Cuando un archivo se modi$ica, cada !ndice en el archivo debe actuali,arse. 1ctuali,ar los !ndices impone un overhead en la modi$icacin de la base de datos. &acer un scaneo secuencial usando !ndice primario es e$iciente, pero un scaneo secuencial usando un !ndice secundario es ine$iciente.

cada acceso a un registro puede tener que recuperar un nuevo bloque del disco.
Bases de Datos 2012 -Terico: Indexacin y Hashing

13

Archivos de ndice B+-Tree


Los ndices con rboles B+ son una alternativa a los archivo de ndices secuenciales.

Desventajas de los archivo indexados secuencialmente: la performance se degrada cuando el archivo crece. La reorganizacin peridica del archivo completo es necesaria, pero esto no es deseable. Ventaja de archivos de ndice de rbol B+: automticamente se reorganiza con cambios pequeos y locales, ante las inserciones y eliminaciones. La reorganizacin de archivo entero no se exige para mantener la performance de los archivos de ndices con rboles B+-. Desventajas de rboles B+: overhead en la insercin y eliminacin y tambin tenemos un overhead de espacio. Las ventajas de los rboles B+ valen ms que las desventajas, los rboles B+ son muy utilizados.
Bases de Datos 2012 -Terico: Indexacin y Hashing

14

Ejemplo de rbol B+

rbol B+ para el archivo Titular (n = 3)

Bases de Datos 2012 -Terico: Indexacin y Hashing

15

rgani-acin de &rchivos con .rboles /0

La degradacin de los archivos de !ndices se resuelve con la utili,acin de los !ndices con >I. La degradacin de los archivos de datos se resuelve con el uso de rboles >I para la organi,acin de los archivos. Los nodos hojas en un organi,acin de archivos de rbol >I almacenan registros en lugar de punteros. Hado que los registros son ms grandes que los punteros, el nmero mximo de registros que pueden guardarse en un nodo hoja es menor que el nmero de punteros en un nodo no hoja. Los nodos hojas deben estar medios llenos. La insercin ' borrado se manejan de la misma $orma que las inserciones ' borrados de las entradas en un !ndice con Jrbol >I. Bases de Datos 2012 -Terico: 16
Indexacin y Hashing

rgani-acin de &rchivos con .rboles /0 )Cont*+

Ejemplo de una organizacin de archivos rboles B+

Buena utilizacin del espacio dado que los registros usan ms espacio que los punteros. Para mejorar utilizacin del espacio, hay que involucrar mas nodos hermanos en la redistribucin durante divisiones y fusiones
Bases de Datos 2012 -Terico: Indexacin y Hashing

Archivos de ndices con rboles B


5imilares a los rboles B+, pero los rboles B permiten que los claves de bsquedas aparezcan slo una vez, de esta forma se elimina la redundancia en el almacenamiento de valores claves.

Las claves de bsqueda en nodos no hojas no vuelven a aparecer en otra parte del rbol; un campo puntero adicional para cada clave de bsqueda debe ser incluido en los nodos no hojas

a) Nodo hoja

b) En los nodos no hojas los punteros Bi son punteros a un registro de un archivo o a un cajn.
Bases de Datos 2012 -Terico: Indexacin y Hashing

1!

B-Tree Index File Example

rbol B (arriba) y rbol B+ (abajo) con los mismos datos

Bases de Datos 2012 -Terico: Indexacin y Hashing

1"

Archivos de ndices de rbol B (Cont.)

Kentajas de !ndices con rbol >:


4ueden usar menos nodos que un rbol >I. 1lgunas veces se pueden encontrar el valor de clave antes de llegar a un nodo hoja. 5lo unos pocos valores buscados se encuentran rpido. Las inserciones ' borrados son mas complicados que en los rboles >I La 0mplementacin es ms di$!cil que los rboles >I.
20

Hesventajas de !ndices con rboles >:

Los implementadores de base de datos pre$ieren la sencille, de los rboles >I. Bases de Datos 2012 -Terico:
Indexacin y Hashing

Hashing Esttico

n cajn "bucLet en ingles# es una unidad de almacenamiento que contiene uno o ms registros "un cajn es t!picamente un bloque de disco#. En una organi,acin de archivos por hashing se obtiene el cajn de un registro directamente de su valor de clave de bsqueda utili,ando la $uncin de hash. La $uncin de hash h es una $uncin del conjunto de valores de todas las claves de bsqueda &ash $uncin D al conjunto de todos los cajones direccionables >. La $uncin de hash es utili,ada para locali,ar registros para su acceso, insercin ' borrado. /egistros con di$erentes valores de claves de bsqueda pueden ser mapeados al mismo cajn, de esta $orma una ve, accedido el cajn se debe hacer una bsqueda secuencial para encontrar el registro.
Bases de Datos 2012 -Terico: Indexacin y Hashing

21

Ejemplo de Organizacin de Archivos por Hash


La Organizacin de archivos por Hash del archivo Titular, utilizando Apellido como clave

Bases de Datos 2012 -Terico: Indexacin y Hashing

22

Funciones de Hash

La peor $uncin mapea todos los valores de claves de bsqueda al mismo cajn. na $uncin de hash ideal es uni$orme, es decir, cada cajn tiene asignado el mismo nmero de valores de claves de bsqueda del conjunto de todos los posibles valores. na $uncin de hash ideal es random, as! cada cajn tendr la misma cantidad de registros asignados, la $uncin deber parecer aleatoria, no deber seguir ningn orden externo visible "lexicogr$ico, etc#.
Bases de Datos 2012 -Terico: Indexacin y Hashing

23

ndices de Hash

El hashing se puede usar no slo para la organi,acin de archivos, sino tambi)n para la creacin de la estructura de !ndices. n !ndice hash organi,a claves de bsqueda, con sus punteros a registros asociados, dentro de una estructura de archivo de hash. Estrictamente hablando, los !ndices de hash siempre son !ndices secundarios.

5i el propio archivo es organi,ado con hash, un !ndice de hash primario separado usando la misma clave de bsqueda es innecesario.

Bases de Datos 2012 -Terico: Indexacin y Hashing

24

Ejemplo de un ndice de Hash

Bases de Datos 2012 -Terico: Indexacin y Hashing

25

'e1iciencias del Hashing Esttico

En el hashing esttico, la $uncin h mapea los valores de clave de bsqueda a un conjunto $ijo > de cajones.

Las bases de datos crecen con el tiempo. 5i el nmero inicial de cajones es demasiado chico, la per$ormance se degradar porque abra demasiados cajones de desbordamiento. 5i el tama%o del archivo va ser grande en un $uturo, se pueden tener un gran numero de cajones, pero as! se estar desperdiciando espacio al principio. 5i la base de datos se achica, nuevamente se estar gastando espacio. na opcin es reorgani,ar peridicamente el archivo con una nueva $uncin de has, pero esto es mu' caro.

Este problema puede ser evitado utili,ando t)cnicas que permitan que el numero de cajones sean modi$icados dinmicamente.

Bases de Datos 2012 -Terico: Indexacin y Hashing

26

Hashing Dinmico

>ueno para base de datos que crecen ' se achican con el tiempo 4ermiten modi$icar la $uncin de hash dinmicamente &ashing ExtensibleG una $orma de hashing dinmico.

La $uncin de &ash genera valores sobre un rango relativamente amplio 2 t!picamente b?bit, con b M 8;. 5iempre se usa slo un pre$ijo de la $uncin de &ash para indexar dentro de una tabla de cajones direccionables. La longitud del pre$ijo es de i bits, B i 8;. El tama%o de la tabla de cajones direccionables es de ;i. 0nicialmente i M B El valor de i crece ' se achica al mismo tiempo que crece ' se achica la base de datos. Karias entradas en la tabla de cajones pueden apuntar al mismo Cajn. 1s!, el nmero actual de cajones es menor que ;i

La cantidad de cajones tambi)n cambian dinmicamente 'a que se producen $usiones ' divisiones de cajones
Bases de Datos 2012 -Terico: Indexacin y Hashing

'e1inicin de ndices en ,23

Creacin de un ndice CREATE INDEX <nombre-ndice> on <nonbre-tabla> <lista-atributos>) Ej.: CREATE INDEX titular-indice ON titular(apellido)

Usar create unique index para especificar y forzar la condicin de que la clave de bsqueda es una clave candidata. Para borrar un ndice: DROP INDEX <nombre-ndice>

Bases de Datos 2012 -Terico: Indexacin y Hashing

2!

&ccesos Multiple4Claves

Usar ndices mltiples para determinados tipos de queries. Ejemplo: select cuenta from Titular where Apellido = Perez and saldo = 500

Posibles estrategias para procesar este query ndices en atributos simples: 1. Usar el ndice sobre Apellido para buscar cuentas con Apellido = Perez ; testear saldo = $500. 2. Usar el ndices sobre saldo para buscar cuentas con balances de $500; testear Apellido = Perez. 3. Usar el ndice Apellidio para buscar los punteros a todos los registros pertenecientes a Perez. De la misma forma usar el ndice sobre saldo. Tomar la interseccin de ambos conjuntos punteros.

Bases de Datos 2012 -Terico: Indexacin y Hashing

2"

ndices sobre M5ltiples &tributos


El orden de los valores de la clave de bsqueda es el orden lexicgra$o 5upongamos tener un !ndice combinado sobre la clave de bsqueda "1pellido, Saldo#. Con la clusula 6here apellido = *4ere,+ and saldo = 500 El !ndice sobre la clave de bsqueda combinada buscar slo los registros que cumplan ambas condiciones. tili,ando !ndices separados es menos e$iciente 2 4odemos encontrar muchos registros que cumplen slo una de las condiciones.

4uede manejar e$icientemente 6here apellido M *4ere,+ and saldo N :BB 4ero no puede manejar e$icientemente 6here Apellido N *4ere,+ and saldo = :BB 4uede encontrar muchos registros que cumplen la primera pero no la segunda condicin.
Bases de Datos 2012 -Terico: Indexacin y Hashing

30

Bases de Datos Avanzadas


HataOarehousing. PnLine 1nalitical 4rocessing "PL14#. Hata Eining. >ases de Hatos -emporales. >ases de Hatos Espaciales.

Bases de Datos 2012 -Terico: Indexacin y Hashing

31

Anda mungkin juga menyukai