Transcript Clase 05 - Índices
IBD
Clase 5
Búsqueda de datos - Indices
Búsqueda de información
: debemos minimizar el número de accesos Secuencial Binaria Estructuras auxiliares UNLP Facultad de Informática 2 IBD - CLASE 5
Búsqueda de datos - Indices
Las últimas págs. de un libro suelen contener un índice (tabla que contiene una lista de temas y los nº de pág. donde pueden encontrarse) El uso de un índice es mejor alternativa que buscar un tema a lo largo del libro en forma secuencial UNLP Facultad de Informática 3 IBD - CLASE 5
Búsqueda de datos - Indices
Otro ejemplo: encontrar libros en una biblioteca (por autor, título o tema) •
Alternativa 1:
tema disponer 3 copias de cada libro y 3 edificios de biblioteca separados. Edificio1: libros clasificados por autor, Edif 2: libros clasif por titulo, Edif 3: libros clasif por
(absurdo)
•
Alternativa 2:
usar un catálogo de tarjetas. En realidad es un conjunto de 3 índices, cada uno tiene una campo clave distinto, pero todos tienen el mismo número de catálogo como campo de referencia.
El uso de índices proporciona varios caminos de acceso a un archivo UNLP Facultad de Informática 4 IBD - CLASE 5
Búsqueda de datos - Indices
Índices: definiciones
Herramienta
Consiste de un para encontrar registros en un archivo.
campo de llave
(búsqueda) y un
campo de referencia
que indica donde encontrar el registro dentro del archivo de datos.
Tabla
que opera con un procedimiento que acepta información acerca de ciertos valores de atributos como entrada ( atributos.
llave
), y provee como salida, información que permite la rápida localización del registro con esos
Estructura de datos
(
clave, dirección
) usada para decrementar el tiempo de acceso a un archivo.
IBD - CLASE 5 UNLP Facultad de Informática 5
Búsqueda de datos - Indices
Índice:
equivale a índice temático de un libro (tema, #hoja)
(clave, NRR/distancia en bytes) Estructura más simple es un árbol
Característica fundamental
•
Permite imponer orden en un archivo sin que realmente este se reacomode
Varias posibilidades
• • Una: tantas entradas como tenga el archivo de datos.
Otra: que no esté completo IBD - CLASE 5 UNLP Facultad de Informática 6
Búsqueda de datos - Indices
Dir. Reg.
32 77 132 167 211 256 300 353 396 422
Cía
LON RCA WAR ANG COL DG MER COL DG FF
Nº ID
2312 2626 23699 3795 38358 18807 75016 31809 139201 245
Título
Romeo y Julieta Cuarteto en Do...
Touchstone Sinfonía Nº 9 Nebraska Sinfonía Nº 9 Suite el Gallo...
Sinfonía Nº 9 Concierto para Violín Good News
Compositores
Prokofiev Beethoven Corea Beethoven Springsteen Beethoven Rymsky-Korsakov Dvorak Beethoven Sweet Honey in..
Artista
Maazel Julliard Corea Giulini Springsteen Karajan Leinsdorf Bernstein Ferras Sweet Honey in..
7 IBD - CLASE 5 UNLP Facultad de Informática
Búsqueda de datos - Indices
Llave primaria:
cía grabadora + Nº de identificación de la cía Unívoca
.
Forma canónica: cía en mayúsculas + Nº identificación No se puede hacer búsqueda binaria sobre el archivo ya que tiene reg. de long variable (no se puede usar en NRR como medio de acceso)
Dos Archivos: índice y datos
Se construye un índice: llave de 12 caracteres (alineada a izq. y completada con blancos) más un campo de referencia (dir. del primer byte del registro correspondiente) Estructura del
índice
: archivo
ordenado (puede hacerse búsqueda binaria).
de reg. de
long fija
En memoria
Más fácil de manejar que el arch. de datos 8 IBD - CLASE 5 UNLP Facultad de Informática
Búsqueda de datos - Indices
Llave
ANG3795 COL31809 COL38358 DG139201 DG18807 FF245 LON2312 MER75016 RCA2626 WAR23699
Ref
167 353 211 396 256 442 32 300 77 132 9
Dir. de registro Registro de Datos
32 LON¦2312¦Romeo y Julieta¦Prokofiev... 77 RCA¦2626¦Cuartetoen Do... 132 WAR¦23699¦Touchstone¦Corea...
167 ANG¦3795¦Sinfonía Nº9¦Beethoven...
211 COL¦38358¦Nebraska¦Springsteen...
256 DG¦18807¦Sinfornía Nº 9¦Beethoven...
300 MER¦76016¦Suite El gallo de Oro¦Rimsky...
353 COL¦31809¦Sinfornía Nº9¦Dvorak...
396 DG¦139201¦Concierto para violín¦Beethoven...
422 FF¦245¦Good News¦Sweet Honey in the....
IBD - CLASE 5 UNLP Facultad de Informática
Búsqueda de datos - Indices
•
Algoritmo de recuperación con llave proc recupera_registros (llave)
encontrar la posición de
llave
el índice en si encontre la
llave
entonces tomar distancia en bytes al reg desplazar en archivo de datos leer el registro sino registro inexistente fin proceso Búsqueda binaria (está en memoria) Características Índices pueden tener más información (tamaño de registro a leer) UNLP Facultad de Informática 10 IBD - CLASE 5
Búsqueda de datos - Indices
Operaciones básicas en un archivo indizado
Índice en memoria
(búsqueda binaria + rápida, comparada con archivos clasificados)
Crear los archivos
(el indice y el arch. de datos se crean vacíos, solo con registro cabecera)
Cargar el índice en memoria
(se supone que cabe, ya que es lo suficientem. pequeño. Se almacena en un arreglo) IBD - CLASE 5 UNLP Facultad de Informática 11
Búsqueda de datos - Indices
Agregar nuevos registros
• • • Implica agregar al archivo de datos y al archivo de indices Archivo de datos: copiar al final (se debe saber el NRR (fija) o distancia en bytes (variable) para el índice) Índice ordenarse con cada nuevo elemento en forma canónica (en mem.), setear el flag anterior
Eliminar un registro
• • Arch. datos el espacio Cualquier técnica de las vistas para reutilizar Arch. índices como borrado).
se quita la entrada (ó se podría marcar UNLP Facultad de Informática 12 IBD - CLASE 5
Búsqueda de datos - Indices
Operaciones básicas en un archivo indizado
Reescritura del archivo de índice
• Cambios: activar un flag en el reg. cabecera cuando cambia la copia del índice en memoria ppal. Todos los programas deberían revisar el flag antes de utilizarlo. Si se encuentra el flag activo, el prg sabrá que el índice no está actualizado • Si un prg. detecta el índice desactualizado, debe acceder a un procedimiento para su reconstrucción UNLP Facultad de Informática 13 IBD - CLASE 5
Búsqueda de datos - Indices
Actualización de registros
• Sin modificar la clave (que pasa con el índice?) • Si el reg. no cambia de longitud, se almacena en la misma posición física, el índice “no se toca”.
• Si el reg. cambia de longitud (se agranda) y se reubica en el arch. de datos se debe guardar la nueva posición inicial en el índice • Modificando la clave (que sucede?) • • • Se modifica el archivo de datos Se debe actualizar y reorganizar el archivo de índices Cómo simplificar vistos) Modificar = Eliminar + Agregar (ya 14 IBD - CLASE 5 UNLP Facultad de Informática
Búsqueda de datos - Indices
Uso de índices
Ventajas • Se usa un archivo con reg. de long. fija • • • Se almacena en memoria principal Permite búsqueda binaria El mantenimiento es menos costoso IBD - CLASE 5 UNLP Facultad de Informática 15
Búsqueda de datos - Indices
Índices grandes para entrar en memoria
Acceso y mantenimiento del índice: almacén secundario
Ventajas
• • Posibilita búsqueda binaria en un arch. con reg. de long. variable La reorganización y mantenimiento es menos costoso que hacer estas tareas sobre el arch. de datos directamente (siguen siendo más pequeños que el arch. de datos)
Desventajas
• • # de desplazamientos (para búsqueda binaria en disco) Reacomodo del índice debido a la adición o borrado de reg.
UNLP Facultad de Informática 16 IBD - CLASE 5
Búsqueda de datos - Indices
Índices grandes para entrar en memoria
Soluciones
• Organización por Dispersión (hashing) (prioriza la velocidad de acceso) • Uso de Árboles
Otra alternativa
• Niveles de índices (indices de indices): permiten almacenar índices más grandes UNLP Facultad de Informática 17 IBD - CLASE 5
Búsqueda de datos - Indices
Índices Secundarios
No sería natural solicitar un dato por clave En su lugar se utiliza normalmente un campo mas fácil de recordar( ej: buscar una canción por su título o por su compositor) Este campo es un campo que pertenece a una llave secundaria El índice secundario relaciona la llave secundaria con la llave primaria Las claves secundarias se pueden repetir Acceso 1º por llave secundaria (se obtiene la clave primaria) y luego llave primaria (en índice primario) UNLP Facultad de Informática 18 IBD - CLASE 5
Búsqueda de datos - Indices
19
Indice de
BEETHOVEN BEETHOVEN BEETHOVEN BEETHOVEN COREA DVORAK PROKOFIEV RIMSKY-KORSAKOV SPRINGSTEEN SWEET HONEY....
Compositores
IBD - CLASE 5 ANG3795 DG139201 DG18807 RCA2626 WAR23699 COL31809 LON2312 MER75016 COL38358 FF245 UNLP Facultad de Informática
Búsqueda de datos - Indices
Índices Secundarios (Operaciones)
Adición de registros
• Implica reacomodar el archivo • Bajo costo si el índice está en memoria ppal.
• Las claves se almacenan en long. Fija búsqueda trabaje adecuadamente) podrían llegar a truncarse (la definición de forma canónica debe considerar esta restricción para que la • La claves duplicadas implican un reordenamiento de 2º nivel de acuerdo a la clave primaria que referencian UNLP Facultad de Informática 20 IBD - CLASE 5
Búsqueda de datos - Indices
Índices Secundarios (Operaciones)
•
Eliminación de registros
• Más complicada: eliminar referencia en índice primario + referencias en índices secundarios • Alternativa, sólo borrar del primario UNLP Facultad de Informática 21 IBD - CLASE 5
Búsqueda de datos - Indices
Índices Secundarios (operaciones)
Eliminación de registros
• Así, el indice primario sirve como una especie de búffer de protección que aisla los índices secundarios de los cambios del archivo de datos • •
Beneficio:
no hay reacomodo por cada borrado
Costo:
• se sigue ocupando el espacio
Si el archivo es poco volátil
esto no es problema •
Si el archivo es muy volátil
secundarios se podrían programar borrados físicos de los índices UNLP Facultad de Informática 22 IBD - CLASE 5
Búsqueda de datos - Indices
Índices Secundarios
Análisis del costo de mantener direcciones físicas en el índice secundario • Si el indice secundario referencia directam. al arch. de datos • Reacomodamiento físicos implica reacomodar índice primario y en este caso secundarios tambien (pueden ser varios) UNLP Facultad de Informática 23 IBD - CLASE 5
Búsqueda de datos - Indices
Indices Secundarios
Actualización
• Cambia la llave secundaria • Se debe reacomodar el índice secundario relativamente costosa.
• puede ser Cambia la llave primaria • • Se debe cambiar la ref. en el reg. de índice secundario Si existen reg. repetidos, se deben reclasificar localmente el índice secundario • Cambia el resto del registro
Consulta
• Mejora en gran medida el tiempo de respuestas UNLP Facultad de Informática 24 IBD - CLASE 5
Búsqueda de datos - Indices
Problemas: la repetición de información
• El arch. de índices se debe reacomodar con cada adición, aunque se ingrese una clave secundaria ya existente, dado que existe un 2do orden por la clave primaria.
• Misma clave varias ocurrencias, en distintos registros • • Se desperdicia espacio Menor posibilidad de que el índice quepa en memoria UNLP Facultad de Informática 25 IBD - CLASE 5
Búsqueda de datos - Indices
Soluciones
•
Arreglo:
clave + vector de punteros con ocurrencias BEETHOVEN ANG3795 DG139201 DG18807 RCA2626 • • Al agregar un nuevo reg. de una clave existente no se debe reacomodar nada-> solo reacomodar el vector de ocurrencias Al agregar un nuevo reg. con una clave nueva, se genera un arreglo con la clave y un elemento en el vector de punteros •
Problema:
• elección del tamaño del vector.
Tamaño fijo
• Puede haber casos en que sea insuficiente • Puede haber casos que sobre espacio, provocando fragmentación interna •
Mejora:
clave + lista de punteros con ocurrencias 26 IBD - CLASE 5 UNLP Facultad de Informática
Búsqueda de datos - Indices
Listas invertidas:
Archivos en los que una llave secundaria lleva a un conjunto de una o más claves primarias lista de referencias de claves primarias No se pierde espacio (no hay reserva) Si se agrega un elem. a la lista no se necesaria una reorganización completa UNLP Facultad de Informática 27 IBD - CLASE 5
Búsqueda de datos - Indices
Listas invertidas
Organización física • • Archivos secundarios Marcas o referencias Operaciones • Agregar un nuevo consiste en agregar concurrencias en la lista invertida • • Idem borrar Modificaciones dependiendo el caso UNLP Facultad de Informática 28 IBD - CLASE 5
Búsqueda de datos - Indices
0 1 2 3 4 5 6
NRR Archivo de índice secundario
BEETHOVEN COREA DVORAK PROKOFIEV RIMSKY-KORSAKOV SPRINGSTEEN SWET HONEY IN...
29 3 2 7 10 6 4 9
NRR Arch de listas de llaves primarias
0 LON2312 1 RCA2626 2 WAR23699 3 ANG3795 4 COL38358 5 DG18807 6 MER76016 7 COL31809 8 DG139201 9 10 FF245 ANG36193 IBD - CLASE 5 5 -1 0 -1 -1 -1 8 -1 1 -1 -1 UNLP Facultad de Informática
Búsqueda de datos - Indices
Listas invertidas
Ventajas
• • • El único reacomodamiento en el arch. índice -> al agregar o cambiar un nombre • Igualmente es menos costoso (indice más pequeño) Borrar o añadir grabaciones para un compositor->sólo cambiar el archivo de listas Como el reacomodamiento es a bajo costo se podría almacenar el arch. índice en mem. secundaria , liberando RAM
Desventaja
• el arch. de listas es conveniente que esté en memoria ppal. porque podría haber muchos desplazamientos en disco costoso si hay muchos índices secundarios UNLP Facultad de Informática 30 IBD - CLASE 5
Búsqueda de datos - Indices
Índices selectivos
Contienen llaves solo para una porción de los registros del archivo de datos que interesa acceder • Ej. sólo contenga los títulos de música clásica Vemos solo un subconjunto de los registros del archivo UNLP Facultad de Informática 31 IBD - CLASE 5