29
MIA - GRUPO 5 UNIDAD 2

MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

Embed Size (px)

Citation preview

Page 1: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

MIA - GRUPO 5UNIDAD 2

Page 2: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

TEMAS A TRATAR

INDEXACION O INDIZACION INDICES SECUNDARIOS LISTAS INVERTIDAS

Page 3: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

INDEXACIÓN O INDIZACIÓN

Page 4: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

¿Porqué usar índices?

•Si el archivo no está ordenado el único método de búsqueda posible es secuencial, lo cual no resulta ni eficiente ni practico en muchos casos.

•Si el archivo está ordenado puede aplicarse una búsqueda binaria, pero en cualquier caso puede resultar costosa, y si el fichero recibe muchas altas y bajas no resulta factible mantenerlo ordenado.

•Pasar los datos de disco a memoria para ser ordenados es impracticable si el archivo es excesivamente grande.

Page 5: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICE • Un índice es una estructura de datos (en memoria) que permite el

acceso a la información almacenada en un archivo imponiendo algún tipo de orden.

• El índice mantiene en memoria:

• Un dato que identifica cierta información.

• La dirección física (o lógico) del registro en el fichero que guarda la información completa.

• Un mismo archivo puede tener asociados distintos índices, dependiendo del campo asociado al índice se denomina INDICE PRIMARIO ó INDICE SECUNDARIO.

Page 6: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

INDICE PRIMARIO Un índice simple o primario es aquel que guarda únicamente la llave primaria, identificando de forma única a un registro almacenado en un fichero. El índice guarda el campo clave y la dirección física de fichero. El fichero guarda los registros sin orden establecido.

Page 7: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

• El índice de un archivo secuencial indexado está mezclado con los datos del archivo. Normalmente, la mayoría de los bloques son usados para los datos, pero algunos son usados para el índice.

• La principal ventaja de un archivo secuencial indexado es que la búsqueda binaria del archivo ordenado puede ser reemplazada por un árbol de búsqueda de índices, siendo ésta una solución más eficiente que las búsquedas binarias.

Page 8: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

Operaciones Crear los archivos vacíos originales de índices y datos :

Tanto el archivo de índice como el archivo de datos se crean como archivos vacíos, con registros de encabezado y nada más.

Page 9: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

Crear archivo de índices:

Recorrer el fichero de datos secuencialmente e ir extrayendo de cada registro el campo clave.

Crear la dupla <clave, dir_fichero>, siendo dir_fichero la dirección física del fichero donde se encuentra en registro con dicha clave.

Insertar dicha dupla en el índice en memoria En este momento es conveniente guardar el índice en fichero para mantener la integridad del sistema. Se hace un recorrido secuencial del índice y se guarda la dupla <clave, dir_fichero> en el fichero de índices.

Page 10: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

CARGA DEL ARCHIVO DE ÍNDICES EN MEMORIA

En un principio la aplicación necesita leer a memoria la totalidad del archivo de índices (duplas <clave, dir_regDatos>) usando diversos tipos de estructuras según la complejidad y cantidad de los registros, para así realizar de manera optima la navegación en los registros.

La estructura más utilizada para el manejo de los índices en memoria son los Arboles B+, debido al bajo tiempo de realización de las operaciones de búsqueda, inserción, actualización y eliminación además no requiere muchos recursos para el reordenamiento de los datos y es muy eficiente realizando búsquedas directas y secuenciales.

Page 11: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

CARGA DEL ARCHIVO DE ÍNDICES EN MEMORIA

________________________________________________________

Archivo de Índices

Page 12: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

MODIFICACIÓN DE ÍNDICES EN MEMORIA

El fichero de datos siempre permanece actualizado, pero el fichero de índices puede no estarlo debido a una modificación de los datos en memoria.

Esto puede causar inconsistencias en la información si otra aplicación hace uso del archivo de índices no actualizado o por un cierre inesperado de la aplicación

Page 13: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

MODIFICACIÓN DE ÍNDICES EN MEMORIA

Esto puede solucionarse con la utilización de un registro flag al inicio del archivo de índices el cual indica si la información es idéntica tanto en memoria como en el archivo

___________________________________

1 – Archivo de índices Actualizado0 – Archivo de Índices NO Actualizado

Page 14: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

AÑADIR NUEVO REGISTRO

Añadir un nuevo registro al fichero de datos también implica añadir una nueva entrada al índice:

•Se extrae la clave del registro a insertar.

•Se busca una posición válida para insertar el registro en el fichero de datos y se inserta en registro en dicha posición.

•Se insertan los valores <clave, dir_fichero> en el índice en memoria.

Page 15: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

Eliminar un registro en un fichero de datos también implica eliminar la entrada correspondiente en el índice:

