Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ARCHIVO ARCHIVO
DATOS INDICE
Carga de archivos de índices en
memoria
• Utilizar un arreglo INDICES[] para copiar la información
del archivo de índices en memoria.
• Las funciones para copiar valores a memoria varían de
acuerdo al lenguaje de programación utilizado.
– Ejm. Memcpy (c++)
ARCHIVO
INDICE[ ]
INDICE
Reescritura del archivo de índices
después de realizar un cambio en
memoria
• Una vez que se haga alguna modificación en INDICES[]
se debe buscar el mecanismo para grabar esos cambios
en el archivo de índices.
• Prever que puede pasar en caso de interrupciones
eléctricas (incongruencia entre archivo de índices e
INDICES[])
– Buscar un método para reconstruir el archivo de índices a partir
del archivo de datos.
– Utilizar alguna bandera para indicar que INDICES[] y archivo
índices están sincronizados
ARCHIVO
INDICE
INDICE[ ]
Agregar nuevos registros
• Si se agregan registros al archivo de datos
debe agregarse un registro a INDICES[]
• Al modificar INDICES[] debe modificarse
también el archivo de índices.
ARCHIVO ARCHIVO
DATOS
INDICE[ ] INDICE
Eliminación de registros
• Utilizar las técnicas ya vistas (borrado
lógico / físico).
• El índice del registro también tiene que ser
afectado, primero eliminando el registro de
INDICES[], luego actualizando el archivo
de índices.
ARCHIVO ARCHIV
DATOS
INDICE[ ]
O INDICE
Actualización de registros
• Hay dos posibles escenarios:
– Modificar un campo que no es llave
• No afecta el índice
• Solo se modifica el archivo de datos.
– Modificar solo el campo llave
• Realizar el cambio en el archivo de datos
• Realizar el cambio en INDICE[]
• Reacomodar INDICE[] si fuera necesario
• Actualizar el archivo de índices con los cambios
• Ejm. Si en el ejemplo se modifica el registro con la llave
4146165, con la nueva llave 58541010 INDICE[] y el
archivo de índices deberían de pasar de:
Se cambia el valor de la
llave y se reacomoda el
archivo de índices. La
posición del registro no
cambia.
Índices Secundarios
• Surgen como una opción cuando se tienen archivos
con grandes volúmenes de información.
• Cuando se busca un libro en una biblioteca le
decimos a la bibliotecaria ¿Tiene el libro de
estructura de datos ? le decimos ¿Tiene el libro
código CD4587986X-23?
• Por lo general no buscamos la información por llaves
primarias, si no por descriptores que pueden ser
nombres o palabras clave. Esto es lo que se conoce
como llaves secundarias.
Indices Secundarios
• Para implementar un índice secundario,
agregamos a la estructura de índice
primario o simple un tercer archivo:
archivo de índice secundario.
Índice
Índice Primario:
Secundario: ordenado
ordenado por código
por ciudad
Datos: en
desorden
Indices Secundarios
• El índice secundario se compone de:
– Clave secundario (un campo que no necesariamente identifica
exclusivamente a un registro y cuyo valor puede repetirse en varios
registros)
– Llave primaria (identificador único de cada registro)
• Algunas operaciones con índices secundarios:
– Agregar registros: también hay que agregar el nuevo registro en el
archivo de índices primario y en el archivo de índice secundario
– Eliminar registros: se debe eliminar del archivo de índices y del
secundario, para ambos casos hay que reacomodar el archivo.
– Actualizar registros:
• Campo no llave: solo afecta archivo de datos.
• Campo llave secundaria: afecta archivo de datos, y archivo de índice secundario.
Este último debe reacomodarse.
• Campo llave primaria: afecta archivo de datos, archivo de índice primario y archivo
de índice secundario. Los dos deben reacomodarse
Desventajas de los índices
secundarios
• Hay que reacomodar el archivo secundario cada
vez que se inserte un nuevo registro al archivo de
datos, aún y cuando ya haya algún registro que
tenga esa llave secundaria.
– Si hay llaves secundarias duplicadas, el campo de
llave secundaria se repite para cada registro en el a.
de índices secundarios. Esto desperdicia el espacio y
dificulta que sea cargado en memoria.
• Una solución puede ser:
– Cambiar la estructura del índice secundario
– Asociar un arreglo de referencias con cada llave
secundaria.
Asociando varias claves
primarias a una llave
• Siguiendo el ejemplo
secundaria
ubicación
codigo
codigo
nombre proveedor
cantidad ubicación
marca
ubicación
Mejorando la búsqueda en
archivos
• Los índices simples son efectivos con un volumen de
información manejable.
• Cuando el volumen de información es demasiado grande, no se
puede copiar el índice en memoria.
• Mantener un índice simple en disco no es efectivo:
– Ingresos constantes
– Al eliminar registros hay que eliminar espacios
• Los registros del índice no pueden ser borrados lógicamente
– Las búsquedas binarias requieren demasiados accesos
• Varios I/O en disco para encontrar un registro
• Con el fin de mejorar el desempeño en lo que respecta al
manejo de índices, introducimos el manejo de árboles.
60
50 80
Árboles
40 100 Figura 3
20
Figura 1
100
60 80
40 20 70 50
Figura 5
Figura 2
1 2 3 4 5
Árbol binario
Árbol no binario
Árbol binario de
búsqueda
Montículo
Árbol balanceado
• 19 de mayo – 26 de mayo
– Prueba Primer Parcial
• 19 de mayo
Actividades
Pendientes – Examen I Parcial Presencial TGU
y SPS
• 19 de mayo
– Tarea Formativa 1 / Wiki / Tarea
Formativa 3
• 20 de mayo
– Tarea Formativa 4
• 21 de mayo
– Tarea # 4
• 22 de mayo
– Proyecto de Clase