Administracion y Organizacion de Datos UNIDAD II Completo
Administracion y Organizacion de Datos UNIDAD II Completo
Administracion y Organizacion de Datos UNIDAD II Completo
ORGANIZACIONES BÁSICAS
VENTAJAS
Los archivos secuenciales proveen la mejor utilización de espacio y son rápidos cuando
los registros son accesados secuencialmente.
Los archivos con poca volatilidad, gran actividad y tamaño variable son altamente
susceptibles de ser organizados secuencialmente.
La ventaja más importante de la técnica de organización secuencial de archivos es la
capacidad de acceso al "siguiente" registro rápidamente: Mientras que el patrón de
acceso a un archivo secuencial se conforme al ordenamiento de registros en el archivo,
los tiempos de acceso serán muy buenos. Sin embargo, si el patrón de acceso al
programa no se conforma al patrón de ordenamiento de los registros, entonces la
eficiencia del programa puede ser terrible.
Otra ventaja de los archivos de organización secuencial es que son muy sencillos de usar
y aplicar.
DESVENTAJAS
ARCHIVOS SECUENCIALES
El sistema más normal para crear un archivo de clientes era escribir su nombre, separar
con un retorno de carro, escribir su dirección seguida de otro retorno de carro, población
y así sucesivamente.
Entre cliente y cliente se colocaba una marca de final de bloque que indicaba el inicio de
los datos de un nuevo cliente o bien el final del archivo de clientes.
Cada uno de estos bloques con los datos de un cliente recibe el nombre de registro y
cada una de estas informaciones (nombre, dirección, población, etc.) recibe el nombre
de campo.
Por tanto, un registro se compone de campos.
EJEMPLO
Juan Pérez
Calle de Matamoros, 105
Tuxtla Gutiérrez
<FIN>
Comercial Martínez
Calle Independencia, 10
Cintalapa
<FIN>
José Sánchez
Calle CalyMayor, 207
Tonala
<FIN>
CARACTERÍSTICAS
ARCHIVOS INDEXADOS
Los archivos indexados son básicamente archivos de acceso aleatorio a los que se añade
una utilidad para acceder al registro deseado a través de una clave.
En el caso de los archivos de acceso aleatorio, la clave es siempre el número de registro.
Los archivos indexados pueden buscar un cliente según su nombre, según su código de
identificación fiscal o según cualquier otro campo.
Para ello se construye una estructura de índice por cada campo que se desea indexar.
Esta estructura de índice se mantiene en la memoria RAM de forma ordenada, de manera
que podamos encontrar rápidamente una relación entre el apellido de un cliente y el número
de registro en el que se encuentra.
Esto es lo que permite realizar las búsquedas por clave sin necesidad de recorrer todos los
registros de la base de datos.
Tradicionalmente, la estructura de información utilizada para localizar los registros por clave
es el árbol binario o árbol de índices.
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).
Un archivo está organizado en forma secuencial indexada si:
El tipo de sus registros contiene un campo clave identificador.
Los registros están situados en un soporte direccionable por el orden de los valores
indicados por la clave.
Existe un índice con cada una de las posiciones direccionables, que almacena la dirección de
la posición y el valor de la clave; en esencia, el índice contiene la clave del ultimo registro y
la dirección de acceso al primer registro del bloque.
VENTAJAS Y DESVENTAJAS
TIPOS DE DIRECCIÓN
Dirección relativa: El campo señalador en el índice valor clave señala la posición del
registro dentro del archivo de datos.
Señalador simbólico: Un señalador simbólico es un identificador de registros, pero no
una dirección de registro. Por ejemplo, un valor de clave primaria puede usarse como
señalador simbólico porque identifica de manera única a un registro del archivo.
Dirección física: El campo señalador puede contener direcciones físicas, las cuales
pueden usarse para accesar registros directamente sin necesidad de traducir la
dirección. Sin embargo, la mayor desventaja del uso de las direcciones reales, es que
los valores del señalador dependen entonces del dispositivo. Por ejemplo, hay que
recrear un índice si los datos del archivo emigran de un disco a otro.
Cada vez que se inserta, borra o actualiza un registro, las entradas afectadas de un índice
deben ser modificadas para que así, el índice pueda proporcionar las trayectorias de datos
correctas.
Para poder estructurar esta organización (secuencial indexada) 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 de construir el índice basándose en la disposición física de los datos
almacenados
ÁRBOLES DE ÍNDICES
Esto es más lógico que emplear una lista ordenada, ya que en una lista los
números se organizarían así: 1
2
En el caso de buscar el mismo número, el 4, el número de comparaciones
sería el mismo que empleando un árbol. 3
Si buscamos el número 2 en la lista, el número de comparaciones sería 1, más rápido
que con el árbol. 4
5
En cambio, si buscáramos el 7, deberíamos hacer 6 comparaciones; mucho más lento,
puesto que el árbol sólo tiene 3 niveles. En un árbol de 8 elementos, la altura máxima del
árbol es de 3 niveles. No hará falta nunca rebasar 3 comparaciones para llegar al dato que
buscamos, independientemente de si es grande o pequeño.
En una lista ordenada, el número de comparaciones crece linealmente en función de la
cantidad de elementos que almacenamos en la lista.
En cambio, con el árbol, el número de comparaciones queda mucho más contenido.
Comparemos el peor de los casos en cada sistema.
Pongamos por caso que tenemos un registro como éste codificado en ANSI (1 byte por
carácter):
Nombre: 80 caracteres ANSI
Dirección: 100 caracteres ANSI
Población: 50 caracteres ANSI
Su longitud será de 230 caracteres. Esto implica que el primer registro se encontrará en la
posición 0; el segundo registro se encontrará en la posición 230; el tercero estará en la
posición 460 y así sucesivamente.
CARACTERÍSTICAS
Posicionamiento inmediato
Permiten situar el puntero de lectura o escritura sobre una posición concreta del archivo sin
necesidad de pasar por las posiciones anteriores, con el consiguiente incremento de rapidez.
Una sola apertura proporciona la capacidad de avanzar y retroceder sin necesidad de reabrir
el archivo.
Registros de longitud fija
Todos los registros tienen la misma longitud, ya que se utiliza siempre una estructura rígida
dimensionada a la máxima longitud para cada campo.
Apertura para lectura/escritura
Permiten su apertura en modo mixto (lectura y escritura), de forma que con una sola
operación de apertura podemos leer o escribir a voluntad en cualquier posición según nos
convenga.
Permiten el uso concurrente (multiusuario)
Al establecerse zonas específicas y limitadas de actuación para lectura y escritura, diversos
usuarios pueden acceder y escribir en diferentes porciones del archivo de forma simultánea.
Esto lleva a considerar la posibilidad de concurrencia de dos usuarios en el mismo registro.
Para ello se utilizan algoritmos de gestión de los bloqueos. Dichos algoritmos administran
zonas (que no siempre coinciden con registros) y las marcan para evitar dicha concurrencia
de forma temporal.
Dimensionamiento máximo al ser creados
Los archivos de acceso aleatorio deben dimensionarse hasta un número de registros máximo
en el momento de crearse.
Borrado de registro mediante ceros
El borrado de un registro se realiza poniendo a 0 el espacio que ocupa; rellenándolo con
bytes con el valor binario 0. En sistemas más complejos se emplea un algoritmo de
reutilización de gaps o espacios vacíos, o incluso de compactación.
Si empleamos un algoritmo de compactación de registros de gaps, deberemos ser
conscientes de que el número de registro cambiará para un cliente dado en el momento en
que se reubica, por lo cual una clave de acceso basada en número de registro no tendrá
validez.
Si utilizamos un algoritmo de reutilización de gaps deberemos ser conscientes de que un
cliente nuevo puede reutilizar el espacio de un cliente borrado. Por tanto, si utilizamos
referencias a su número de registro en otros archivos, deberemos ser cuidadosos de que un
cliente no sea falsamente referenciado en otros archivos.
Los archivos de acceso aleatorio están especialmente indicados para aquellos casos en que
el código del registro (cliente, proveedor, etc.) pueda ser directamente el número de registro
en el que se guardan los datos.
Al trabajar con archivos de acceso aleatorio deberemos tener en cuenta no rebasar nunca
el final de archivo. Si nuestro archivo está dimensionado hasta 100 registros, intentar que
no haya ningún usuario que nos pregunte por el 101 o por el 200. Para ello deberemos
establecer nuestros sistemas de prevención desde el interfaz o desde el sistema de cálculo
de la posición del puntero de lectura / escritura.
FUNCIONES HASHING
El origen de los algoritmos de hash es la ambición de los científicos por encontrar una forma
más rápida de encontrar la información
Una función de hash es una función para sumarizar o identificar probabilísticamente un gran
conjunto de información (dominio), dando como resultado un conjunto imagen finito
generalmente menor (un subconjunto de los números naturales por ejemplo). Varían en los
conjunto de partida y de llegada y en cómo afectan a la salida similaridades o patrones de
la entrada. Una propiedad fundamental del hashinges que si dos resultados de una misma
función son diferentes, entonces las dos entradas que generaron dichos resultados también
lo son.
Son usadas en múltiples aplicaciones, como los arrays asociativos, criptografía ,
procesamiento de datos y firmas digitales entre otros. Una buena función de hash es una
que experimenta pocas colisiones en el conjunto esperado de entrada; es decir que se
podrá identificar unívocamente las entradas
UN ALGORITMO DE HASH
No existe una fórmula “única” para hash, pero el producirla es un algoritmo que básicamente
se presenta en 3 pasos:
1) Representar la llave de manera numérica (siempre que no sea de por sí un número) Una
buena opción es usar los valores ASCII o bien los Unicode de las letras
LOWELL= L O W E L L _ _ _ _ _ _
76 79 87 69 76 76 32 32 32 32 32 32
2) Plegar y Agregar Combinar algunos de estos números para generar pequeños trozos con
los que podamos trabajar 76 79 | 87 69 | 76 76 | 32 32 | 32 32 | 32 32 De manera que
podemos hacer algunas operaciones matemáticas con dichos números para finalmente
obtener un número del cual obtendremos la dirección 7679 + 8769 + 7676 + 3232 + 3232
= 30 588
TÉCNICAS HASHING
BÚSQUEDA LINEAL
ÁREAS DE OVERFLOW
Este método usa un área de overflow separada para almacenar los registros que no pueden
ser almacenados en la página especificada por la función hashing. Al momento de ubicar un
registro que está en al área de overflow, el sistema obtiene primero la página en donde
debería estar almacenado. Al no ser encontrado allí se comienza a obtener las páginas del
área de overflow hasta que el registro es encontrado.
El método de búsqueda lineal tiende a causar colisiones a futuros registros que tengan que
ser ubicados en la página en la que ubico el registro sinónimo y si se mantienen el número
de colisiones al mínimo, es más rápido buscar en una área de overflow pequeña que buscar
en el área primaria.
La eficiencia de ambos métodos puede ser mejorada a través del uso de una cadena de
apuntadores (cadena de sinónimos o colisiones). Para esto cada página tiene un campo,
llamado apuntador, que sirve como indicador de que una colisión ha ocurrido en esa página.
En este campo se almacena el número de página en donde se encuentra almacenado el
sinónimo. De este forma no es necesario hacer una búsqueda secuencial en el área primaria
para el método de búsqueda lineal o no es necesario buscar en todas las páginas del área
de overflow para el método de áreas de overflow.