You are on page 1of 64

Archivos secuenciales indexados

Programacin 4

INTRODUCCION
Indexacin:
Forma de organizar datos de almacenamiento secundario. Su objetivo es organizar de manera efectiva una coleccin de registros para facilitar y agilizar su acceso.

ndices de acceso secuencial


Las estructuras de archivos con archivos indexados pueden verse de dos maneras:
Indexado: El archivo puede ser visto como un conjunto de registros indexado por llave. Secuencia: El archivo puede ser accesado secuencialmente (sin bsqueda), regresando registros ordenados por llave.

Acceso secuencial indexado


Mtodo de organizacin que contenga ambos tipos de enfoques. Un archivo de ndices con estructura de arbol B proporciona un excelente acceso indexado a cualquier registro por medio de una llave, incluso si los archivos son aadidos o eliminados.

Acceso secuencial indexado


Es deseable utilizar este archivo como una parte de una mezcla cosecuencial. Es un procesamiento cosecuencial, se requieren recuperar todos los registros ordenados por llave. Los registros en este sistema de archivos son introducidos de manera secuencial pero no ordenada. La nica manera de recuperarlos sin tener que ordenarlos es a travs del ndice.

Acceso secuencial indexado


Dado un archivo de N registros, se requieren N accesos para este trabajo. Esto es mucho menos eficiente que una lectura secuencial. Se utiliza un ndice por cada tipo de campo que pueda ser objeto de bsqueda. El ndice contiene un puntero a cada registro.

Archivo secuencial indexado


Un archivo secuencial indexado esta bsicamente compuesto de una estructura secuencial, que se llamar archivo maestro y uno o ms archivos ndices. Los archivos ndices, se encargarn de dar un acceso ms rpido a los datos almacenados en el archivo secuencial. La rapidez del archivo depende, comparativamente con otros archivos, del numero de registros.

Archivo secuencial indexado.


Cada registro de un archivo ndice se corresponde con un bloque de otro archivo ndice o con un bloque en el archivo principal. Esto implica que cuando se quiere extraer informacin precedida por un ndice, tiene que cargarse toda la informacin a la que el ndice apunta. El tamao de esta informacin es el tamao del bloque.

Un archivo con organizacin secuencial indexada est formado por:


El archivo secuencial o AREA DE DATOS El AREA DE INDICES Un AREA DE EXCEDENTES (o de overflow)

Area de datos
Es el rea en la que se escriben los registros.

El AREA DE INDICES
Es creada por el sistema al mismo tiempo que se van almacenando los datos. Contiene una tabla que asocia las claves con las direcciones de los registros en el rea de datos.

AREA DE EXCEDENTES
Donde se graban los registros que no tienen sitio en el rea de datos. Los nuevos registros se insertan y quedan enlazados entre s mediante punteros conservando el orden lgico que marca la clave o ndice principal.

USOS
Se utiliza este tipo de organizacin de archivo cuando existe la necesidad tanto de accesar los registros secuencialmente, por algn valor de llave, como de accesarlos individualmente. Un archivo secuencial indexado proporciona la combinacin de tipos de acceso que manejan un archivo secuencial y un archivo relativo o de acceso directo.

En este tipo de organizacin de archivos se dispone de una tabla en que aparecen ordenados secuencialmente los nmeros de la clave del archivo y asociados a cada uno de ellos le da la direccin del registro correspondiente.

Conjuntos en secuencia
Conjunto de registros en un orden fsico ordenados por el valor de su llave conforme son eliminados o aadidos

USO DE BLOQUES
Es muy costoso ordenar un archivo completo despus de insertar o eliminar un registro Una de las herramientas para minimizar esto costos son los bloques

USO DE LOS BLOQUES


Se utilizan los bloques para realizar un ordenamiento de un conjunto en secuencia Cuando se colocan los registros en bloques, los bloques se convierten en la unidad bsica de la entrada y la salida Se lee y se escribe el bloque entero como uno solo

Manteniendo el orden con ayuda de bloques

Suponer que se tienen registros que estn manejados por una llave basada en el ltimo nombre y recolectados juntos de tal manera que se encuentran cuatro en un bloque Tambin se incluyen campos en cada bloque que apuntan a los bloques siguiente y al anterior

Ejemplo
Block 1

