Estructura de archivos y sistema

38

Transcript of Estructura de archivos y sistema

El rendimiento del sistema depende de la eficiencia de la estructura de datos que se utiliza para representar la información en la base de datos y de la eficiencia del sistema para operar sobre esa base de datos

El sistema operativo de la computadora puede proporcionar algunas de las funciones del sistema de la base de datos. En la mayoría de los casos, el sistema operativo proporciona únicamente los servicios mas básicos y el sistema de base de datos debe construirse sobre esa base.

El sistema de base de datos consta de varios componentes funcionales , entre los que se encuentran:

• El gestor de archivos, que se encarga de asignar el espacio en la memoria del disco y la estructura de datos que se usa para representar información almacenada en el disco.

• El gestor de registros intermedios buffer, que es responsable de transferir la información entre la memoria del disco y la memoria principal.

• El analizador sintáctico (parser) de consultas, que traduce sentencias de un lenguaje de consulta a un lenguaje de nivel más bajo.

• El selector de estrategias, que intenta transformar la solicitud del usuario en una forma equivalente pero más eficiente, encontrando así una estrategia adecuada para ejecutar la consulta.

• El gestor de autorización e integridad, que prueba la satisfacción de las restricciones de integridad (como, por ejemplo, restriccio nes de clave) y comprueba que el usuario está autorizado para acceder a los datos.

• El gestor de recuperaciones, que asegura que la base de datos permanezca en un estado consistente (correcto) a pesar de que ocurran rallos en el sistema.

• El controlador de concurrencia, que asegura que las interacciones concurrentes con la base de datos se llevan a cabo sin conflictos entre ellas.

Además se requieren varias estructuras de datos como parte de la implementación física, entre las que se encuentran:

• Archivos de datos, que almacenan la base de datos. • Diccionario de datos, que almacena información

acerca de la estructura de la base de datos, y la información de autorización, como las restricciones de clave.

• Índices, que permiten tener acceso rápido a datos que tienen determinados valores.

• Datos estadísticos, que almacenan información acerca de los datos en la base de datos. Esta. información la utiliza el selector de estrategias.

7.2. MEDIOS DE ALMACENAMIENTO 7.2. MEDIOS DE ALMACENAMIENTO FISICO FISICO

En la mayoría de los sistemas de computadores existen varios tipos de almacenamiento de datos. Estos medios de almacenamiento se clasifican según la velocidad con que puede tenerse acceso a los datos, según el coste por unidad de datos para comprar la memoria, y según la «fiabilidad» que tienen. Entre los medios con que normalmente se cuenta están:

• Próximo (caché). Esta es la forma de almacenamiento más rápida y más costosa. El tamaño de la memoria caché es muy pequeño y el sistema operativo gestiona su utilización. No necesitaremos preocupamos de la gestión de la memoria caché en el sistema de base de datos.

• Memoria principal. Este es el medio de almacenamiento que se emplea para los datos disponibles sobre los cuales se va a operar. Las instrucciones de máquina de propósito general operan sobre la memoria principal. Aunque la memoria principal puede contener varios megabytes de datos, casi siempre es demasiado pequeña para almacenar la base de datos completa. A la memoria principal muchas veces se le llama memoria central. Normalmente los contenidos de la memoria principal se pierden si hay un corte de energía eléctrica o si se «cae» el sistema.

• Almacenamiento en disco. Este es el medio principal para el almacenamiento de datos a largo plazo. Lo común es que toda la base de datos esté almacenada en disco. Los datos deben trasladarse del disco a la memoria principal para poder operar sobre ellos. Después de realizar las operaciones, los datos deben devolverse al disco.

• Almacenamiento en cinta. Este tipo de almacenamiento se usa principalmente para copias de seguridad y datos de archivo. Aunque la cinta es mucho más barata que el disco, el acceso a los datos es mucho más lento, puesto' que la cinta debe leerse secuencialmente desde el principio. Por esta razón, el almacena miento en cinta se denomina almacenamiento de acceso secuencial y se usa principalmente para recuperarse de fallos en el disco

7.3. ORGANIZACION DE 7.3. ORGANIZACION DE ARCHIVOSARCHIVOS

