Unidad 11. Estructuras externas: Archivos

Anuncio
Unidad 11
ARCHIVOS
Objetivos
n
n
n
n
n
Entender la función del
almacenamiento externo como
medio para solucionar el
problema de guardar grandes
cantidades de datos.
Conocer y comprender el
concepto de archivo o fichero.
Comprender los conceptos
relacionados con la nueva
estructura de datos.
Distinguir las características
especiales de las estructuras de
datos externas, y sus limitaciones
y ventajas frente a las internas.
Conocer y aplicar las
operaciones de manejo de
archivos (creación, lectura,
escritura,...).
n
n
n
n
Aprender las diferencias entre
los distintos tipos de
organización de archivos, y ser
capaz de elegir la más idónea
en cada caso.
Saber diferenciar los distintos
modos de acceso a los
archivos según la organización
de éstos.
Aplicar los conocimientos
anteriores para el diseño y
construcción de programas
que usen archivos.
Integrar el uso de archivos en
la construcción de
aplicaciones.
2
1
Contenidos
1. INTRODUCCIÓN
2. GENERALIDADES
3. TIPOS DE FICHEROS
3.1. Según su función
3.2. Según su organización
4. MODOS DE ACCESO
4.1. Acceso secuencial
4.2. Acceso directo
5. OPERACIONES SOBRE
FICHEROS
Creación, Recorrido, ordenación,
Actualización, Partición, Fusión,
Borrado.
6. OPERACIONES SOBRE
REGISTROS
Consulta, Modificación,
Supresión, Inserción.
7. FICHEROS DE
ORGANIZACIÓN
SECUENCIAL
Creación, Recorrido, Consulta,
Partición, Fusión Actualización,
Actualización interactiva.
8. FICHEROS DE
ORGANIZACIÓN DIRECTA
8.1. Modos de direccionamiento
8.2. Transformaciones calculadas de
claves o Hashing
8.3. Tratamiento de sinónimos
8.4. Ventajas e inconvenientes de la
organización directa
9. FICHEROS DE
ORGANIZACIÓN
SECUENCIAL INDEXADA
10. INCONVENIENTES DE LAS
ESTRUCTURAS DE DATOS
ARCHIVOS
3
Introducción
n
Estructuras de datos arrays, problemas:
q
q
q
n
Aplicaciones
triviales
Limitación en almacenamiento de datos (memoria
principal).
Introducción de datos cada vez que se ejecuta el
programa.
Tiempo de vida de los datos limitado (memoria volátil).
Solución de estos inconvenientes: ARCHIVOS
q
q
Pueden tratar grandes cantidades de datos (memoria
secundaria).
Almacenamiento permanente (memoria no volátil).
Aplicaciones mucho
más complejas
4
2
ARCHIVOS o FICHEROS
n
Definición:
• Los registros tienen formatos
preestablecidos y número finito e
indeterminado
“Es una estructura externa de datos, constituida
por un conjunto de elementos todos del mismo
tipo, organizados en unidades de acceso,
llamadas registros.”
n
Características:
q
q
q
q
Residen en soporte de almacenamiento externo.
La información se almacena de forma permanente.
Alta capacidad de almacenamiento de datos.
Independencia de la información que guardan
respecto a los programas que los usan.
5
REGISTROS
n
n
Registro lógico : cada uno de los
componentes de un archivo.
Registro físico o bloque: fragmento de
un fichero que el sistema puede
transferir, en una sola operación de E/S,
entre la memoria principal y el
dispositivo de almacenamiento.
• El tamaño del bloque depende del
procesador y del S.O.
• La cantidad de registros lógicos de un
bloque se llama Factor de Bloqueo.
6
3
Contenido de los registros
n
n
n
Campo: Cada uno de los elementos de un registro.
Subcampo: Cada uno de los elementos de un campo.
Clave: campo que identifica unívocamente a un registro.
q
q
Puede ser uno o varios de los campos de información del registro.
Puede ser creada con independencia de la información del registro.
Longitud de los registros
n
Fija: todos los campos tienen longitud fija.
q
n
Por ejemplo: ficheros binarios en C.
Variable: algún campo tienen longitud variable.
q
Por ejemplo: ficheros de texto en C.
Nombre
Externo: nombre con el que lo reconoce el S.O.
Interno: Variable con la que lo referencia el programa
que lo usa.
7
Tipos de ficheros
n
Según su función o uso que se hace de ellos:
q
Permanentes: Su información varía poco en el tiempo
n
n
n
q
q
n
De situación: estado actual de la información (F. maestros)
De constantes: Consultas. Baja o nula modificación (Códigos
Postales).
Históricos: Nunca se modifican (Rentas de años anteriores)
De movimientos: información para actualizar ficheros
permanentes (compra-ventas diarias).
De trabajo: Creados por el sistema, compilador,...(.bak).
Según su organización:
q
q
q
Secuencial
Directa
Secuencial-indexada
Fichero Secuencial
Fichero Directo
Fichero Secuencial-Indexado
8
4
Modos de accesos
n
Acceso secuencial:
Para acceder a un registro en particular deben ser accedidos
todos los registros que le preceden.
Este modo de acceso se permite en soportes direccionables
o no.
q
q
n
n
Por ejemplo: Archivo de canciones almacenadas en cinta
magnética, no tiene más remedio que organizarse de manera
secuencial y accederse de igual forma.
Acceso directo:
Permite acceder a un registro directamente, sin tener que
acceder antes a todos los registros que le preceden.
Sólo se permite este modo de acceso en soportes
direccionables, disquetes, discos duros, etc.
El acceso puede realizarse bien por el número de registro o
por la clave de acceso.
q
q
q
n
Por ejemplo: Archivos almacenados en nuestro Pen Drive.
9
Operaciones sobre ficheros
Operaciones que atañen al fichero completo
n Creación:
q
Consiste en:
n
n
q
Normalmente se requiere establecer:
n
Forma en que se almacena: texto o binario.
Tipo de organización: Secuencial, Directa o Secuencialindexada
n
Modo de acceso: Secuencial o Directo.
n
q
Darle nombre
Escribir registros iniciales
Si los datos provienen de teclado
Crear el fichero con programa independiente
10
5
Operaciones sobre ficheros
n
Recorrido:
q
n
n
Ordenación
Actualización
q
n
Descomponer un fichero en varios.
Fusión
q
n
Proceso para altas, bajas o modificaciones (sincronización
de ficheros).
Partición
q
n
Lectura secuencial de todos los registros para un
determinado proceso.
Obtener un fichero a partir de dos o más ficheros de idéntica
estructura.
Borrado
q
Eliminación física del fichero.
11
Utilización de ficheros
n
Una vez creado el fichero, para usarlo:
Realizar apertura:
q
q
Comprobar su existencia y prever caso de error
La apertura:
n
n
n
Establece vínculo NombreInternoó NombreExterno.
Bloquea el fichero en exclusividad para su uso.
Crea buffer de memoria intermedia.
q
q
q
q
n
El apuntador señala al primer registro y se mueve en cada acceso (registro
Hay que indicar si se abre para leer, escribir o ambas cosas.
activo)
Procesar:
q
n
para comunicaci ón entre memoria secundaria, memoria central y programa.
A él se pasa un registro físico en cada acceso.
Realizar las operaciones previstas.
Cierre:
q
q
q
q
Desvincula NombreInternoó NombreExterno.
Desbloquea el fichero.
Vacía el buffer.
Coloca marca de fin de fichero.
fichero
12
6
Operaciones sobre registros
n
Consulta:
q
n
Localización de uno o varios registros.
Modificación:
q
q
Cambio de contenido de uno o varios de los campos de un
registro que no sean clave.
Para modificar:
n
n
n
Supresión:
q
Por marca
n
q
Poner marca de obsoleto, pero el registro es accesible.
Supresi ón real
n
n
Búsqueda y lectura previa.
Escritura de nuevos datos.
Registro inaccesible o eliminación por sobreescritura de otro
registro.
Inserción de un registro:
13
Ficheros secuenciales
n
Características:
q
q
Pueden crearse en todo tipo de soporte de almacenamiento.
Los registros se almacenan como una lista lineal.
n
n
q
El acceso se realiza según el soporte de almacenamiento.
n
n
Si el soporte es direccionable pueden almacenarse como fichero
Secuencial Encadenado (No tienen por qué estar consecutivos en
memoria ðlista enlazada)
Ventajas:
q
q
q
n
Ocupan posiciones consecutivas de memoria.
En orden de entrada.
Fácil localización ð Conocer campo de búsqueda.
Eficiente con tasa de actividad alta.
Eficaz aprovechamiento del espacio de almacenamiento (sin
huecos libres)
Inconvenientes:
q
q
q
Consulta lenta si son grandes.
Procesar todo el archivo cualquiera que sea la operación a realizar.
Uso de ficheros auxiliares para actualizar.
14
7
F.S. Creación
n
n
Directamente con un editor de texto, si son ficheros de texto.
Dise ñando un programa que lo cree
(sea o no de texto).
Pseudocódigo Generalizado
<CREAR FICHERO_N>
inicio
abrir FICHERO_Npara escribir
<Procesar Fichero>
cerrar FICHERO_N
fin
Similar a ... escribir (datos)
<Procesar Fichero>
leer (condicion) /* Se lee la VCB
para controlar la entrada de datos */
mientras (condicion sea cierta)
leer(datos)
escribir en registro de FICHERO_N(datos)
leer (condicion);
fin_mientras
FinPF
15
F.S. Recorrido
n
n
Acceso secuencial desde el primero al último registro
para procesar: Escribir, pintar en pantalla, actualizar, etc.
Para el recorrido se usará un bucle controlado por fin de
fichero.
<RECORRIDO>
Similar a ... leer (registro)
inicio
abrir Fichero_N para.../* ...leer, escribir, L/E, según
proceso a realizar */
Si hay error de apertura
<ProcesarFichero_N>
Escribir (“Error...”)
Inicio
En otro caso
Leer registro de Fichero_N (registro)
<ProcesarFichero_N>
Mientras (no FF) //FF, fin de fichero
<Procesar registro>
Cerrar Fichero_N
Leer registro de Fichero_N (registro)
Finsi
Fin mientras
FinR
FinPR
16
8
F.S. Consulta
n
n
n
Buscar secuencialmente en el archivo
información referente a un registro, según un
valor de uno de los campos.
Si existen varios registros con el mismo valor
del campo de búsqueda, se obtendrá el primero
de ellos, salvo que se especifique como
precondición buscarlos todos.
El archivo puede estar
q
q
Desordenado è llegar al final buscando para afirmar
que no existe registro buscado.
Ordenado è no es necesario recorrerlo hasta el final
para asegurar que el registro no existe.
17
Búsqueda secuencial en archivo
INTERFAZ
Propósito: buscar secuencialmente un elemento
en un fichero.
Entradas: el elemento a buscar y el fichero.
Precondiciones: ninguna.
Salidas: un entero
Postcondiciones: asociado al nombre se devuelve:
- Número de registro del elemento buscado, si
es encontrado.
- -1 si el elemento no se encuentra.
- 0 si se produce error en la apertura del
fichero.
18
9
F.S. Partición
n
n
La operación no afecta al fichero de origen.
Distintos algoritmos de partir ficheros en razón de
diferentes especificaciones:
q
Partición por contenido.
n
n
q
Objetivo: “dividir un archivo según una condición de
partición que determina que registros se almacenan en un
fichero y cuáles en otro”.
Por ejemplo:
Ver diapositiva sig.
Partición en secuencias.
n
n
Objetivo: “distribuir los registros de un fichero en otros
ficheros, obedeciendo a secuencias alternativas de igual o
diferentes longitudes”
Por ejemplo:
Ver diapositiva sig.
19
F.S. Ejemplos para partir
n
Contenido Partir un fichero de nombre Fichero
Contenido:
en otros dos, Fichero1 y Fichero2, pasando a
Fichero1 los registros de Fichero cuyo valor del
CampoRegistro sea igual al valor prefijado de
Campo y al Fichero2 los registros que no
cumplan esta condición.
Ver pag. 417 - 418
n
Secuencias Partir Fichero en Fichero1 y
Secuencias:
Fichero2, con longitud de secuencias de
distribución de registros igual a 1, es decir, que
pasen a Fichero1 los registros que ocupan las
posiciones pares y a Fichero2 los que ocupan
posiciones impares.
Ver pag. 418
20
10
F.S. Fusión
n
n
n
Objetivo: agrupar en un sólo fichero los registros de
otros archivos.
La operación no afecta a los ficheros de origen.
El orden de origen puede o no ser mantenido:
q
q
Archivos de origen desordenado. Ver pag. 419
n
Objetivo: “almacenar secuencias de registros de longitud
determinada de cada archivo origen en el destino”.
n
Por ejemplo: Sean Fichero1 y Fichero2 archivos desordenados
origen a fusionar, Fichero el destino, también desordenado y
Longitud el tamaño de las secuencias.
Archivos de origen ordenado.
n
Mezcla controlada por FF
Objetivo: “Fusionar conservando el orden”
21
F.S. Ordenación
n
HÍBRIDA
q Proceso: cargar la información del archivo en un array, ordenar
el array, volver la información del array ya ordenado al archivo.
q Método aplicable sólo si la totalidad de la información a ordenar
cabe íntegramente en la memoria central.
q El array tendrá la misma estructura que los registros del archivo
y tantas casillas como registros tenga éste.
q Pueden usarse arrays dinámicos para los que se pedirá tanta
memoria como registros tenga el archivo.
n
EXTERNA
q
q
q
q
Se realiza si el archivo no cabe en memoria central.
Tiene la desventaja de ser mucho más lenta que la ordenación
híbrida (acceso a memoria secundaria).
Requiere un número de archivos auxiliares dependiente del
método que se vaya a implementar.
El método más común es el conocido Método de mezcla directa.
directa
22
11
F.S. Ordenación Híbrida
<OrdenHibrida FICHERO> >
inicio
<Calcular NumRegistros del FICHERO>
pedir memoria para el ARRAY
<Volcar FICHERO en ARRAY>
<Volcar FICHERO en ARRAY>
<Ordenar ARRAY>
<Volcar ARRAY en FICHERO> inicio
abrir FICHERO para leer
Devolver memoria del ARRAY
Si no hay errores de apertura
Fin Ordenar
leer reg de FICHERO (AUX )
Para (I = 0, mientras (no FF), I = I + 1)
ARRAY [ I ] = AUX
leer reg de FICHERO (AUX)
fin_mientras
cerrar FICHERO
Finsi
Fin volcar
23
F.S. Ordenación Externa
n
Método de mezcla directa
q
Ver pag. 423
Proceso: realizar sucesivamente una partición y una
fusión de archivos, con lo que se producen secuencias
ordenadas de longitud cada vez mayor.
n
n
n
n
Para realizar las sucesivas operaciones de particiones y
mezclas, se requieren dos ficheros auxiliares con la misma
estructura que el original.
La primera partición se hace en secuencias separadas por
una distancia o longitud 1, y la fusión correspondiente
produce sobre el archivo inicial secuencias ordenadas de
longitud 2.
Con cada nueva partición y mezcla se duplica la longitud de
las secuencias ordenadas.
El proceso finaliza cuando la longitud de la secuencia
ordenada es igual o excede a la longitud del archivo a
ordenar.
24
12
F.S. Actualización
n
Proceso: Si la información está en un archivo principal, se
n
guardarán las modificaciones en un archivo auxiliar llamado DE
MOVIMIENTOS. Y cada cierto tiempo se procederá a la actualización del
fichero MAESTRO, generando un fichero MAESTRO ACTUALIZADO. Y
ambos ordenados siguiendo un mismo criterio.
CONSIDERACIONES:
q
q
n
Los registros tendrán una clave de ordenación única.
Cada registro tendrá como máximo un movimiento.
Recorreremos simultáneamente los dos ficheros , compararemos los
campos clave y analizaremos cada situación:
q
Registro de movimiento con registro de maestro
n
si es una Baja à no se copia en el maestro
n
si es una Modificación à se actualiza y se graba en el maestro
n
si es un Alta à se produce un error porque ya existe ese registro.
§
LEEREMOS DE FICHERO MAESTRO Y DE MOVIMIENTOS
25
F.S. Actualización
q
Registro de maestro sin movimiento
¿ACCIÓN? • Grabaremos el registro en el maestro directamente
§
LEEREMOS DE FICHERO MAESTRO
q
Registro de movimiento sin maestro
n
si es una Alta à se copia en el maestro
n
si es una Baja o Modificación à se produce un error no existe ese
registro.
§
LEEREMOS DE
FICHERO MOVIMIENTOS
Ver pag. 427 y ejercicio 6
26
13
F.Directos
n
n
Debemos contar con un soporte que admita
el direccionamiento directo
Se establece una relación entre el campo
clave y la dirección de almacenamiento del
registro:
q
q
Si la clave es numérica: se le aplica un algoritmo
de transformación de clave.
Si la clave no es numérica: se convierte a
numérica y después se le aplica un algoritmo de
transformación de clave.
27
F.D. Direccionamiento
n
Directo : la dirección es la clave.
n
Por tabla:
n
Calculado o Hashing: Dirección = Fórmula(clave) – hay que
creamos una tabla donde guardamos cada clave
asociada a una dirección.
controlar muy bien los sinónimos que aparezcan.
F.D. VENTAJAS E INCONVENIENTES
?
?
?
?
?
Acceso a los registros es directo y rápido
No son necesarios ficheros auxiliares
Supresiones por marcas y directas
El software apara la gestión es responsabilidad del programador.
Se desaprovecha espacio en el soporte de almacenamiento.
? No admiten métodos de acceso secuencial.
28
14
F. Secuenciales Indexados
n
n
Cada registro se identifica unívocamente con
una clave única, conocida como clave
primaria. Y esta clave pertenece al registro.
Organizado en tres zonas:
q
Área de índices:
q
Área primaria: zona dividida en segmentos que contiene,
organizada secuencialmente y actualizada
permanentemente. Cada registro contiene la dirección de
comienzo de un bloque y la clave más alta que contiene.
organizados secuencialmente, más de un registro
q
Área de excedentes:
contendrá aquellos registros que no
caben en el área principal.
29
F. Secuenciales indexados: VENTAJAS E
INCONVENIENTES
? No hay espacio libre entre registros.
? Es posible la actualización sin necesidad de un archivo auxiliar.
? Las altas son siempre por marca y después hay que reorganizar el
fichero.
? Las bajas sólo se pueden efectuar por marcas.
? Se necesita espacio para la tabla de índices.
? No es aconsejable para ficheros con un alto número de
actualizaciones y modificaciones.
Todos estos problemas terminan buscando una solución en una Base de Datos.
Aquí los datos son independientes de los programas y la peticiones por parte de
éstos se resuelven a través de el Sistema Gestor de Base de Datos.
30
15
" Si sale, sale. Si no sale, hay que volver a
empezar. Todo lo demás son fantasías."
Edouard Manet,
31
16
Descargar