Tema: ndices Catedrtico: Josu Bladimir Jimnez Castro Objetivos Comentar sobre la teora de ndices Describir las lleves primarias y secundarias Desarrollar listas invertidas Qu es un ndice? Cuando nos referimos a ndices, lo haremos asumiendo que es un ndice simple, porque se representan mediante arreglos simples de estructuras que contienen las llaves y los campos de referencia. Un ndice es aquel que permite imponer un orden en un archivo sin que realmente se reacomode. as no solamente se evita desacomodar los registros fijos, si no que tambin los costos de aspectos como la adicin de registros son mucho menores que en archivos clasificados. ndices simples de un archivo con entradas secuenciales Archivo de lbum de msica de registros de longitud variable donde el nmero de ID es la llave primaria del archivo 1. Qu es un ndice? 2. Para qu me sirve? 3. Cmo se construye un ndice simple? Cules son las operaciones bsicas en un archivo indizado con entradas secuenciales Cmo funciona realmente un ndice? ndices simples de un archivo con entradas secuenciales Construccin de un ndice para el archivo Caractersticas importantes de esta estructura: Operaciones bsicas en un archivo indizado con entradas secuenciales Conforme se ejecuta un programa, mantener el ndice en la memoria tambin permite encontrar registros por llave ms rpido con un archivo indizado que con uno clasificado porque la bsqueda binaria puede efectuarse completamente en memoria. Operaciones bsicas en un archivo indizado con entradas secuenciales 1. Crear los archivos originales de ndices y de datos 2. Cargar el archivo de ndices en la memoria antes de usarlo. 3. Reescribir el archivo de ndices de la memoria despus de usarlo. 4. Agregar registros al archivo de datos y al ndice 5. Eliminar registros del archivo de datos 6. Actualizar registros del archivo de datos Operaciones bsicas en un archivo indizado con entradas secuenciales Operaciones bsicas en un archivo indizado con entradas secuenciales Operaciones bsicas en un archivo indizado con entradas secuenciales 1. Debe existir un mecanismo que le permita al programa saber cuando no est actualizado (con una bandera podra solucionarse esto).
2. Si un programa detecta que un ndice no est actualizado, debe acceder a un podrecimiento que reconstruya el ndice a partir del archivo de datos. Esto debe ser automtico y antes de usar el ndice. Operaciones bsicas en un archivo indizado con entradas secuenciales ELIMINACION DE REGISTROS. Ya hemos visto varios mtodos de eliminacin de registros en archivos con registros de longitud fija y variable, para reutilizar el espacio ocupado por ellos. Estos mtodos son completamente viables para nuestro archivo de datos, ya que, a diferencia de un archivo de datos clasificado, los registros de este archivo no necesitan moverse para mantener el orden. Esta es una de las grandes ventajas de los ndices: se accede rpido a los registros individuales por llave sin molestia de tener registros fijos. De hecho, la indizacin por s misma fija todos los registros. Operaciones bsicas en un archivo indizado con entradas secuenciales ndices demasiado grandes para almacenarse en memoria Hasta el momento los mtodos analizados de indexacin suponen que los archivos no sern tan gigantes y podrn ser usados en Memoria del computador. Qu debe hacerse cuando los ndices son demasiado grandes para almacenarse en memoria? Qu desventajas tiene los ndices simples? Desventajas de los ndices simples Cuando los ndices simples son demasiado grandes para almacenarse en memoria debe usarse: 1. Una organizacin de dispersin, cuando la velocidad de acceso tiene la mxima prioridad. 2. Un ndice estructurado en forma de rbol, como un rbol B, cuando se necesita flexibilidad tanto en acceso por llave como en acceso ordenado y secuencial. Llaves secundarias Ahora podras hacernos la siguiente pregunta: Cuando busco un libro en una biblioteca le decimos a la bibliotecaria Tiene el libro de organizacin de archivos ? le decimos Tiene el libro cdigo CD4587986X-23?
Por lo general no buscamos la informacin por llaves primarias, si no por descriptores que pueden ser nombres o palabras clave. Esto es lo que se conoce como llaves secundarias. ndice de llaves secundarias organizadas por compositor. Donde autor es una llave secundaria y el cdigo del CD es la llave primaria. Llaves secundarias Agregar registros: Usando llaves secundarias al colocar un nuevo registro esto significa agregar informacin en el bloque de llaves secundarias tambin. Obviamente el costo de esto es grande a menos que el ndice secundario pueda trasladarse en memoria y modificar todo all. Algo muy importante es que los ndices secundarios pueden tener llaves repetidas, cosa que no ocurre en los ndices secundarios. Y por supuesto que las llaves primarias se agrupan. Eliminacin de registros. Cuando borramos un registro esto implica eliminar la informacin tanto en el ndice primario como todas sus referencias en la tabla de ndices de llaves secundarias. Si se tienen varios ndices se llaves secundarias el reordenarlos cuando se ha borrado una referencia a ellos, implica tiempos muy grandes, a menos que se pudieran reordenar en memoria. Por lo general estos ndices estn en el almacenamiento secundario Hablemos un poco de llaves primarias y SECUNDARIAS Cuando se actualizan llaves secundarias se pueden presentar 3 posibles situaciones: 1. La actualizacin cambia la llave secundaria 2. La actualizacin se restringe a otros campos. 3. La actualizacin cambia llave primaria. Llaves secundarias Llaves secundarias Problemas con las llaves secundarias cmo podramos mejorar esto? Y evitar desperdicio de espacio en memoria y en disco para optimizar las estructuras de ndices Listas invertidas Primer intento de solucin ANG3795 Conciertos para piano DG139201 Biografas msicos DG18807 Sinfonas RCA2626 Personajes clebres Primer intento de solucin Aunque esta estructura plantea un ahorro de espacio notable tambin presenta algunos problemas notables Primer intento de solucin Qu necesitamos ahora? Y esto lo podemos lograr usando una lista invertida Ligar la lista de referencias A los archivos que son como los ndices secundarios, en los que una llave secundaria lleva a un conjunto de una o ms llaves primarias, se les llama listas invertidas Son invertidas por que se trabaja retrocediendo de una llave secundaria a una llave primaria y al registro mismo. Lista invertida Forma conceptual de los campos de referencia a llaves primarias como una serie de listas. Resultados El desarrollo de ndices sirve para dar solucin al problema de acceso de archivos. Las estructuras de ndices son estructuras complejas que se utilizan en archivos y en memoria dinmica. Conclusiones El estudiante debera investigar sobre las estructuras de rbol y su relacin con la bsqueda de archivos indizados. Recomendaciones Investigar sobre algoritmos y estructuras para implementar indices.