Un archivo está organizado lógicamente como una secuencia de regis tros. Estos registros se asignan a bloques del disco. Los archivos se dan como construcciones básicas en los sistemas operativos, por lo que supondremos que existe un sistema de archivos subyacente. Necesitamos considerar formas de representar modelos lógicos de datos en términos de archivos.

Aunque los bloques son de tamaño fijo determinado por las propie dades físicas del disco y por el sistema operativo, los tamaños de los registros varían. En una base de datos relacional, las tuplas de relacio nes distintas son, por lo general, de diferente tamaño. En una base de datos de red es probable que el tipo de registro propietario sea de distinto tamaño que el tipo de registro miembro.

Una forma de enfocar la asignación de la base de datos a los archivos es utilizar varios archivos y almacenar en un archivo dado solamente registros de una longitud fija. Una alternativa es estructurar los archivos de una forma tal que podamos acomodar registros de varias longitudes diferentes. Los archivos de registros de longitud fija son más fáciles de implementar que los archivos de registros de longitud variable. Muchas de las técnicas usadas pueden aplicarse al caso de longitud variable. Así, pues, empezamos considerando un archivo de registros de longitud fija.

7.3.1. Registros de longitud fija7.3.1. Registros de longitud fija

Como ejemplo, consideremos un archivo de registros depósito para le base de datos bancaria. Cada registro de este archivo se define como sigue:

type depósito = registro nombre-sucursal: char (20); número-cuenta: integer; nombre-cliente: char (20); saldo: real;

end

7.3.2. Registros de longitud variable7.3.2. Registros de longitud variable

Los registros de longitud variable se presentan en los sistemas de base de datos de varias formas:

• Almacenamiento de varios tipos de registros en un

archivo.

• Tipos de registros que permiten uno o más campos de longitudes variables.

• Tipos de registros que permiten campos repetidos.

Existen varias técnicas para implementar los registros de longitud variable. El formato del registro es:

type lista-depósito = record nombre-sucursal: char (20); info-cuenta ; array [1 .. 00] of record; número-cuenta: integer; nombre-cliente: char (20); saldo; real; end

end

Definimos info-cuenta como un array con un número arbitrario dc elementos de manera que el tamaño del registro no tiene límite (¡salvo. por supuesto, el tamaño del disco!).

Representación en cadena de bytesRepresentación en cadena de bytes

Un método sencillo para implementar los registros de longitud variable es añadir un símbolo especial de fin de registro (.1) al final de cada registro. Así podemos almacenar cada registro como una cadena de bytes consecutivos.

La representación en cadena de bytes tiene varias desventajas. Las más serias son:

• No es fácil volver a utilizar el espacio que ocupaba un registro que se eliminó. Aunque existen técnicas para gestionar la inserción y eliminación, resultan en un gran número de fragmentos pequeños de espacio en disco que se desperdician.

• En general, los registros no disponen de espacio

para crecer. Si un registro de longitud variable se hace más largo debe moverse y si el registro está sujeto, el movimiento resulta costoso.

Por tanto, la representación en cadena de bytes normalmente no se utiliza para implementar registros de longitud variable.

Representación de longitud fija Representación de longitud fija

Para implementar los registros de longitud variable de manera eficiente en un sistema de archivos, utilizamos uno o más registros de longitud lija para representar un registro de longitud variable.

Existen dos técnicas de para implementar archivos de registros de longitud variable empleando registros de longitud fija .

• Espacio reservado. Si hay una longitud máxima de registro que nunca se excede, podemos utilizar registros de longitud fija de esa longitud. El espacio no utilizado (para registros más cortos que el espacio máximo) se llena con un símbolo especial nulo o de «fin de registro» .

• Punteros. El registro de longitud variable se representa por una lista de registros de longitud fija encadenado por medio de punteros.

El método de espacio reservado es útil cuando gran parte de los registros es de longitud cercana al máximo. Si no es así, puede desperdiciarse una cantidad apreciable de espacio. En el ejemplo bancario puede darse el caso de que algunas sucursales tengan muchas más cuentas que otras. Esto nos lleva a considerar el uso del método de punteros. Para representar el archivo empleando el método de punteros.

 

7.4 ORGANIZACIÓN DE REGRISTROS EN BLOQUES

