Conceptos bsicos
Los mecanismos de indexacin son usados para acceder rpidamente a los datos deseados.
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:
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
/egistros con un valor especi$ico para un atributo. /egistros con un valor en un rango determinado.
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.
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
.ose
(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.
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
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
"
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
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
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+
15
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
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
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!
1"
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
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
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.
24
25
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.
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
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>
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.
2"
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
31