ESTRUCTURAS INDEXADAS

Anuncio
El concepto fundamental de utilizar este tipo de estructuras es el usar el
valor de la llave para calcular la dirección física del registro. Estas técnicas
suplementan la colección de datos utilizando árboles para guiar el acceso hasta
los registros solicitados.
Los índices apoyan las aplicaciones que accesan selectivamente registros
individuales, en lugar de buscar a través de toda la colección de registros en
secuencia. Un campo es utilizado como un campo de índice.
Árboles de búsqueda binarios como índices
Los nodos de un árbol de búsqueda binarios están arreglados de tal forma
que la búsqueda de una llave en particular prosigue hacia abajo sobre alguna
rama del árbol. El valor de la llave buscada es comparado contra el valor de la
llave de la raiz del árbol: si este es menor que el valor de la raiz, la búsqueda
prosigue hacia abajo por el subarbol izquierdo; si es mayor que el valor del la raiz,
la búsqueda prosigue hacia abajo sobre el subarbol derecho. La misma lógica es
aplicada en cada nodo encontrado, hasta satisfacer la búsqueda o hasta
determinar que la llave buscada no está incluida en el árbol.
El valor de la llave está asociado con campos de información para formar
un registro. Almacenar estos campos de información en un árbol binario de
búsqueda podría hacer muy grande al árbol. Para acelerar las búsquedas y reducir
el tamaño del árbol, los campos de información de los rgistros normalmente
quedan organizados en archivos y son almacenados por separado, en dispositivos
de almacenamiento secundario tales como los discos magnéticos.
índices
Un índice es una colección estructurada de valores de llaves y direcciones,
por pares; el propósito principal del índice es facilitar el acceso hacia una
colección de registros. Un índice se dice que es denso si contiene una pareja de
valores de llave y dirección para cada registro de la colección. Un índice que no es
denso es llamado algunas veces disperso.
Es un archivo a parte del maestro. Cada registro en el índice contiene
únicamente dos datos: una llave de registro y una dirección de almacenamiento.
No se pueden duplicar los datos en el archivo maestro.
Para encontrar un registro específico cuando el archivo es almacenado bajo
una organización indexada, se busca primero el índice para hallar la llave del
registro deseado.
Cuando se le encuentra, se observa la dirección de almacenamiento
correspondiente y a continuación el programa accesa el registro directamente.
Este método usa un examen secuencial del índice, seguido del acceso directo al
registro apropiado. El índice ayuda a hacer más rápida la búsqueda en
comparación con el archivo secuencial pero es más lento que el direccionamiento
directo.
Existen diferentes técnicas para hacer direccionamientos indexados, algunos
de estos son:





