Archivos e índices Integrantes: Javier Carrasco Johnny Corbino Agenda Archivos de Registros del SGBD Organización e indexación de archivos Estructuración de índices Comparaciones de organización y costo Implementación de índices en SQL 1 Archivos de Registros Es la abstracción básica de datos en un DBMS Están organizados de acuerdo a un criterio Se definen operaciones sobre ellos Organización e Indexación ORGANIZACIÓN DE ARCHIVOS Archivos de registros no ordenados (HEAP) La mas simple Ineficiente Archivos de registros ordenados Costoso de mantener 2 Organización e Indexación Ejemplo: Considere un archivo con registros de empleados, cada uno con los campos edad, nombre y salario. 1) Obtener los registros de empleados ordenados por edad 2) Obtener registros de empleados cuyo salario sea mas de $5000 Organización e Indexación ÍNDICES Estructura de datos o de acceso a datos utilizada para optimizar la obtención de registros en respuesta a ciertas operaciones de búsqueda. Clave de búsqueda (no confundir con clave primaria) Múltiples índices para un solo archivo Record id (rid) Alternativas para entrada de Datos k* en un Índice 1.- Registro de datos con un valor k para la clave de búsqueda. 2.- Un par <k,rid> con un valor k para la clave de búsqueda. 3.- Un par <k,lista-rid> 3 Organización e Indexación Alternativa 1 Organización especial: Organización de archivo indexada Alternativa a archivos Heap o no ordenados Alternativa 2 Independiente de la organización del archivo Alternativa 3 Independiente de la organización del archivo Mejor uso de espacio que alternativa 2 pero la longitud de la entrada de datos es variable. Organización e Indexación Índices de agrupamiento (clustered) La entrada de datos del índice esta ordenada de igual manera que en el archivo Índices con alternativa 1 (Archivo agrupado) Índices Primarios y Secundarios Un índice es primario si contiene como entrada la clave primaria del registro del archivo, caso contrario es índice secundario. 4 Organización e Indexación Entradas de índice (Búsqueda directa) Índice Entrada de datos Archivo de Datos Índice no agrupado (unclustered) Organización e Indexación Entradas de índice (Búsqueda directa) Índice Entrada de datos Archivo de Datos Índice agrupado (clustered) 5 Estructuración de índices Indexación basada en Hash (Dispersión) Buckets Función Hash Búsqueda rápida de registros (con la clave de búsqueda) Rápida inserción y eliminación No soporta búsqueda de rangos Estructuración de índices h(edad)=00 edad h1 h(edad)=01 h(edad)=10 Smith,44,3000 Jones,40,6000 Tracy,44,5000 Ashby,25,3000 Basu,33,4000 Bristow,29,2000 Cass,50,5000 Daniels,22,6000 3000 3000 5000 5000 4000 2000 6000 6000 h(sal)=00 h2 sal h(sal)=11 Índice basado en hash (edad), e índice auxiliar con clave ‘sal’ 6 Estructuración de índices Indexación basada en árboles Estructura de datos de búsqueda jerárquica Eficiente en búsquedas de rango Ejemplo: buscar empleados con 24 < edad < 50 Estructuración de índices Comienzo de la búsqueda 12 78 19 56 33 44 A 3 9 86 94 B Nivel hoja L1 Daniels,22,6000 Ashby,25,3000 Bristow,29,2000 L2 Basu,33,4000 Jones,40,6000 L3 Smith,44,3000 Tracy,44,5000 Cass,50,5000 Índice basado en estructura de árbol 7 Estructuración de índices Indexación basada en Árboles B+ Caminos de igual longitud (balanceado en cuanto altura) Recorrer en orden secuencial y realizar búsquedas Mas rápido que la búsqueda binaria en un archivo ordenado Ejemplo: n=numero hijos de nodo (al menos 100 en la practica) h=altura (generalmente no mas de 4 en la practica) n elevado a la h = 100 millones de nodos hoja Todas las búsquedas requieren ‘h’ operaciones I/O (4 en este caso); mientras que busqueda binaria: log2 100,000,000 sobre 25 I/O Comparación organización-costo Modelo de costo: nos permite estimar el costo en términos de tiempo de ejecución de las distintas operaciones que se efectúan sobre los archivos de un tipo específico en la BD. B = # de paginas de datos R = # de registros por página D = tiempo promedio que implica leer o escribir una pagina en disco C = tiempo promedio para procesar un registro (comparar el campo) H = tiempo requerido por un registro para ser mapeado según Hash F = promedio de hijos por nodo no hoja (fan-out) según árboles Normalmente: D = 15ms, C = H =100ns. 8 Comparación organización-costo Archivos de montón (heap files): es el tipo simple y básico de organización, los registros se colocan en el archivo en el orden en que se insertan (al final). Esta organización suele utilizarse con caminos de acceso adicionales, como los índices secundarios. Costos: recorrido = B(D + RC), búsqueda exacta = ½ B(D + RC), búsqueda rango = B(D + RC). Comparación organización-costo Archivos ordenados (sorted files): los registros se encuentran ordenados en el archivo en base al valor de uno de sus campos llamado campo de ordenación, si el campo de ordenación también es un campo clave, a este se le denomina cave de ordenación. Costos: recorrido = B(D + RC), búsqueda = D(log2 B) + C(log2 R). 9 Comparación organización-costo Comparación de costos de E/S: un archivo de montón resulta eficiente de examinar e insertar pero este penaliza la búsqueda y la eliminación de registros. Por otro lado un archivo ordenado ofrece una inserción y eliminación lenta, sin embargo la búsqueda es más rápida comparada a la de montículos. Tipo de archivo Examinar Búsqueda exacta Búsqueda rango Insertar Eliminar Montón BD ½ BD BD 2D Búsqueda + D Ordenado BD D(log2 B) D(log2 B) Búsqueda + BD Búsqueda + BD Desempeño e implementación de índices: La elección de índices tiene un impacto tremendo en el desempeño del sistema y debe ser hecho en el contexto del trabajo de carga esperado, o en otras palabras la mezcla de consultas y operaciones de actualización. 10 Desempeño e implementación de índices: Impacto del trabajo de carga (workload): el primer punto a considerar son las operaciones comunes que se realizan en la BD, ya que diferentes tipos de organizaciones de archivos e índices soportan de manera eficiente dichas operaciones. Resulta más complejo implementar y mantener un árbol que una tabla o arreglo. Desempeño e implementación de índices: Claves de búsqueda compuestas: también llamadas claves concatenadas. Si se usa una cierta combinación de atributos muy frecuentemente, es mejor crear una estructura de acceso que proporcione un acceso eficiente mediante un valor clave que sea una combinación de esos atributos. (a0, a1, …, an) 11 Desempeño e implementación de índices: SELECT nombre FROM Empleado WHERE edad BETWEEN 20 AND 30 AND salario BETWEEN 1.000.000 AND 3.000.000 SELECT nombre FROM Empleado WHERE edad = 25 AND salario BETWEEN 800.000 AND 950.000 En este caso seria adecuado declarar una clave (edad, salario). Índices en SQL CREATE INDEX nombre_indice ON nombre_tabla WITH STRUCTURE = BTREE, KEY = (edad, salario) Esta sentencia crea un índice nombre_indice de tipo árbol B+ sobre la tabla nombre_tabla (archivo) y cuya clave es (edad, salario). 12 Referencias Ramakrishnan, R., Gehrke, J. [2003] “Database management systems” Elmasri, R., Navathe, S. [2005] “Fundamentos de sistemas de base de datos” Loomis, X. [1992] “Estructuras de datos y organización de archivos” Gracias por su atención … 13