Un archivo puede considerarse como una colección de registros. Sin embargo, como los datos se transfieren entre el almacenamiento en disco y la memoria principal en unidades de bloque, vale la pena asignar los registros a los bloques de tal forma que un simple bloque contenga registros relacionados entre sí. Si asignamos los registros a los bloques al azar, normalmente se dará el caso de que sea necesario tener acceso a un bloque diferente para cada registro que se acceda.

Si podemos acceder a varios de los registros deseados con un solo acceso a bloque, habremos ahorrado algunos accesos a disco.

Anteriormente describimos una estructura de archivos en la que toda la información

relativa a las cuentas de una sucursal aparecía en un registro (de longitud variable).

Las representaciones de esta estruc tura de archivo con registros de longitud fija utilizaban varios registros para representar un registro de longitud variable.

Si podemos almace nar varios de esos registros en un bloque reducimos el número de accesos a bloque requeridos para leer un registro de longitud variable.

Es fácil agrupar registros de esta manera si la base de datos nunca cambia. Sin embargo, supóngase que se abre una nueva cuenta en la sucursal Perryridge. Si estamos utilizando la estructura que se muestra en la Figura 7.12 desearíamos añadir el registro que corresponde a esta cuenta al mismo bloque en que están el resto de las cuentas de la sucursal Perryridge.

• Como alternativa consideremos una estructura que ocupa un espa cio un poco mayor que la estructura de la Figura anterior pero que permite mejorar la eficiencia del acceso a la información. A cada valor ilc nomhre-aucursal le asignamos una cadena de bloques. Cada cadena de bloques contiene el registro de longitud variable completo para el correspondiente valor de nombre-sucursal.

• La Figura 7.13 muestra la estructura apropiada para el archivo depósito. Las cadenas tienen una estructura ligeramente diferente de las demás estructuras de regis tros de longitud fija que hemos utilizado:

• El primer registro de la cadena contiene el valor de nombre-sucursal de la cadena.

• Los siguientes registros contienen los campos que se repiten. No hace falta repetir el nombre-sucursal, ya que es el mismo para todos los registros de la cadena.

• Obsérvese que hay dos longitudes de registro diferentes en cada cadena. El primer registro contiene un valor de nombre-sucursal. Todos los demás registros contienen tres campos: número-cuenta, nombre-oliente, y saldo.

• cada cadena ocupa exactamente un bloque. Si extendemos el ejemplo a uno más real, en el que una sucursal tiene miles de cuentas, una cadena puede requerir varios bloques.

• Reservamos un espacio fijo al prin cipio de cada bloque como encabezamiento de bloque y lo usamos para almacenar los punteros de la cadena. La Figura 7.14 muestra parte de una estructura de archivos de una base de datos bancaria extendida.

• Al crecer una cadena por inserción de registros, puede que se necesite añadirle nuevos bloques.

FIGURA 7.14FIGURA 7.14

BLOQUES BLOQUES ENCADENADOSENCADENADOS

ARCHIVOS ARCHIVOS SECUENCIALESSECUENCIALES

• Un archivo secuencial está diseñado para procesar de manera eficiente registros en un determinado orden basándose en alguna clave de bús queda. Para permitir una recuperación rápida de registros en el orden de la clave de búsqueda, los registros se encadenan por medio de punteros. El puntero de cada registro apunta al siguiente registro en el orden de la clave de búsqueda.

• La Figura 7.15 muestra un archivo secuencial de registros depósito sacado del ejemplo bancario. Los registros están almacenados en el orden de la clave de búsqueda, empleando nombre-sucursal como clave de búsqueda.

Figura 7.15. Archivo secuencial de registros depósito.

• Para la inserción aplicamos las siguientes reglas:1.1. Localizar el registro en el archivo que precede al registro que se va a

insertar en el orden de la clave de búsqueda.2.2. Si existe algún registro libre (es decir, un espacio que haya resultado

de una eliminación) dentro del mismo bloque que este registro, se inserta allí el nuevo registro. Si no, se inserta un nuevo bloque de desbordamiento. En cualquier caso, se ajustan los punteros para que los registros queden encadenados en el orden de la clave de búsqueda.

