jueves, 21 de febrero de 2013

conceptos basicos de archivos


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.

  1. 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.