ADAMS . . . BAIRD . . . BIXBY . . . BOONE . . .

Block 2

BYNUM . . . CARSON . . . COLE . . . DAVIS . . .

Block 3

DENVER . . . ELLIS . . .

Ejemplo, cont
Se inserta un nuevo registro con la llave CARTER Esta insercin causa que el bloque dos se divida, la segunda mitad de lo que se encontraba originalmente en el bloque 2, es colocado en el bloque 4 despus de la particin

Ejemplo, cont
Block 1

ADAMS . . . BAIRD . . . BIXBY . . . BOONE . . .

Block 2

BYNUM . . . CARSON . . . CARTER . . .

Block 3

DENVER . . . ELLIS . . .

Block 4

COLE . . . DAVIS . . .

Eliminacin
La eliminacin de registro puede causar que un bloque tenga menos de la mitad de elementos y se ocasione un sub-flujo

Sub-flujo
Si un nodo vecino no est lleno, se pueden unir dos nodos liberando uno para su uso posterior Si los nodos vecinos tienen ms de la mitad de los elementos, se pueden redistribuir los registros entre los nodos para hacer la redistribucin

Costos
Los costos asociados con este tipo de ordenamiento son:
Una vez que la insercin es realizada, se requiere ms espacio que con archivo no manejado por bloque debido a la fragmentacin dentro del bloque El orden del registro no es necesariamente fsicamente secuencial a travs del archivo

TAMAOS DE BLOQUE

Introduccin
Un bloque es la unidad bsica para las operaciones de E/S Cuando se leen datos del disco, nunca se lee menos que un bloque Cuando se escriben datos, siempre se escribe menos de un bloque Un bloque es la mxima extensin fsica para una secuencia Se debe pensar en trminos de bloques grandes en donde cada uno contiene muchos registros La eleccin a realizar es elegir el lmite que tendr ese bloque

Consideraciones:
1. El tamao del bloque debe ser tal que pueda contener una gran cantidad de bloques en memoria 2. Cuando se parte o se mezcla un bloque, se desea mantener al menos dos bloques en memoria en cualquier momento

3. Leer o escribir un bloque no debe tomar demasiado tiempo. 4. Incluso si se tiene una ilimitada cantidad de memoria, se desea poner un lmite al tamao del bloque 5. De esta manera no se acaba leyendo el archivo entero para obtener un solo registro

La decisin final probablemente depender de diversos factores

Aadir ndices al conjunto secuencia

Aadir un ndice al conjunto secuencia

Se cuenta con un mecanismo para mantener un conjunto de registros de tal manera que se pueda acceder a ellos secuencialmente basados en el ordenamiento de sus llaves

Aadiendo ndices
Se puede ver cada uno de los bloques como un rango de registros como:

Representacin
Con esta representacin se puede elegir el bloque que contendra la informacin requerida Por ejemplo: si se busca la llave BURNS se encontrara en el segundo bloque

La combinacin de este tipo de ndices con el conjunto secuencia de bloques provee un acceso secuencial completo:
Si se requiere recuperar un registro especfico se consulta el ndice y posteriormente se recupera el bloque correspondiente Si se quiere un acceso secuencial, se comienza con el primer bloque y se lee a travs de las listas ligadas de los bloque hasta que se hayan ledo todas ellas

ndice en memoria
El ndice debe estar en memoria por dos razones:
Se encuentra el registro especfico por medio de una bsqueda binaria en el ndice Como los bloques en el conjunto cambian debido a la separacin, mezcla y redistribucin, el ndice tiene que ser actualizado, actualizar un ndice simple de este tipo funciona bien si el ndice es relativamente pequeo y est almacenado en memoria

ndice muy grande


Si el ndice es muy almacenarse en memoria: grande para

Los rboles B son una estructura adecuada para el manejo de ndices que no pueden almacenarse en memoria El uso de un rbol B para la secuencia de bloques, forma una estructura hbrida conocida como rbol B+

CONTENIDO DE NDICE: SEPARADORES EN LUGAR DE LLAVES

Contenido del ndice


El propsito de un ndice es auxiliar cuando se estn buscando registros con una llave especfica El ndice debe conducir al bloque en el conjunto secuencia que contiene al registro

Uso de separadores
El contenido del ndice solo si conduce al bloque correcto en el conjunto secuencia El ndice no contiene esta informacin, solo contiene el lugar en donde se puede obtener la informacin

