Unidad 1 Conceptos básicos de archivos
Archivo
informático
Un archivo o
fichero informático es una entidad lógica compuesta por una secuencia finita de
bytes, almacenada en un sistema de archivos ubicada en la memoria secundaria de
un ordenador. Los archivos son agrupados en directorios dentro del sistema de
archivos y son identificados por un nombre de archivo. El nombre forma la
identificación única en relación a los otros archivos en el mismo directorio.
Los archivos se
utilizan cuando se desea almacenar datos de manera persistente, o para
guardarlos en memoria secundaria con el fin de no utilizar memoria primaria,
dado que esta última es normalmente más escasa que la anterior.
Dependiendo de
cada sistema de archivos, los ficheros pueden tener atributos particulares
como, por ejemplo, fecha de creación, fecha de última modificación, dueño y
permisos de acceso.
El tamaño de un
archivo está limitado por una serie de factores, como la capacidad disponible
en la memoria secundaria del ordenador y los límites impuestos por el sistema
operativo o el sistema de archivos.
El tipo de un
archivo es caracterizado por la organización de los datos contenidos y la
interpretación que realiza el software que los escribe o los lee.
En computación
existen básicamente dos tipos de archivos, los archivos ascii y los archivos
binarios. El vocablo ascii es un acrónimo para American Standard Code for
Information Interchange. Es un estándar que asigna un valor numérico a cada
carácter, con lo que se pueden representar los documentos llamados de Texto
Plano, es decir, los que son legibles por seres humanos. Los archivos binarios
son todos los demás. Como ejemplos tenemos:
Archivos
binarios:
- De imagen:
.jpg, .gif, .tiff, .bmp (Portable bitmap), .wmf (Windows Meta File), .png
(Portable Network Graphics), .pcx (Paintbrush); entre muchos otros
•De video:
.mpg, .mov, .avi, .gif •Comprimidos o empaquetados: .zip, .Z, .gz, .tar, .lhz
•Ejecutables o compilados: .exe, .com, .cgi, .o, .a •Procesadores de palabras:
.doc
Los archivos y
carpetas se organizan jerárquicamente En los sistemas informáticos modernos,
los archivos siempre tienen nombres. Los archivos se ubican en directorios. El
nombre de un archivo debe ser único en ese directorio. En otras palabras, no puede
haber dos archivos con el mismo nombre en el mismo directorio. El nombre de un
archivo y la ruta al directorio del archivo lo identifica de manera exacta
entre todos los demás archivos del sistema informático-no puede haber dos
archivos con el mismo nombre y ruta. La mayoría de las computadoras organizan
los archivos en jerarquías llamadas carpetas, directorios o catálogos. (El
concepto es el mismo independientemente de la terminología usada.) Cuando una
computadora permite el uso de carpetas, cada archivo y carpeta no sólo tiene un
nombre propio, sino también una ruta, que identifica la carpeta o carpetas en
las que reside un archivo o carpeta. En la ruta, se emplea algún tipo de
carácter especial -como un barra- para separar los nombres de los archivos y
carpetas. Muchos (pero no todos) sistemas informáticos usan extensiones en los
nombres de archivo para ayudar a identificar que contienen.
La Organización de un Archivo es la colección de registros lógicos en el archivo y la percepción que tiene el usuario programador de aplicaciones
acerca de la disposición lógica de los registros almacenados en el
archivo; una organización de archivo soporta algún(os) método de acceso
mediante el cual estos registros pueden ser accedidos.
A continuación se presentan algunas organizaciones de archivo.
- Organización Secuencial
El término organización
secuencial implica que lógicamente los registros del archivo están
almacenados consecutivamente; esto es, en forma adyacente, en el orden
en que el usuario final los percibe. En particular se puede hacer una
distinción entre archivos secuenciales ordenados y archivos secuenciales
desordenados. Una organización de archivo secuencial ordenada almacena
los registros lógicos secuencialmente pero en orden creciente (o
decreciente) de acuerdo con los valores de alguna de sus claves,
mientras que la organización de archivo secuencial no ordenada almacena
los registros lógicos consecutivamente pero sin un orden específico.
La organización secuencial es la organización de
archivo más común. Los registros son almacenados uno tras otro en orden
de llegada. Para acceder un registro determinado se deben leer todos los
registros que están almacenados antes de éste. Cuando el orden
secuencial coincide con el orden físico se dice que existe un orden
serial (en una cinta magnética siempre se cumple esta característica).
Operaciones:
- La operación de inserción de un registro en un archivo organizado secuencialmente puede ser realizada de dos maneras:
- Crear un nuevo archivo. Es
costoso (en términos de número de transferencias de datos entre memoria
principal y secundaria), pero puede la única forma posible en caso de
que el archivo se encuentre organizado secuencialmente ordenado.
- Agregarlo al final. De bajo costo. Puede NO ser útil en el caso de que el archivo encuentre organizado secuencialmente ordenado.
- La operación de eliminación puede ser realizada de dos maneras:
- Creando un nuevo archivo secuencial que no contenga el registro eliminado. Es de alto costo.
- Marcar el registro en
cuestión, es decir, realizar una eliminación lógica. Normalmente esta
operación no es posible de realizar en dispositivos de acceso secuencial
como las cintas magnéticas.
A nivel físico, los bloques están almacenados "consecutivamente" ya sea:
- Almacenados de tal forma que ellos están físicamente adyacentes y por lo tanto residen en la misma sola extensión (archivo secuencial físico); o
- Almacenados de tal forma
que pertenezcan a grupos (clusters) diferentes y, por lo tanto,
pertenezcan a más de una extensión, con su adyacencia lógica mantenida
vía punteros de disco. (archivo secuencial enlazado físico)
Debido a que las operaciones que
modifican el estado del archivo secuencial (sobre todo eliminación y
modificación ) son costosas (en términos de tiempo de respuesta), la
mayoría de las veces se postergan hasta que se hayan acumulado un cierto
número de este tipo de operaciones, en un archivo especial llamado
archivo de transacciones (el cuál en sí mismo puede ser un archivo
organizado secuencialmente). Llegado un momento, todas las operaciones
pendientes (almacenadas en el archivo de transacciones) son aplicadas
"juntas", generando un nuevo archivo.
Por todo lo anterior, se tiene que
los archivos de organización secuencial se desempeñan bien para
operaciones Batch (recuperar muchos registros) y Recuperar_Todos
(recuperar todos los registros), y normalmente requieren de un espacio
de almacenamiento bastante pequeño (por ejemplo, no necesitan de
estructuras auxiliares como ocurre en los archivos ordenados de forma
secuencial indexada).
Como desventaja se tiene que no
existe una manera rápida de acceder a un registro lógico específico (en
contraste, por ejemplo, con lo que sucede en los archivos relativos y en
los archivos indexados, en dónde es posible acceder a un registro
determinado en pocos accesos).
Un archivo almacenado en una cinta magnética está siempre organizado secuencialmente.
En un disco duro, la organización
secuencial puede ser lograda mediante una capa de "abstracción" de
software; sin embargo, un archivo organizado en forma secuencial
desaprovecha las características de acceso directo que proporciona el
disco duro.
Segun su acceso
Existen dos maneras de accesar y buscar registros de una
archivo:
Secuencial
- Características
- Consecutivamente
- Respetando el orden de aparición en el archivo
- El orden de complejidad será O(n) lo cual implica
que es demasiado lento para grandes volúmenes de datos,
O(n/2) en promedio.
- Se utiliza cuando:
- Se está buscando en un archivo de texto algun patrón
(pattern)
- Archivos con pocos registros
- Archivos que no necesitan "búsquedas" por ejemplo
los respaldos en cintas
- Cuando de antemano se sabe que se recuperarán muchos
resultados (vale la pena la espera)
Existe una técnica que permite aumentar la velocidad de estos
accesos llamada "Blocking"
Se basa en leer bloques de registros en lugar de leer uno por uno
El leer un bloque es más lento porque se traen en cada viaje
al disco más datos, pero nuevamente la separación se
hace en memoria donde la velocidad es mucho mayor y ahí se gana
tiempo.
Aunque el rendimiento mejora considerablemente en realidad no es
algo considerable ya que el número de las comparaciones para
buscar el patrón o valor que se requiere sigue siendo el mismo.
Directo
- Caraterísticas
- El orden de complejidad será O(1)
- Se basa en las funciones de seek
- Para obtener un buen rendimiento se deben hacer los registros
de una longitud cuyo múltiplo sea del tamaño de
un sector del disco. Si el sector es de 512 bytes y nuestro registro
mide 30, lo mas adecuado es que mida 32, ya que 32x16=512 (16
registros en un viaje al disco)
- Se utiliza cuando:
- Los registros son de longitud fija
- Tenemos una manera de saber en que posición del
archivo está un registro,
ej. campo id=número del registro en el archivo
Reutilizando el espacio en Archivos
Qué sucede si eliminamos un registro ??
- Necesitamos recorrer los demás para mantener consistente
el archivo
- Esta suena bastante bien, pero tiene la desventaja de perder
mucho tiempo en realizar esta operación
- Dejar el espacio (hueco) y reutilizarlo posteriormente
- El problema aqui es el desperdicio de espacio, pero si
tomamos en cuenta que se reutiliza entonces no habrá
mucho problema.
De manera que tenemos 3 operaciones que modifican la organización
de nuestro archivo:
- Agregar Registros
- Actualizar Registros
- Eliminar Registros
Si el archivo que se pretende utilizar sólo se utiliza para
guardar información (agregar) entonces no hay mayor complejidad
en su manipulación; se vuelve más interesante cuando hablamos
de actualización y eliminación tanto en archivos de registros
de tamaño fijo, como aquellos con registros de tamaño
variable.
Algo importante que debemos recordar es que se puede ver a la actualización
como un "borrar y agregar" así que nos concentraremos primeramente
en la eliminación de registros.
Las operaciones generales que se
realizan son:
Creación.
Escritura de todos sus registros.
Es la primera operación que sufrirá
el archivo de datos. Implica la elección de un entorno descriptivo que permita
un ágil, rápido y eficaz tratamiento del archivo.
Para utilizar un archivo, éste
tiene que existir, es decir, las informaciones de este archivo tienen que haber
sido almacenadas sobre un soporte y ser utilizables. La crea¬ción exige
organización, estructura, localización o reserva de espacio en el soporte de
almacenamiento, transferencia del archivo del soporte antiguo al nuevo.
Un archivo puede ser creado por
primera vez en un soporte, proceder de otro previamente existente en el mismo o
diferente soporte, ser el resultado de un cálculo o ambas cosas a la vez.
Consulta. Lectura
de todos sus registros.
Es la operación que permite al
usuario acceder al archivo de datos para conocer el contenido de uno, varios o
todos los registros.
Actualización.
Inserción supresión o modificación de algunos de sus registros.
Es la operación que permite tener
actualizado (puesto al día) el archivo, de tal modo que sea posible realizar
las siguientes operaciones con sus registros: •Consulta del contenido de un
registro. •Inserción de un registro nuevo en el archivo. •Supresión de un
registro existente. •Modificación de un registro.
Un ejemplo de actualización es el
de un archivo de un almacén, cuyos registros con¬I tienen las existencias de
cada artículo, precios, proveedores, etc. Las existencias, pre¬cios, etc.,
varían continuamente y exigen una actualización simultánea del archivo con cada
operación de consulta.
Clasificación.
Reubicación de los registros de tal forma que queden ordenados según
determinados criterios.
Una operación muy importante en un
archivo es la clasificación u ordenación (sort, en inglés). Esta clasificación
se realizará de acuerdo con el valor de un campo específico, pudiendo ser
ascendente (creciente) o descendente (decreciente): alfabética o numérica.
Borrado.
Eliminando total del archivo, dejando libre el espacio del soporte que ocupaba.
Es la operación inversa a la
creación de un archivo (kill, en inglés). Cuando se destruye (anula o borra) un
archivo, éste ya no se puede utilizar y, por consiguiente, no se podrá acceder
a ninguno de sus registros.
Reorganización de un
archivo. Las operaciones sobre archivos modifican la estructura
inicial o la óptima de un archivo. Los índices, enlaces (punteros), zonas de
sinónimos, zonas de desbordamiento, etc., se modifican con el paso del tiempo,
lo que hace a la operación de acceso al registro cada vez más lenta. La
reorganización suele consistir en la copia de un nuevo archivo a partir del
archivo modificado, a fin de obtener una nueva estructura lo más óptima
posible.