Clase 05 - Índices

Download Report

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