Dado esta vista del ndice como un mapa, es fcil reconocer que no se necesitan las llaves en el ndice, lo que se necesitan son separadores Existen muchos potenciales separadores capaces de distinguir entre dos bloques

Si una comparacin entre la llave que se est buscando y cualquiera de los separadores muestra que la llave precede al separador, se busca en el bloque izquierdo, si la llave es mayor que el separador se continan realizando comparaciones en los bloques a la derecha

Si se desean manejar los separadores como entidades de longitud variable se puede ahorrar espacio utilizando el separador ms corto

Por lo tanto, si se utilizan los separadores como un mapa para el conjunto secuencia, se debe decidir si se recupera el bloque de la derecha del separador o el de la izquierda de acuerdo a la siguiente regla:

Resumen
Los registros se organizan en una secuencia basada en un campo clave presentando dos caractersticas, un ndice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento.

El ndice proporciona una capacidad de bsqueda para llegar rpidamente al registro deseado y el archivo de desbordamiento es similar al archivo de registros usado en un archivo secuencial, pero est integrado de forma que los archivos de desbordamiento se ubiquen siguiendo un puntero desde su registro predecesor.

La estructura ms simple tiene como ndice un archivo secuencial simple, cada registro del archivo ndice tiene dos campos, un campo clave igual al del archivo principal y un puntero al archivo principal.

Para encontrar un campo especifico 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 bsqueda continua en el archivo principal a partir de la posicin que indique el puntero.

Cada registro del archivo principal tiene un campo adicional que es un puntero al archivo de desbordamiento. Cuando se inserta un nuevo registro al archivo, tambin se aade al archivo de desbordamiento.

El registro del archivo principal que precede inmediatamente al nuevo registro segn la secuencia lgica se actualiza con un puntero del registro nuevo en el archivo de desbordamiento, si el registro inmediatamente anterior est tambin en el archivo de desbordamiento se actualizar el puntero en el registro.

Para procesar secuencialmente un archivo completo los registros del archivo principal se procesarn en secuencia hasta encontrar un puntero al archivo de desbordamiento, el acceso continua en el archivo de desbordamiento hasta que encuentra un puntero nulo, entonces renueva el acceso donde se abandon en el archivo principal.

Las caractersticas ms relevantes de un archivo indexado, son las siguientes:

a) El diseo del registro tiene que tener un campo, o combinacin de campos, que permita identificar cada registro de forma nica, es decir, que no pueda haber dos registros que tengan la misma informacin en l.

A este campo se le llama campo clave y es el que va a servir de ndice. Un mismo fichero puede tener mas de un campo clave, pero al menos uno de ellos no admitir valores duplicados y se le llama clave primaria. A las restantes se les llama claves alternativas.

b) Permiten utilizar el modo de acceso secuencial y el modo de acceso directo para leer la informacin guardada en sus registros.

El modo de acceso directo se hace conociendo el contenido del campo clave del registro que queremos localizar. Con esa informacin el sistema operativo puede consultar el ndice y conocer la posicin del registro dentro del fichero.

En el modo de acceso secuencial los registros son ledos ordenados por el contenido del campo clave, independientemente del orden en que se fueron grabando (El orden lgico no es igual al orden fsico), debido a que el acceso a los datos se hace a travs del ndice, que para hacer ms fcil la bsqueda de los registros permanece siempre ordenado por el campo clave.

c) Solamente se puede grabar en un soporte direccionable. Ej.: disco magntico. Si esto no fuera as no podra emplear el acceso directo.

Ventajas y desventajas
Ocupa mas espacio en el disco que los ficheros secuenciales, debido al uso del rea de ndices.

2. Tiene tendencia a que aumente el tiempo medio de acceso a los registros, cuando se producen muchas altas nuevas con claves que hay que intercalar entre las existentes, ya que aumenta el rea de overflow.

3. Solo se puede utilizar soportes direccionables.

4. Obliga a una inversin econmica mayor, por la necesidad de programas y, a veces, hardware mas sofisticado.

Bibliografa sugerida:

http://usuarios.lycos.es/cursosgbd/UD1.htm
Introduccin a las bases de datos, Joyanes Aguilar, 2 Ed.

You might also like