Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Departamento de Computación Bases de Datos Integrantes: Herrera, Manuel C.I. 17.171.090 Balladares, Edgar C.I. 17.631.176 ESTRUCTURAS DE ARBOLES Y HASHING Agenda: AGENDA ARBOLES HASHING 1.Estructuras de Árboles 1.1 Idea Intuitiva de Índices Multinivel 1.2 Método de Acceso Secuencial Indexado (ISAM) 1.3 Arboles B+: Una estructura dinámica de datos 1.4 Búsqueda en Arboles 1.5 Inserción en Arboles 1.6 Eliminación en Arboles 1.7 Duplicados en Arboles 18 Arboles B+ en Práctica ESTRUCTURAS DE ARBOLES Y HASHING AGENDA Agenda: ARBOLES 2.Hashing HASHING 2.1 2.2 2.3 2.4 Extensible Hashing Estático Hashing Extensible Hashing Lineal Hashing Lineal vs. Hashing ESTRUCTURAS DE ARBOLES Y HASHING ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica ESTRUCTURAS DE ARBOLES Y HASHING ÍNDICES MULTINIVEL ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica ¿En qué consiste la estructura de índices multinivel? P0 K1 P1 K2 P2 ……… Km Pm Formato de una página de índices k1 Pág 1 k2 Pág 2 kN Pág 3 Pág N Estructura de un solo nivel ESTRUCTURAS DE ARBOLES Y HASHING ÍNDICES MULTINIVEL ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica ¿En qué consiste la estructura de índices multinivel? 9 Separar los índices de referencia en un archivo y los datos en otro 9 Repetir hasta lograr que los índices ocupen una sola página 9 Reducir los tiempos de búsqueda ¾ ¿Qué pasa con la inserción y eliminación de datos? ESTRUCTURAS DE ARBOLES Y HASHING ÍNDICES MULTINIVEL Índices Tipo Árbol ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica • Estático + Acceso Secuencial Indexado (ISAM) • Dinámico + Árboles B+ ESTRUCTURAS DE ARBOLES Y HASHING MÉTODO DE ACCESO SECUENCIAL INDEXADO (ISAM) ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Organización de la estructura de datos (ISAM) Non-leaf pages …... …... …... Primary pages Overflow ESTRUCTURAS DE ARBOLES Y HASHING MÉTODO DE ACCESO SECUENCIAL INDEXADO (ISAM) ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Organización de la estructura de datos (ISAM) o Cada nodo del árbol es una página de referencia a disco, y todos los datos residen en los nodos hoja. o Cuando se crea el archivo, todos los datos ubicados en los nodos hoja son ordenados secuencialmente de acuerdo al valor clave de búsqueda. Luego, se asignan las páginas del nivel de nodos no-hoja. ESTRUCTURAS DE ARBOLES Y HASHING MÉTODO DE ACCESO SECUENCIAL INDEXADO (ISAM) ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Organización de la estructura de datos (ISAM) o Luego de creada la estructura, si se realizan muchas inserciones y se sobrepasa la capacidad del árbol, será necesaria la creación de páginas adicionales en un área de sobrecarga (overflow). [Esto se debe a que la estructura de índices en el método ISAM es estática] ESTRUCTURAS DE ARBOLES Y HASHING MÉTODO DE ACCESO SECUENCIAL INDEXADO (ISAM) ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Organización de la estructura de datos (ISAM) o Operaciones básicas en la estructura ISAM Inserción Eliminación Búsqueda ESTRUCTURAS DE ARBOLES Y HASHING MÉTODO DE ACCESO SECUENCIAL INDEXADO (ISAM) ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Veamos un ejemplo… ESTRUCTURAS DE ARBOLES Y HASHING MÉTODO DE ACCESO SECUENCIAL INDEXADO (ISAM) ARBOLES • • • • • • • • Veamos un ejemplo… Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica ESTRUCTURAS DE ARBOLES Y HASHING MÉTODO DE ACCESO SECUENCIAL INDEXADO (ISAM) ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Consideraciones del Método ISAM o Una vez se ha creado el archivo ISAM, las inserciones y eliminaciones solo afectan el contenido de los nodos hoja. Desventajas: Cadenas de sobrecarga muy largas Ventajas: 9 Control de concurrecncia ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • ¿Qué es un Árbol B+? Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica o Árbol balanceado en el cual los nodos internos dirigen la búsqueda, y los nodos “hoja” contienen las entradas de datos. o Para acceder a todos los nodos hoja de manera eficiente, se enlazan utilizando apuntadores. o Se organizan los datos en una lista doblemente enlazada, de manera que se mantenga el acceso secuencial en cualquier dirección ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Estructura de un Árbol B+ Entradas de índices (para dirigir la búsqueda) Entradas de Datos (“Conjunto de secuencias”) ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Principales Características de un Árbol B+ o Operaciones básicas (inserción, eliminación), mantienen el árbol balanceado. o La búsqueda de un registro requiere solo un recorrido trasversal desde la raíz a el nodo hoja apropiado. o Cada nodo (a excepción de la raíz) tendrá una ocupación mínima del 50% (en espacio). ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Formato de un Nodo Generalmente, un árbol B+ contiene m entradas, en donde d ≤ m ≤ 2d. Siendo d el “orden del árbol”, lo que es una medida de capacidad de los nodos. El formato de un nodo es el mismo que el usado en el método ISAM. Los nodos no-hoja con m entradas de índices contienen m+1 punteros a sus hijos. ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Formato de un Nodo Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica P0 K1 P1 K2 P2 ……… Km Pm Ki son los valores de claves de búsqueda Pi son punteros a los hijos para nodos no hoja o punteros a registros, o cajones de punteros a registros para nodos hojas. ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Ahora, un ejemplo… ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Algoritmo de Búsqueda Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserció Inserción Eliminación Duplicados Árboles B+ en Práctica Inserción en Árboles B+ El algoritmo de inserción toma una entrada, encuentra el nodo hoja al cual pertenece y lo inserta allí. Usualmente, este proceso resulta en bajar (de manera recursiva) hasta el nodo hoja al cual pertenece la nueva entrada, ubicar la entrada, y luego retornar hasta la raíz. ¿Qué pasa cuando un nodo está lleno? ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Inserción en Árboles B+ Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserció Inserción Eliminación Duplicados Árboles B+ en Práctica Veamos el Algoritmo! ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserció Inserción Eliminación Duplicados Árboles B+ en Práctica Inserción en Árboles B+ Un ejemplo… Volvamos al árbol de ejemplo anterior ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Eliminación en Árboles B+ Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminació Eliminación Duplicados Árboles B+ en Práctica Se inicia en la raíz, se busca la hoja en donde se encuentra la entrada a borrar. Se elimina la entrada Si al eliminar una entrada el nodo queda por debajo del nº mínimo de elementos, se redistribuyen los elementos restantes, de manera que el árbol se mantenga balanceado. ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminació Eliminación Duplicados Árboles B+ en Práctica Eliminación en Árboles B+ Algoritmo de eliminación… ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Eliminación en Árboles B+ Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminació Eliminación Duplicados Árboles B+ en Práctica Ejemplo… ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Práctica Elementos Duplicados ¿Qué ocurre si tenemos duplicados en el árbol? elementos Una alternativa sería usar nodos sobrecarga (como en el método ISAM). de Otra alternativa resulta tratar los duplicados como cualquier otro elemento. De tal modo que pueden haber páginas que contengan más de una vez a algún elemento que esté repetido ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Prá Práctica Bulk Loading La aplicación de Árboles B+ para manejar los registros de una base de datos incluye otros conceptos, uno de ellos es el Bulk Loading… El Bulk Loading es un método para crear árboles de datos cuando la colección de registros es bastante grande, ya que insertar uno a uno los registros usando el algoritmo de inserción resultaría ser muy costoso. ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Prá Práctica Bulk Loading El primer paso de la aplicación del Bulk Loading es ordenar los registros a ser insertados en el árbol que será creado. Un ejemplo: ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Prá Práctica Bulk Loading Ejemplo de Bulk Loading… ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES • • • • • • • • Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Prá Práctica Bulk Loading Bulk Loading vs. Inserción Múltiple ¾ Inserción Múltiple • Lento • No permite almacenamiento secuencial de hojas ¾ Bulk Loading • Ventajas sobre el control de concurrencia • Pocas operaciones de I/O durante la construcción • Las hojas se almacenan de manera secuencial ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES Árboles B+ en DBMS Reales • • • • • • • • IBM DB2, Informix, Microsoft SQL Server, Oracle 8 y Sybase ASE, entre otros, soportan la creación de árboles B+ para el manejo de índices. Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Prá Práctica La diferencia entre los mismos radica en la manera de manejar las eliminaciones y los duplicados. ESTRUCTURAS DE ARBOLES Y HASHING ESTRUCTURA DINÁMICA: ÁRBOLES B+ ARBOLES Árboles B+ en DBMS Reales • • • • • • • • Por ejemplo, en Oracle 8 las eliminaciones se realizan marcando la fila como borrada, para reutilizar el espacio liberado se pueden reconstruir los índices. Idea Intuitiva Método ISAM Árboles B+ Búsqueda Inserción Eliminación Duplicados Árboles B+ en Prá Práctica DB2 y SQL Server eliminan los registros y reubican los índices restantes cuando se desbalancea el árbol. ESTRUCTURAS DE ARBOLES Y HASHING HASHING • • • • Estático Extensible Lineal Extensible vs. Lineal ESTRUCTURAS DE ARBOLES Y HASHING Hashing HASHING • • • • Está Estático Extensible Lineal Extensible vs. Lineal • Los índices tipo Hash son mejores para búsquedas por igualdad y no soportan búsquedas por rango. • Existen técnicas hash estáticas y dinámicas como en los árboles ISAM y B+. • El hashing se puede usar no solo para la organización de archivos, sino también para la creación de la estructura de índices. • Un índice hash organiza claves de búsqueda, con sus punteros a registros asociados, dentro de una estructura de archivo de hash. •Las inserciones y borrados requieren más de una operación. ESTRUCTURAS DE ARBOLES Y HASHING HASHING • • • • h(k) mod M = cubo al que pertenece una entrada de dato con llave k. (M= # de cubos) Está Estático Extensible Lineal Extensible vs. Lineal ESTRUCTURAS DE ARBOLES Y HASHING • Los cubos contienen entradas de datos. HASHING • • • • •La función hash se aplica al valor de la llave de búsqueda del campo de un registro r. Está Estático • Muchas páginas overflow encadenadas pueden degradar el Extensible rendimiento. Para corregir este problema se usa el hashing Lineal Extensible vs. extensible y el hashing lineal. Lineal • La función de hash es utilizada para localizar registros para su acceso, inserción y borrado. • Registros con diferentes valores de claves de búsqueda pueden ser mapeados al mismo cajón, de esta forma una vez accedido el cajón se debe hacer una búsqueda secuencial para encontrar el registro. ESTRUCTURAS DE ARBOLES Y HASHING Deficiencias HASHING • • • • • En el hashing estático, la función h mapea los valores de clave de búsqueda a un conjunto fijo B de cajones. • Las bases de datos crecen con el tiempo. Si el número inicial Está Estático de cajones es demasiado chico, la performance se degradará Extensible porque abra demasiados cajones de desbordamiento. Lineal Extensible vs. • Si el tamaño del archivo va ser grande en un futuro, se pueden Lineal tener un gran numero de cajones, pero así se estará desperdiciando espacio al principio. ESTRUCTURAS DE ARBOLES Y HASHING Deficiencias HASHING • • • • Está Estático Extensible Lineal Extensible vs. Lineal • Si la base de datos se achica, nuevamente se estará gastando espacio. • Una opción es reorganizar periódicamente el archivo con una nueva función de hash, pero esto es muy caro. • Este problema puede ser evitado utilizando técnicas que permitan que el numero de cajones sean modificados dinámicamente. ESTRUCTURAS DE ARBOLES Y HASHING Hashing Extensible HASHING • • • • • Técnica de indexación que evita los recorridos secuenciales y las áreas de saturación separadas. • Utiliza un directorio de punteros a los buckets y aumenta el Estático tamaño del bucket a través de doblar el directorio y dividiendo Extensible solamente el bucket al que se le presenta el overflow Lineal Extensible vs. • Una entrada de datos se puede localizar al computar su valor Lineal de hash tomando los ultimos D bits y buscando el bucket al q pertenece . ESTRUCTURAS DE ARBOLES Y HASHING Hashing Extensible HASHING • • • • • El bucket se divide si es necesario tener mas espacio para insertar data. Estático • El valor D depende del tamaño del directorio , ese numero Extensible D es llamado “la profundidad global del archivo hasheado”. Lineal Extensible vs. •D es mantenido como la parte de la cabecera del archivo y es usado siempre que tenemos que localizar una entrada Lineal de datos. ESTRUCTURAS DE ARBOLES Y HASHING Hashing Lineal HASHING • • • • Estático Extensible Lineal Extensible vs. Lineal • Esquema de índices asociativos dinámicos inventado por Witold Litwin y publicado en una convención mundial de bases de datos en 1980. • Este representa una alternativa mejor al hash extensible. • De hecho no existe un algoritmo que supere su desempeño. ESTRUCTURAS DE ARBOLES Y HASHING Elementos del Hashing Lineal HASHING • M es el número de buckets primarios en el archivo. • • • • •Split pointer (n) controla cuál bucket es el siguiente en desdoblarse. Estático Extensible Lineal Extensible vs. Lineal •Política de desdoblamiento que especifica la condición que dispara el desdoblamiento del bucket señalado por el split pointer (generalmente un porcentaje de carga de los buckets). ESTRUCTURAS DE ARBOLES Y HASHING Elementos del Hashing Lineal HASHING • • • • Estático Extensible Lineal Extensible vs. Lineal • Cada vez que el archivo que almacena la tabla de hash duplica su tamaño se dice que ocurre una expansión completa, en cuyo caso el split pointer se retorna a su condición inicial (0). •También se debe definir una política de resolución de colisiones (CHP), que puede ser de encadenamiento (trabajando con overflows), o no permitir el encadenamiento y aumentar el directorio cada vez que ocurre una colisión ESTRUCTURAS DE ARBOLES Y HASHING Características del Hashing Lineal HASHING • • • • • Éste enfoque maneja el problema de muchas páginas de overflow encadenadas sin usar un directorio. Estático • Maneja bien valores duplicados. Extensible Lineal • En éste modelo el espacio de direcciones crece y decrece Extensible vs. dinámicamente según sea necesario. Lineal • Puede soportar cualquier número de inserciones y eliminaciones sin sufrir deterioro en su desempeño de acceso o espacio en memoria. ESTRUCTURAS DE ARBOLES Y HASHING Características del Hashing Lineal HASHING • • • • Estático Extensible Lineal Extensible vs. Lineal • En general, un registro puede ser encontrado con un solo acceso con una política de carga >0.9. para una política >0.8 la media es de 1.7 accesos. • Debe haber un equilibrio entre la cantidad de accesos y la política de carga porque una política muy estricta con una función hash regular puede producir un exceso de overflows y aumentar la cantidad de accesos para encontrar un registro. ESTRUCTURAS DE ARBOLES Y HASHING Hashing Extensible Vs Hashing Lineal HASHING • • • • Estático Extensible Lineal Extensible vs. Lineal • La idea del hashing lineal es q se pueda evitar el uso de un directorio por medio de una opción inteligente para la división del bucket. Pero por otro lado, para siempre dividir el bucket apropiado el Hashing extensible puede generar un numero de divisiones reducido y una ocupación de bucket mas alta. •El Hashing lineal trabaja naturalmente con colisiones y ofrece mucha flexibilidad con respecto a la división de los bucket. •Si la distribución de la data esta muy sesgada las cadenas de overflow puede causar q la performance del hashing lineal sea peor que la del hashing extensible.