Organización indexada directa
Organización indexada secuencial
Árboles de busqueda de m-vías
Árboles B
Árboles B+
Indexación
Una manera efectiva de organizar una colección de registros, cuando existe
la necesidad tanto de acceder los registros secuencialmente, por algún valor de
llave, como de accesarlos individualmente, con esa misma llave, es la
organización de archivos secuenciales indexados. Un archivo secuencia indexado
proporciona la combinación de tipos de acceso que manejan un archivo secuencial
y un archivo relativo.
Existen algunos métodos para estructurar las porciones tanto de índices
como de datos secuenciales, de un archivo secuencial indexado. El método más
común es construir el índice como un árbol de valores de llave. El árbol es
normalmente una variante del árbol-B. El otro método común es el de construir el
índice basándose en la disposición física de los datos almacenados.
El método de indexación trata el espacio libre como si fuera un archivo y
utiliza una tabla índice. Por razones de eficiencia, el índice debe trabajar con
secciones de tamaño variable mejor que con bloques. De este modo, habrá una
entrada en la tabla para cada sección libre del disco. Este procedimiento ofrece un
soporte eficaz para todos los métodos de asignación de archivos.
Aplicaciones
Debido a su capacidad para manejar tanto acceso secuencial como directo,
la organización secuencial indexada es utilizada frecuentemente para manejar
archivos que son utilizados para procesamiento tanto por lote como interactivo.
Sistemas de Gestión de Archivos (File Management Sytems)
Un sistema de gestión de archivos es aquel sistema software que provee
servicios a los usuarios y aplicaciones en el uso de archivos. El único camino que
tiene el usuario o la aplicación tiene para acceder a los archivos es a través de un
sistema de gestión de archivos. Esto revela para el usuario o programador la
necesidad de desarrollar software de propósito especial para cada aplicación y
provee al sistema un medio de controlar su ventaja más importante.
Estos son los objetivos de un sistema de gestión de archivos:
1. Cumplir con las necesidades de gestión de datos y con los requisitos del
usuario, que incluye el almacenamiento de, datos y la capacidad de
ejecutar las operaciones en la lista precedente.
2. Garantizar, en la medida de lo posible, que el dato en el archivo es válido.
3. Optimizar el rendimiento, ambos desde el punto de vista del sistema en
términos de productividad global, y como punto de vista del usuario en
tiempos de respuesta.
4. Para proveer soporte de E/S para una variedad de tipos de dispositivos de
almacenamiento.
5. Para minimizar o eliminar la posibilidad de pérdida o destrucción de datos.
6. Para proveer un conjunto estándar de rutinas de E/S.
Arquitectura de los sistemas de Archivos
Diferentes sistemas van a tener diferente organizaciones pero estas
organizaciones son razonablemente representativas. A un nivel más bajo los
manejadores de dispositivos (device drivers) se comunican directamente con los
dispositivos de periféricos o con sus canales o controladores. Un controlador de
dispositivos es responsable de iniciar las operaciones de E/S en un dispositivo y
procesar la terminación de una petición de E/S. Para operaciones de archivos, el
controlador típico de dispositivos son discos y unidades de cinta. Los manejadores
de los dispositivos son usualmente considerados como parte del sistema
operativo.
El próximo nivel está referido con el nombre de sistema de archivos
básicos, o nivel de E/S física. Esta es la interfase primaria con el ambiente fuera
del sistema de la computadora. Este nivel trata con bloques de datos que son
intercambiados con sistemas de disco o cinta. De este modo. se preocupa de
ubicar dichos bloques en el dispositivo de almacenamiento secundario y del
almacenamiento intermedio de los mismos en memoria principal. Este nivel no
comprenderá el contenido de los datos o la estructura de los archivos implicados.
El sistema de archivos básicos es usualmente considerado como parte del sistema
operativo.
El supervisor básico de E/S es el responsable de la iniciación y terminación
de todas las E/S con archivos. En este nivel, hay unas estructuras de control que
se encargan de la entrada y de salida con los dispositivos la planificación y el
estado de los archivos. El supervisor básico de E/S se encarga de seleccionar el
dispositivo donde se va a realizar la E/S con los archivos dependiendo del archivo
seleccionado. También se encarga de la planificación de los accesos a disco y
cinta para optimizar el rendimiento. En este nivel se asignan los buffers de E/S y
se reserva la memoria secundaria. El supervisor básico de E/S es parte del
sistema operativo.
La E/S lógica habilita a los usuarios y aplicaciones de acceder a registros.
Así mientras el sistema de archivos básico trabaja con bloques de datos. el
modulo lógico de E/S trabaja con el archivo de registros. La E/S lógica provee una
capacidad de E/S de registro de propósito general y mantiene los datos básicos
acerca de los archivos.
El nivel del sistema de archivo mas cercano de usuario es usualmente el
método de acceso (access method). Provee una interfase estándar entre
aplicaciones y los archivos del sistema a dispositivos que guarden datos. Los
diferentes métodos de acceso reflejan los diferentes estructuras de datos y
diferentes maneras de acceder y procesar el dato.
Organización y acceso a archivos
En esta parte vamos a usar el término organización de archivos para
referirnos a la estructura lógica de los registros determinada por la manera en que
se accede a ellos. La organización física del archivo en almacenamiento
secundario depende de la estrategia de agrupación y de la estrategia de
asignación de archivos.
Para seleccionar una organización de archivos hay diversos criterios que
son importantes:
1.
2.
3.
4.
5.
Acceso Rápido para recuperar la información
Fácil actualización
Economía de almacenamiento
Mantenimiento simple.
Fiabilidad para asegurar la confianza de los datos.
Pilas
La forma menos complicada de organización de archivos puede
denominarse la pila. Los datos se recolectan en el orden en que llegan. Cada
registro consiste en una ráfaga de datos. El propósito de la pila es simplemente
acumular la masa de datos y guardarlo.
Como no hay estructura para el archivo de la pila. el acceso a registro es
por búsqueda exhaustiva..Si se quiere todos los registros que contienen un campo
particular o que tienen un valor determinado para ese campo, debe buscarse en el
archivo entero.
Los archivos de pilas se aplican cuando los datos se recogen y almacenan
antes de procesarlos o cuando no son fáciles de organizar. Este tipo de archivo
usa bien el espacio cuando los datos almacenados varían en tamaño y en
estructuras. Este tipo de archivos no se adapta a la mayoría de las aplicaciones.
Archivos Secuenciales
La forma más común de estructura de archivo es el archivo secuencial. En
este tipo de archivo, un formato fijo es usado para los registros. Todos los
registros tienen el mismo tamaño, constan del mismo número de campos de
tamaño fijo en un orden particular. Como se conocen la longitud y la posición de
cada campo, solamente los valores de los campos se necesitan almacenarse; el
nombre del campo y longitud de cada campo son atributos de la estructura de
archivos.
Un campo particular, generalmente el primero de cada registro se conoce
como el campo clave. El campo clave identifica unívocamente al registro. así, los
valores de la clave para registros diferentes son siempre diferentes.
Los archivos secuenciales son típicamente utilizados en aplicaciones de
proceso de lotes y son óptimos para dichas aplicaciones si se procesan todos los
registros. La organización secuencias de archivos es la única que es fácil de usar
tanto en disco como en cinta.
Para las aplicaciones interactivas que incluyen peticione s o actualizaciones
de registros individuales, los archivos secuenciales ofrecen un rendimiento pobre.
Normalmente un archivo secuencial se almacena en bloques, en un orden
secuencial simple de los registros. La organización física del archivo en una cinta
o disco se corresponde exactamente con la ubicación lógica del archivo. En este
caso, el procedimiento para ubicar los nuevos registros en un archivo de pila
separado, llamado archivo de registro (log file) o archivo de transacciones.
Periódicamente, se realiza una actualización por lotes que mezcla el archivo de
registro con el archivo maestro para producir un nuevo archivo en secuencia
correcta de claves.
Archivos Secuenciales indexados
Un método popular para superar las desventajas de los archivos
secuenciales es el del archivo secuencial indexado. El archivo secuencial
indexado mantiene las características básicas de los archivos secuenciales: los
registros están organizados en una secuencia basada en un campo. Dos
características se añaden: un índice del archivo para soportar los accesos
aleatorios y un archivo de desbordamiento ( overflow ). El índice provee una
capacidad de búsqueda para llegar rápidamente a las proximidades de un registro
deseado. El archivo de desbordamiento (overflow) es similar al archivo de registro
usado en un archivo secuencial, pero esta integrado de forma que los registros del
archivo de desbordamiento se ubican en la dirección de un puntero desde su
registro precedente. En la estructura secuencial indexada mas simple, se usa un
solo nivel de indexación. El índice, en este caso, es un archivo secuencial simple.
Cada registro del archivo índice tiene dos campos: un campo clave, que es el
mismo que el campo clave del archivo principal y un puntero al archivo principal.
Para encontrar un campo específico se busca en el índice hasta encontrar el valor
mayor de la clave que es igual o precede al valor deseado de la clave. La
búsqueda continua en el archivo principal a partir de la posición indicada por el
puntero.
Archivos Indexados
Los archivos secuenciales indexados retienen la limitación del archivo
secuencial: la eficacia en el procesamiento se limita al basado en un único campo
del archivo. Cuando es necesario buscar un registro basándose en algún otro
atributo distinto del campo clave ambas formas de archivo secuencial no son
adecuadas.
En algunas aplicaciones esta flexibilidad es deseable. Para alcanzar esta
flexibilidad, se necesita una estructura que utilice múltiples índices, uno para cada
tipo de campo que pueda ser objeto de la búsqueda.
Se suelen utilizar dos tipos de índices. Uno índice exhaustivo contiene una
entrada por cada registro del archivo principal. Otro índice parcial contendrá
entradas a los registros donde esté el campo de interés. Con registros de longitud
variable, algunos registros no contendrán todos los campos.
Los archivos indexados son muy utilizados en aplicaciones donde es crítica
la oportunidad de la información y donde los datos son rara vez procesados de
forma exhaustiva.
Organización de archivos secuenciales indexados
Una manera efectiva de organizar una colección de registros, cuando existe
la necesidad de acceder los registros secuencialmente, por algún valor de llave,
como de accesarlos individualmente, con esa misma llave, es la organización de
archivos secuenciales indexados. Un archivo secuencial indexado proporciona la
combinación de tipos de acceso que manejan un archivo secuencial y un archivo
relativo.
Esta organización está diseñada para utilizar la combinación de la
organización relativa y la secuencial, obteniendo la ventaja de poder acceder a los
registros en forma secuencial y relativamente de manera directa.
Como se pude apreciar la organización de archivos secuenciales indexados
es efectiva para satisfacer la necesidad tanto de acceder a los archivos en forma
secuencial como de forma directa mediante algún valor de llave.
Para poder estructurar esta organización podemos utilizar uno de los
métodos más comunes que es el de construir el índice como un árbol de valores
llave. Otro método común es el de construir el índice basándose en la disposición
física de los datos almacenados.
Esto nos da como consecuencia que nuestras aplicaciones crezcan,
pudiendo ofrecer esta organización aplicaciones tanto en procesamiento por lotes
como interactivos.
Para poder instrumentar esta organización existen algunas técnicas como lo son:
Estructuras de árbol B +
Es una de las técnicas más populares para instrumentar esta organización.
El árbol B+ consta de dos partes: la parte índice que consta de los nodos
interiores y el conjunto secuencia que consta de las hojas del árbol.
La parte índice se usa para direccionar la posición de algún registro en
particular, mientras que el acceder secuencialmente a las hojas (conjunto
secuencia) podemos tener acceso a todo el archivo en general.
Ahora bien los valores de la llave dentro del índice solo existen con el
propósito de dirigir el acceso al conjunto secuencia.
Ahora mostramos el esquema de un árbol B+
La composición de una hoja es como sigue:
Un nodo puede utilizar desde 2 hasta n ligas, más no podemos manejar una sola,
ésto quiere decir que si un nodo maneja tres ligas podemos inhabilitar solo una.
Manipulación de un árbol - B+
La inserción de nuevos valores de llave en un árbol B+ se realiza más o
menos de la misma manera como son insertados en un árbol - B clásico. Cuando
un nodo hoja es particionado en dos nodos, una copia del valor de llave de menor
orden, del nodo que se encuentra a la derecha, es promovida para ser el valor de
llave separador en el nodo padre. El nuevo nodo también debe ser insertado en la
lista ligada del conjunto de secuencias.
Búsqueda de árboles B+
Una búsqueda directa en un árbol B+ debe terminar en un nodo del
conjunto de secuencias. Si existe una llave en el índice que corresponda a la llave
buscada, el apuntador precedente es seguido hasta que, eventualmente, la hoja
correcta es alcanzada. No todas las llaves de la parte de índices necesitan
aparecer también en el conjunto de secuencias. Una llave pudo haberse eliminado
del conjunto secuencias, cuando su correspondiente registro fue suprimido del
conjunto de registros, pero la llave pudo haber sido retenida en la parte de índices
del árbol B+, con el propósito de guiar el acceso al conjunto de secuencias.
Acceso Secuencial
Una solicitud para accesar datos en orden secuencial es atendida
accesando los bloques de datos en orden secuencial. Los bloques de datos son el
conjunto de secuencias; son lógicamente consecutivos pero no están
necesariamente físicamente consecutivos.
Esquema Físico De Índices
Otro método para implantar el concepto de archivo secuencial indexado,
consiste en basar la estructura de índices más en las características físicas de
almacenamiento que en la distribución lógica de valores de las llaves. El índice
puede tener varios niveles, tal como un nivel de índice de pista. El archivo de
datos es generalmente instrumentado como dos archivos: un área primaria y un
área de sobrecarga.
La figura siguiente ilustra este tipo de estructura para el archivo secuencial
indexado de datos de animales.
Supongamos que cada cilindro del dispositivo de almacenamiento tiene
cuatro pistas. Este archivo en particular tiene seis cilindros asignados al área
primaria de datos. La primera pista (número 0) de cada cilindro contiene un índice
a las llaves de los registros en ese cilindro. Las entradas a este índice son de la
forma:
Acceso a registros de datos
Cuando se recibe una solicitud de acceso a un registro en particular,
digamos el registro con valor de llave Borrego, el índice maestro es examinado
primero. Dado que Borrego precede a Lince, el apuntador desde Lince es seguido
hasta el cilindro índice. Dado que Borrego precede a Elefante, el apuntador desde
elefante es seguido hasta la pista 0 del cilindro 1. Dado que Borrego le sigue a
Ballena es seguido a la pista 2, la cual es examinada secuencialmente hasta
encontrar a Borrego y disponer de él, o hasta determinar que no existe. Una
solicitud para accesar los datos en orden secuencial es atendida, accesando los
cilindros y pistas del archivo primario de datos, en esa secuencia física.
Inserción de Registros
En el ejemplo anterior el área primaria de datos fue creada con 40% de
espacio libre, con el objetivo de poder realizar inserciones y supresiones del
archivo.
Las solicitudes:
Insertar Ardilla
Insertar Águila
Son fáciles de lograr. Solamente la pista de datos 1 del cilindro 1 es
afectada, por lo que el contenido resultante es el siguiente:
La solicitud de insertar armadillo es
un poco mas difícil. La búsqueda en la estructura índice revela que armadillo
debería ubicarse en la pista 1, del cilindro 1, pero esta pista está llena. Esta
condición necesita del uso de un área de sobrecarga de datos en un archivo
separado con respecto al área primaria de datos, pero está apuntadas por las
entradas en el área primaria de datos.
Archivo De Sobrecarga De Datos
Descargar