Docente: Albert A. Osiris Sofía 1º Cuatrimestre 2002 1 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Indexación y N Asociación 2 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Archivos Indice • • • • Conceptos Básicos Indices Ordenados Arboles Asociación Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 3 1 Archivos Indice Ordenados Primario Denso Secundario Disperso Multinivel Asociativos Arboles B+ Estática Dinámica B 4 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos N Conceptos Básicos 5 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Conceptos Básicos • Indices: permiten acceder en forma más rápida y eficiente a los registros buscados. • Muchas técnicas de ordenación y asociación. Adecuado de acuerdo a: – – – – – Tipo de acceso (que permite hacer) Tiempo de acceso (busqueda) Tiempo de inserción (lugar + estructura) Tiempo de borrado (registro + estructura) Espacio adicional requerido (archivo) • Clave de búsqueda <> Clave primaria Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 6 2 Conceptos Básicos • Los índices o indicadores se utilizan para acelerar la búsqueda de registros en archivos. • El archivo de índices es mucho más pequeño que el archivo original. • Toda superclave sirve para construir un archivo de índices: 4clave 4puntero • Sobre un archivo de datos se pueden construir varios índices simultáneamente. • Tipos básicos de archivos de índices: 4índices ordenados 4acceso directo (hash) 7 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos N Indices Ordenados 8 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Indices Ordenados • Archivo ordenado secuencialmente por alguna clave (suele ser la clave primaria). • Si es la clave primaria Æ Indice Primario • INDICE DENSO: un registro en el archivo índice para cada clave de búsqueda de la BDD • INDICE DISPERSO: ídem perso sólo para un subconjunto de las claves de búqueda. Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 9 3 Indice Denso 10 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos N Indices Disperso 11 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Indices Multinivel • Si el indice primario no se puede mantener en memoria, el acceso es muy costoso • Para reducir el número de accesos a disco se puede construir un índice disperso sobre el índice inicial – Indice externo: indice disperso del indice primario – Indice interno: archivo de indice primario • Si todavía el índice externo es demasiado grande, se puede crear un índice adicional • En inserción y borrado se deben revisar los índices a todos los niveles Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 12 4 Indice Multinivel 13 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Inserción y Borrado • Los algoritmos se aplican por igual a todos los niveles • Borrado 4Si es un índice denso • se elimina en la tabla de índices y en el archivo 4Si es un índice disperso • Inserción N • Si está en la tabla de índices como en el denso • Si no, solo se borra del archivo 4Si es denso • se añade en la tabla de índices y en el archivo 4Si es disperso • Se añade en el índice si es comienzo de bloque 14 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Indice Secundario • Construcción de índices basados en claves que no son la clave primaria. • Tienen que ser índices densos 4el archivo de datos no está ordenado por la clave secundaria. • Cuando se modifica la BD hay que modificar todos los índices. • La búsqueda secuencial en un índice secundario no es muy eficiente. Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 15 5 Indice Secundario Disperso 16 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos N Arboles 17 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Arboles B+ • Los archivos de índices secuenciales se degradan cuando crece el archivo 4aparecen muchos bloques de desbordamiento 4hay que reorganizar el archivo periódicamente. • El árbol B+ se reorganiza automáticamente con pequeños cambios al realizar las modificaciones. • No necesita reorganización periódica. • La desventaja es que consume más espacio • Como el espacio es barato se utiliza mucho. Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 18 6 Arboles B+ • Es un árbol que cumple ciertas propiedades • Todos los caminos desde la raíz a las hojas tienen la misma longitud • Cada nodo que no es raíz ni hoja tiene entre n/2 y n hijos (n es fijo en cada árbol) • Cada hoja tiene entre (n-1)/2 y n-1 valores • Casos especiales: 4Si la raíz no es hoja, tiene al menos 2 hijos 4Si la raíz es hoja tiene entre 0 y n-1 valores 19 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos N Ejemplo (n=5) 20 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Ejemplo (n=3) Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 21 7 Observaciones • Como las conexiones entre nodos se hacen con punteros, no hay seguridad de que los nodos lógicamente agrupados lo estén físicamente. • Los niveles que no son raíz forman una jerarquía de índices dispersos. • Un árbol B contiene un número pequeño de niveles (logaritmo el tamaño del archivo) • Operaciones 4búsqueda eficiente 4inserción y borrado eficientes 22 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Búsqueda en un árbol B+ • Empezar en el nodo raíz 4Buscar la clave mas pequeña que sea mayor de la buscada 4Si existe el valor acceder al hijo 4Si no existe, acceder al anterior N • Si el nodo accedido no es una hoja, repetir el procedimiento anterior • Si el nodo accedido es una hoja, buscar la clave en ese nodo y seguir su puntero. 4Si la clave no aparece es que no está 23 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Proceso de búsquedas • Siempre se atraviesa el árbol desde la raíz a una hoja. • El camino de búsqueda nunca es mas de 4logn/2 (K) 4n número de claves por nodo 4K claves • Un nodo suele ser del tamaño de un bloque de disco (4KB) y n 100 (40 B por índice) 4con 1 millón de claves y n=100 4solo se accede a 4 nodos en la búsqueda • En un árbol binario balanceado serían 20 nodos 4mucho tiempo (30 milisegundos por acceso) Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 24 8 Inserción en árbol B+ • Buscar el nodo hoja en el que debe aparecer el nuevo registro • si la clave ya existe en el nodo hoja 4añadir el registro al archivo 4encadenarlo con los otros registros de igual clave • si la clave no está 4añadir el registro al archivo 4añadir la clave al archivo de índices • si hay sitio en el nodo hoja, meterlo • si no hay sitio, dividir el nodo hoja y reajustar índices 25 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Dividir nodos • Tomar los pares puntero-nodo incluido el nuevo 4poner los n/2 primeros en el nodo original 4poner el resto en un nuevo nodo • Formar la pareja 4(clave-pequeña-nuevo-nodo, puntero-nuevo-nodo) • Meter la nueva pareja en el nodo padre 4si es padre se llena repetir el procedimiento. N • La división de nodos se hace de abajo-arriba hasta que se encuentra un nodo vacío. 4En el caso peor hay que crear una nueva raíz 26 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Ejemplo (Dario) Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 27 9 Borrado en árbol B+ • Encontrar el registro y eliminarlo del archivo principal • Eliminar el par (clave,puntero) del nodo hoja 4si no hay otro registro con esa misma clave • Si el nodo se queda con pocas entradas después del borrado y se pueden acomodar en otro nodo 4meter todas las claves de los dos nodos en uno, borrando el nodo sobrante 4Borrar la pareja (clave, puntero) de su padre y aplicar de nuevo el algoritmo recursivamente. • Si el nodo raíz se queda solo con un puntero, se borra y el hijo se convierte en raíz. 28 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos N Ejemplo (luis) 29 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Archivo de datos en el árbol B+ • La degradación de los archivos de índices se resuelve con índices como árboles B+. • La degradación del archivo de datos se resuelve con un archivo como árbol B+. • Las hojas del árbol almacenan registros en vez de punteros. • Como los registros son mayores que los punteros, se pueden almacenar menos registros por nodo. • La inserción y el borrado se realizan igual. • Como antes los nodos hoja están rellenos a la mitad. • Para ganar espacio se admiten 2n/3 registros por nodo (se consideran 3 nodos en las inserciones). Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 30 10 Asociación 31 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Acceso directo (hash) • Los archivos de índices obligan a leer de disco para encontrar un registro a partir de su clave. • El acceso directo permite eliminar los archivos de índices. • La técnica hash consiste en obtener la posición de un registro a partir de su clave 4posicion = F(clave) N • El acceso es inmediato con solo aplicar la fórmula hash • Para que el archivo tenga un tamaño realista, el número de posiciones es mucho menor que el número de claves • El problema es resolver la colisión de claves. 32 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Función hash Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 33 11 Función hash • El caso peor es que todas las claves usadas coincidan en la misma posición 4el tiempo de búsqueda es proporcional al número de claves • El caso ideal es tantos registros como datos y todas las claves trasformadas en registros distintos. • La función hash convierte la clave en un código numérico para usarlo como parámetro 4suma de todos los caracteres de la clave • También se puede usar para archivos de índices 34 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Bloques de registros N • La función hash transforma la clave en la dirección de un bloque. • Un bloque es una unidad de almacenamiento que contiene uno o mas registros. • Puede tener el tamaño de un bloque de disco. • Un bloque almacena todos los registros que colisionan. • La búsqueda de un registro dentro de un bloque es secuencial. 35 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Ej. Dimensionado del archivo • No queda ningún bloque libre 4se elige como mínimo un tamaño 4nB > nr / fr • nB es el número de bloques • nr número total de registros • fr número de registros por bloque • Hay demasiadas colisiones en un bloque 4se reduce si se aumenta el tamaño del archivo 4nB > (nr / fr) * (1 + d) • d es un factor de aumento ~ 20% 4A pesar de todo se produce desbordamiento Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 36 12 Resolución de colisiones • Hashing cerrado 4el archivo aumenta con las colisiones. 4se crea un nuevo bloque y el primero se enlaza con el 4es el más utilizado en bases de datos • Hashing abierto 4el archivo no aumenta con las colisiones. 4registros siguientes vacíos 4área de desbordamiento 4función de rehash • Lo peor es que una vez elegido el sistema no se puede cambiar 37 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Índices basados en hash • El Hash se utilizar para organizar archivos de índices. • Los índices hash son siempre índices secundarios N 4un archivo basado en hash ya tiene un índice primario (la clave de acceso) 38 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Ejemplo Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 39 13 Problemas del hash estático • Es difícil a priori fijar el número de bloques de un archivo de datos 4si la BD es mucho mayor que el tamaño previsto se degrada mucho el sistema 4si se opta por un tamaño muy grande y luego no se usa, se pierde mucho espacio. 4redefinir la función cada vez que aumenta el archivo es una tarea muy costosa • La solución es aplicar técnicas que permitan modificar dinámicamente el número de bloques. 40 PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Hashing dinámico • El hashing extensible permite adaptar la función de hashing dinámicamente con el tamaño del archivo 4tanto si aumenta como si disminuye • La función hash genera valores en un rango muy grande (32 bits) • En cada momento se usa solo un prefijo para acceder a la tabla de bloques (0 < i < 32) 4i aumenta o disminuye en función del nº de registros N • El número de bloques también aumenta y disminuye (< 2i) 41 U Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos Comparación entre métodos • Costo de la reorganización periódica • Relación de inserciones y borrados frente a búsquedas • Elegir entre optimizar el tiempo de acceso medio y el tiempo de acceso en el caso peor • El acceso directo suele ser mejor cuando se buscan registros aislados • Los índices ordenados se comportan mejor cuando se hacen peticiones sobre rangos de claves. Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 42 14 Bases de Datos Clase Nº 7 43 U N PA Bases de Datos – Analista de Sistemas – Unidad Académica Río Gallegos 15