•Se busca la clave del dato a borrar en el índice, para conocer su localización en fichero.

•Según las características y disposición de los datos en fichero se utilizará un método de borrado u otro.

•Se elimina en memoria la dupla <clave, dir_fichero> del índice.

Page 16: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

Actualizar registros del archivo de datos esta entra en dos categorías: o La actualización cambia el valor del campo de llave: esta clase de actualización puede traer consigo un reacomodo del archivo de índices, así como del de datos. Puede implementarse un método de eliminar y agregar, y dar al usuario del programa la impresión de que simplemente está cambiando un registro. o La actualización no afecta el campo de llave: aquí si se requiere reacomodo del archivo de datos, pero no del archivo de índices. Si el tamaño del registro no cambia, o si disminuye por la actualización, el registro puede escribirse directamente en el espacio que tenía, pero si aumenta por la actualización, se tendrá que encontrar una nueva entrada para el registro.

Page 17: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICES SECUNDARIOS

Page 18: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICES SECUNDARIOS

No es natural solicitar un dato por su clave En su lugar se utiliza normalmente un campo

mas fácil de recordar 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)

Page 19: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICES SECUNDARIOS

Los índices secundarios permiten ordenar la tabla en un orden diferente al dado por el campo llave.

Su principal característica es la utilización de direccionamiento simbólico (la clave proporciona la clave primaria del registro, y no su dirección física, ni relativa, y el sistema emplea la clave primaria para localizar ese registro), en definitiva, emplea punteros indirectos.

Los ficheros que usan este tipo de direccionamiento reciben el nombre de ficheros invertidos.

Page 20: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

Existen dos tipos de ficheros invertidos: Los ficheros totalmente invertidos y los ficheros parcialmente invertidos.

En los Ficheros Totalmente Invertidos de una clave secundaria se obtienen todas las primarias relacionadas. Ej.:

ÍNDICES SECUNDARIOS

Page 21: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICES SECUNDARIOS

Los Ficheros Parcialmente Invertidos se utilizan para evitar que el índice crezca mucho. Cuando buscamos por medio de una clave secundaria, no aparecen todas las claves primarias relacionadas a ella, sino que sólo aparece la primera clave primaria, y dentro del fichero de datos Existen punteros a los registros de igual clave secundaria. Estos ficheros también son llamados Ficheros Multilista. La técnica más usada es la de usar "punteros empotrados" en el fichero de datos. Los ficheros de este tipo son los más utilizados, empleando para implementar el índice un árbol tipo B.

Page 22: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICES SECUNDARIOS (MULTILISTA)

Supongamos que se tiene un archivo en el cual cada registro almacena la siguiente información:

Se tienen los datos de seis personas:

Nombre Profesión Categoría

Page 23: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICES SECUNDARIOS(MULTILISTA)

Page 24: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICES SECUNDARIOS (OPERACIONES)

Adición de Registros

Implica reacomodar y añadir nuevas entradas en el fichero de datos, índice primario e índices secundarios

Bajo costo si el índice está en memoria principal

La claves duplicadas implican un reordenamiento de 2º nivel de acuerdo a la clave primaria que referencian

Page 25: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

ÍNDICES SECUNDARIOS (OPERACIONES)

Eliminación de Registros

Más complicada: eliminar referencia en índice primario + referencias en índices secundarios.

La eliminación de un registro puede implicar el reacomodo de los registros restantes, para cerrar el espacio abierto dejado por la eliminación.

Alternativa, sólo borrar del primario• Beneficio: no hay reacomodo por cada borrado• Costo: se sigue ocupando el espacio

Page 26: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

Actualización- Cambia la llave secundaria

Se debe reacomodar el índice secundario puede ser relativamente costosa.

- Cambia la llave primariaSe debe cambiar la ref. en el reg. de índice secundarioSi existen reg. repetidos, se deben reclasificar localmente el índice secundario

- Cambia el resto del registro

- Índices secundarios - (operaciones)

Page 27: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

Archivos donde una llave secundaria lleva a un conjunto de una o más llaves primarias.

Característica:En estas se trabaja retrocediendo de una llave secundaria a la llave primaria y al registro mismo.

LISTAS INVERTIDAS

Page 28: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

VENTAJASAl agregar o insertar una llave secundaria, únicamente se reacomoda la lista asociada a la llave primaria. DESVENTAJASEl archivo demuestra menos localidad. Esto quiere decir que es menos probable que los registros asociados estén físicamente asociados.

LISTAS INVERTIDAS

Page 29: MIA - GRUPO 5 UNIDAD 2. TEMAS A TRATAR IINDEXACION O INDIZACION IINDICES SECUNDARIOS LLISTAS INVERTIDAS

EJEMPLOLISTAS INVERTIDAS