• La Figura 7.16 muestra el archivo de la Figura 7.15 después de la inserción del registro (North Town, 888, Adams, 800). La estructura de la Figura 7.16 permite insertar rápidamente registros nuevos, pero obliga a las aplicaciones de procesamiento secuencial de archivos a procesar los registros en un orden que no corresponde al orden físico de los registros.

7.6.ASIGNACIÓN (MAPPING) DE 7.6.ASIGNACIÓN (MAPPING) DE DATOS RELACIONALES A DATOS RELACIONALES A

ARCHIVOSARCHIVOS

• Muchos sistemas de base de datos relaciónales almacenan cada relación en un archivo separado. Esto permite al sistema de base de datos aprovechar al máximo el sistema de archivos que forma parte del sistema operativo.

• Por tanto, las relaciones pueden asignarse a una estructura simple de archivos. Esta implementación sencilla de un sistema de base de datos relacional se adapta bien a los sistemas de base de datos diseñados para computadores persona les. En estos sistemas, el tamaño de la base de datos es pequeño, por lo que no se aprovecharía una estructura de archivos sofisticada.

• Este enfoque sencillo de la implementación de bases de datos relacionales se vuelve menos satisfactorio al aumentar el tamaño de la base de datos.

ALMACENAMIENTO ALMACENAMIENTO DE DICCIONARIO DE DE DICCIONARIO DE

DATOSDATOS

Un sistema de base de datos relacional necesita mantener datos acerca de las relaciones.

A esta información se le denomina: Diccionario de Datos o Catalogo de Sistema.

Entre los tipos de información que el sistema debe almacenar

están:

Los nombres de las relaciones.Los nombres de los archivos.Los dominios de los atributos.Los nombres de las vistas definidas en la base de datos y la definición de esas vistas.Las restricciones de integridad de cada relación (ejemplo: las restricciones de clave)

Los sistemas que utilizan estructuras muy sofisticadas para almacenar relaciones, pueden conservarse datos estadísticos y descriptivos acerca de las relaciones:

Número de tuplas en cada relación.

Método de almacenamiento utilizado para cada relación( ejemplo, agrupado ó sin agrupar)

Si se utiliza la BD para almacenar datos del sistema, simplificamos la estructura global del sistema y permitimos aprovechar toda la capacidad de aquélla para agilizar el acceso a los datos del sistema. La elección de cómo se van a representar los datos por medio de las relaciones debe hacerla el diseñador del sistema.

GESTION DE GESTION DE REGISTROS REGISTROS

INTERMEDIOS INTERMEDIOS (BUFFER)(BUFFER)

Otra forma de reducir el número de accesos a disco es mantener tantos bloques como sea posible en la memoria principal. El objetivo es incrementar al máximo la posibilidad de que, cuando se necesite acceder a un bloque, éste ya éste en la memoria principal y, por lo tanto no se requiera acceso al disco

Los registros intermedios (buffer) son aquellas apartes de la memoria principal disponible para almacenar copias de bloques del disco.

El responsable del subsistema para la asignación de espacio en el buffer se denomina Gestor del buffer.

El gestor del Buffer intercepta todas las solicitudes que hace el resto del sistema pidiendo bloques de la BD. Si el bloque ya esta en el buffer, se pasa al solicitante la dirección del bloque en la memoria principal.

Si el bloque no está en el Buffer, el gestor del buffer lee el bloque del disco y lo escribe en el buffer y pasa la dirección del bloque en memoria principal al solicitante. Así el gestor del buffer es transparente para aquellos programas del sistema que solicitan bloques del disco.

El gestor de buffer debe utilizar técnicas mas sofisticadas que las que se emplean en los esquemas comunes de gestión de memoria virtual, con el fin de servir adecuadamente al sistema de Bd:

Estrategias de Reemplazo: cuando no queda espacio libre en el buffer, debe sacarse un bloque antes de que pueda escribirse uno nuevo.

Bloques Sujetos: Para que el sistema de BD pueda recuperarse de caídas, es necesario restringir las oportunidades en las que se puede gravar un bloque en el disco.

Salida forzada de bloques: Existen situaciones en la que es necesario escribir el bloque en el disco aunque no se necesite el espacio que ocupa en el buffer.