ORGANIZACION FISICA DE LOS SISTEMAS DE BASE DE DATOS

Anuncio
Fundamento de Informática Teórica(2003)
Prof. Dr. Eric Jeltsch F.
ORGANIZACION FISICA DE LOS SISTEMAS DE BASE DE DATOS
La organización física de una base de datos es un tópico extenso y se aborda en detalle, principalmente
en la asignatura Base de Datos, y digo principalmente pues también se trata en sistemas operativo y sistemas de
software. Sin embargo, el rendimiento general de un sistema de base de datos se determina en gran medida por
las estructuras de datos físicas usadas y por la eficiencia con la cual el sistema trabaja sobre las mismas.
Aunque los usuarios no siempre deban tener conocimiento de los detalles del diseño físico de la base de
datos, sin embargo Ud. deberían saber que éstos afectan al rendimiento, un factor de gran importancia en la
satisfacción del usuario con el sistema de base de datos. Una pregunta nos asalta, ¿Podría el usuario obtener la
información deseada en el formato apropiado y en un tiempo conveniente?. Esta última frase, "tiempo
conveniente", puede expresarse generalmente como tiempo de respuesta aceptable. La "información deseada" y el
"formato apropiado" no se afectan mucho por la organización física de la base de datos, pero el tiempo de
respuesta sí. El tiempo de respuesta es el tiempo transcurrido entre la iniciación de una operación sobre la base de
datos y la disponibilidad del resultado. Un tiempo de respuesta lento es la queja más frecuente que expresan los
usuarios de los sistemas de bases de datos, posiblemente debido a que es lo que se observa más fácilmente.
Un buen diseño físico de la base de datos almacenaría datos de forma que puedan recuperarse,
actualizarse y manipularse en el mínimo tiempo posible. En este segmento me interesa abordar aspectos de la
organización física de la base de datos que soportan la eficiencia de las operaciones en las mismas.
ACCESO FÍSICO A LA BASE DE DATOS
_________________________________________________________________________________
Area de Computación, Universidad de La Serena
1
Fundamento de Informática Teórica(2003)
Prof. Dr. Eric Jeltsch F.
En la figura anterior, se muestra el sistema para el acceso físico a la base de datos. Se puede ver la
interacción del usuario con el sistema de base de datos al iniciar una consulta. El selector de estrategia
(usualmente el software que transforma una consulta del usuario en una forma efectiva para su posterior
ejecución) traduce la orden del usuario a su forma más eficiente para su ejecución. La orden traducida activa
entonces al administrador de buffer, que controla el movimiento de datos entre la memoria principal y el
almacenamiento en disco. El administrador de archivos da soporte al administrador de buffer administrando la
reserva de localizaciones de almacenamiento en disco y las estructuras de datos asociadas. Además de los datos
del usuario, el disco contiene el diccionario de datos, que define la estructura de los datos del usuario y cómo
éstos pueden usarse. Los datos del usuario se almacenan como una base de datos física o colección de registros.
FORMAS DE ALMACENAMIENTO FÍSICO
La memoria principal es el almacenamiento intermedio usado por los datos que están disponibles para
las operaciones del usuario. Aquí es donde reside la ejecución del programa. Como los datos se necesitan por el
programa para ejecutar sus funciones, se transmiten estos desde el almacenamiento secundario a la memoria
principal. Aunque la memoria principal puede ser capaz de almacenar varios megabytes de datos, es normalmente
muy pequeña para almacenar la base de datos completa, por lo que es necesario el almacenamiento secundario.
El almacenamiento secundario para los sistemas, de base de datos está compuesto generalmente por el
almacenamiento en disco y el almacenamiento en cinta magnética. Casi siempre, la base de datos completa se
almacena en disco y porciones de ésta se transfieren desde el disco a la memoria primaria, a medida que se
necesita. El almacenamiento en disco es la forma principal de almacenamiento con acceso directo, por lo que los
registros individuales se pueden acceder directamente. Aunque el almacenamiento en cinta magnética es menos
costoso que el almacenamiento en disco, los registros pueden ser solamente accedidos secuencialmente (y más
lentamente que en disco). Su función en el sistema de base de datos está básicamente limitada a archivar datos.
La unidad física en la que está contenido el medio de grabación del disco se llama controlador de disco (disk
driver). El controlador de disco contiene un paquete de disco o volumen. La figura siguiente muestra las
componentes principales de un paquete de disco, conformado por pistas.
_________________________________________________________________________________
Area de Computación, Universidad de La Serena
2
Fundamento de Informática Teórica(2003)
Prof. Dr. Eric Jeltsch F.
La siguiente figura, muestra las componentes principales de un paquete de disco y el mecanismo de
lectura y escritura para la transmisión de datos. El paquete de disco está formado por un conjunto de superficies
grabables (discos) montados sobre un eje. En operación, el eje y los discos rotan a una alta velocidad. Los datos
se graban sobre las pistas, que son coronas circulares grabables encontradas sobre cada superficie, tal como se
mostro en la figura anterior.
El conjunto de dichas pistas se denomina Cilindro, esto es muy útil pues cualquier posicionamiento de
un conjunto de cabezas de lectura/escritura puede ser descrito por la localización del cilindro, por ejemplo
cilindro 199. En general la dirección de un registro del disco normalmente necesita información sobre el número
del cilindro, de la superficie y del bloque.
_________________________________________________________________________________
Area de Computación, Universidad de La Serena
3
Fundamento de Informática Teórica(2003)
Prof. Dr. Eric Jeltsch F.
La dirección de un registro del disco normalmente necesita información sobre el número del
cilindro, de la superficie y del bloque.
BLOQUES DE ALMACENAMIENTO FÍSICO
El registro físico o bloque es la unidad de dato más pequeña en un disco que es físicamente direccionable, vea la
figura anterior, en donde cada pista en una superficie está compuesta de un número de bloques. Un bloque puede
contener uno o más registros lógicos.
Ejemplo: Supongamos que tenemos un factor de compactación de 3, esto significa que en cada bloque se
almacenan tres registros lógicos. Supongamos que deseamos recuperar el registro Juan Perez almacenado en la
siguiente dirección:
Número de cilindro: 5
Número de superficie: 2
Número de bloque: 1
Para recuperar el registro Juan Pérez, las cabezas de lectura/escritura se mueven sobre el cilindro 5 (pista
5 en todas las superficies). Entonces se activan las cabezas de lectura/escritura para la superficie número 2 y se
leen los números de bloques a la vez que la pista gira sobre las cabezas. Cuando se detecta el bloque 1, el bloque
entero de tres registros lógicos se lee en memoria principal, donde se selecciona el registro Juan Pérez.
En nuestro ejemplo suponemos la estructura más general de un disco, donde las cabe zas de
lectura/escritura están sujetas a un brazo movible. No todas las unidades de disco están configuradas de esta
forma. En algunas, las cabezas de lectura/escritura son fijas para cada cilindro. Típicamente estas unidades son
más costosas, pero más rápidas, debido a que no hay retraso en mover las cabezas de lectura/escritura sobre un
nuevo cilindro.
Generalmente, el tiempo necesario para ejecutar cálculos en un bloque es mucho menor que el necesario
para transferir los datos entre el almacenamiento secundario y el primario. Sin embargo, una buena estrategia de
diseño es identificar, donde sea posible, los registros lógicos que probablemente se usan en las mismas
operaciones y agruparlos en bloques.
Ejemplo: Supongamos que una firma almacena tres tipos de alambres, A, B y C, y que se entregan en el mismo
cargamento. Si cada bloque contiene tres registros y los registros A, B y C se almacenan en bloques separados, se
necesitarían tres operaciones de entrada/salida (E/S) para actualizarlos. Sin embargo, si se agrupan en el mismo
bloque, entonces sólo es necesaria una operación de E/S. Debido a que generalmente el acceso a disco es un
cuello de botella en las operaciones de acceso a una base de datos, una asignación cuidadosa de los registros en
los bloques puede mejorar significativamente el tiempo de respuesta.
FACTORES DE RENDIMIENTO DEL DISCO
En general, hay cuatro factores que directamente afectan a la velocidad, con la que los datos se
transfieren a y desde el almacenamiento en disco: tiempo de posicionamiento (access motion time), tiempo de
activación de la cabeza, retraso de rotación y razón de transferencia.
Tiempo de posicionamiento (TP), se conoce como tiempo de búsqueda (seek time), es el tiempo necesario para
mover las cabezas de lectura/escritura desde su posición actual a una nueva dirección de cilindro. Obviamente, un
movimiento hacia una posición adyacente no toma la misma cantidad de tiempo que moverse a través de toda la
superficie del disco (desde la pista más interna hasta la más externa, y viceversa). Como una aproximación en los
cálculos puede usarse el tiempo medio de posicionamiento: aproximadamente el tiempo necesario para moverse a
través de la mitad de los cilindros, por lo que debe usarse un método más sofisticado. Un acuerdo estándar
_________________________________________________________________________________
Area de Computación, Universidad de La Serena
4
Fundamento de Informática Teórica(2003)
Prof. Dr. Eric Jeltsch F.
consiste en que la probabilidad de acceso para todos los registros sea igual, brindando una distribución de
probabilidad uniforme. El promedio para una distribución uniforme se encuentra en el medio entre los valores
extremos. Para el tiempo de posicionamiento, el valor extremo pudiera ser (1) mantenerse posicionado sobre el
cilindro actual, o (2) moverse desde el cilindro más interno hacia el más externo (o viceversa). Dado que
asumimos la distribución uniforme, la media sería el tiempo para moverse a través de la mitad de los cilindros.
De doce a veinte milisegundos es el tiempo medio típico de posicionamiento, de acuerdo con el modelo y la
composición del controlador de disco, hoy en día es factible de encontrar tiempos medios menores.
Tiempo de activación de la cabeza es el tiempo necesario para activar electrónicamente la cabeza que se
encuentra sobre la superficie cuando ocurre la transferencia de datos. En comparación con otros factores de
rendimiento, generalmente este tiempo es despreciable. Por esta razón rara vez se usa en los cálculos de
rendimiento.
El Retraso de rotación o latencia es el tercer factor de tiempo. Representa la cantidad de tiempo que necesita el
bloque seleccionado para rotar la cabeza, de forma tal que la transferencia de datos pueda comenzar. El tiempo de
rotación depende de dos factores: a qué rapidez rota el disco y la localización del bloque buscado en relación con
el tiempo de activación de la cabeza de lectura/escritura. Físicamente este tiempo puede variar desde cero hasta el
tiempo necesario para completar una revolución del disco (R).
Ejemplo: Supongamos que desea montar sobre el caballo negro en el carrusel (asumiendo que existe sólo un
caballo de este tipo). Si compra un ticket y corre a montarse en el carrusel, la probabilidad de que el caballo
negro puede estar justo donde se detuvo sería la misma que para cualquiera de los otros caballos. Si fuera un
fanático y lo intentara varias veces, puede que alguna vez se detenga frente al caballo negro, pero también puede
encontrarse con la situación en que lo pierda y tenga que esperar por una vuelta completa del carrusel. Como
media, espera media vuelta para montarse en el caballo negro. La moraleja de esta historia es que los cálculos de
rendimiento generalmente asumen un retraso de rotación media de R/2.
TRANSFERENCIA DE DATOS
Razón de transferencia de datos (D) se refiere a la cantidad de tiempo necesario para transferir los datos desde
el disco hacia (o desde) la memoria principal. Depende de la velocidad de rotación y de la cantidad de datos
almacenados. El tiempo de transferencia de datos normalmente se expresa en cientos de bytes por segundo.
Tiempo de transferencia de datos
El tiempo previsto (T) para acceder a una dirección en disco y transferir un bloque de datos se estima como
T= P + R/2 + L/D,
donde P es el tiempo de posicionamiento, R es el retraso de rotación, L es el tamaño del bloque en bytes y D es la
velocidad de transferencia de datos.
Ejemplo (registro accedido aleatoriamente). Supongamos que los registros de reclamación de una compañía de
seguros se almacenan en bloques de tres registros en el disco (un factor de compactación de tres) y que cada
registro de reclamación ocupa 200 bytes. La velocidad de transferencia de datos es de 806.000 bytes por segundo.
El tiempo de posicionamiento medio es de 30 milisegundos. La unidad de disco rota a una velocidad de 3.600
vueltas por minuto. Supongamos que un usuario llama para averiguar el estado de una reclamación. ¿Cuál es el
tiempo de transferencia de datos para buscar el bloque de datos? Para responder esta pregunta se asignan valores
apropiados a las variables anteriores en la forma siguiente.
A=0,030 seg.
Revoluciones por segundos = 7.200/60=120.
_________________________________________________________________________________
Area de Computación, Universidad de La Serena
5
Fundamento de Informática Teórica(2003)
Prof. Dr. Eric Jeltsch F.
R= 1/120 seg. = 0,0083 seg.
R/2 = 0, 0083 * ½(la media de espera es de media revolución) = 0, 00415
L/D = 600/806000 = 0,00074, por lo que T = 0,030 + 0, 00415 + 0, 00074 = 0, 03489 seg.
Ejemplo (registro accedido secuencialmente). Ahora analizaremos el cálculo del tiempo medio de acceso a un
registro en un archivo accedido secuencialmente. Supongamos que en vez de responder al acceso aleatorio de un
bloque de datos, como en el ejemplo anterior, estamos actualizando el archivo de un usuario de la compañía de
seguros con los pagos recibidos a principios de mes. Tiene sentido que estos archivos estén organizados
secuencialmente por el número de la póliza y que estén localizados en bloques secuenciales por cilindros. Esto
significa que primero se rellena el cilindro N con bloques secuenciales, después el N + 1 y así sucesivamente. De
esta forma se minimiza el tiempo de movimiento de la cabeza. En particular, si las cabezas de lectura/escritura se
encuentran en el primer cilindro, entonces todos los registros en este cilindro se transfieren sin un tiempo de
posicionamiento adicional. Por lo que, en el cálculo del tiempo de acceso medio para cada registro de un archivo
procesado secuencialmente, el tiempo de posicionamiento es despreciable y se ignora.
Pudiera existir un pequeño retraso cada vez que la función de lectura/escritura cambia desde una pista de
un cilindro hacia otra. Esto es necesario con el objetivo de disminuir pequeñas diferencias en la alineación de las
pistas sobre diferentes superficies. Para nuestros propósitos, este retraso puede ser aproximadamente el tiempo
necesario para dar una media vuelta del paquete de disco. Una vez se haya encontrado el registro inicial de la
nueva pista, se pueden transmitir el resto de los bloques sobre la pista. Por tanto, si el archivo del usuario ocupa
ocho pistas sobre el cilindro, el número de retraso de medias vueltas sería 8.
Supongamos ahora que cada pista contiene 1.000 bloques. Tenemos un total de 8.000 bloques; si los mismos
tienen un factor de compactación de tres, tenemos 24.000 registros de pólizas. Asumamos, como antes, que cada
registro contiene 200 bytes, entonces nuestros bloques ocupan 600 bytes. Si procesamos secuencialmente un
archivo completo, el tiempo medio para acceder a un registro se calcula como sigue
Tiempo total para leer todos los bloques = 0,00415 * (8) + 0,00074 * (8000) = 0,0664 + 5,92 = 5,9232.
T representa el tiempo de transferencia medio para un registro accedido secuencialmente en el archivo de pólizas.
Aplicación: Suponga que tenemos almacenados registros en un dispositivo de disco que posee las siguientes
características: Tiempo de posicionamiento medio: 0,02 seg., velocidad de rotación del disco: 3.600 revoluciones
por minuto, velocidad de transferencia de datos: 312.000 bytes por segundo. ¿Cuál es el tiempo de transferencia
de datos esperado para un registro físico accedido aleatoriamente que ocupa 500 bytes?.
Organización de archivos y métodos de direccionamiento
Hasta ahora se ha aprendido algo acerca de los dispositivos que se usan para almacenar datos y las operaciones de
E/S usadas para transmitir datos hacia y desde dichos dispositivos. Ahora consideraremos los métodos de
organización y direccionamiento de estos datos sobre dichos dispositivos para facilitar el almacenamiento y las
operaciones de E/S. Existen tres formas básicas de organización física de archivos sobre los dispositivos de
almacenamiento:
(1) organización secuencial,
(2) organización secuencial-indexada y
(3) organización directa.
(4) Función hash
Estas no son un conjunto completo de todas las opciones de organización posibles, pero aquellas que se omiten
no son más que modificaciones de estos 3 tipos básicos. En la presentación de este tema, los términos
organización y acceso se usan a menudo libremente, pero no son intercambiables. La razón es que la forma en
que los datos estén almacenados está estrechamente relacionada con el método de acceso.
_________________________________________________________________________________
Area de Computación, Universidad de La Serena
6
Fundamento de Informática Teórica(2003)
Prof. Dr. Eric Jeltsch F.
(1) Organización secuencial de un archivo
La organización secuencial de un archivo significa que los registros se almacenan adyacentes unos a otros, de
acuerdo con la clave, como son el número del empleado, el número de cuenta, entre otros. Una implementación
convencional organiza los registros en orden ascendente de los valores de la clave. Este es un método eficiente de
organización de registros cuando una aplicación, como el programa de nómina, actualiza un número insignificante de los registros ya almacenados. Si un archivo secuencial se encuentra sobre una cinta magnética, sus
registros se acceden sólo de forma secuencial. Esto significa que, si deseamos acceder al décimo registro
secuencial, generalmente se deberán leer los anteriores nueve registros. El acceso directo a un registro en
particular no es posible. Como consecuencia, las cintas magnéticas no son propias para las operaciones de bases
de datos y normalmente se usan para guardar los archivos de diario y almacenar información de archivos.
(2) Organización secuencial-indexada de un archivo
Consiste en que los archivos están organizados secuencialmente; sin embargo, es posible acceder directamente a
los registros. La organización secuencial-indexada de un archivo brinda facilidades para acceder a los registros de
ambas formas, secuencial y directamente. Los registros se almacenan en la secuencia física usual por la clave
primaria. Además, se almacena en el disco el índice de la localización del registro. Esto permite el acceso secuencial a los registros para aquellas aplicaciones que realicen una gran cantidad de actualizaciones y, por otra parte,
el acceso directo de acuerdo con las solicitudes de los usuarios. En la siguiente figura
se muestra una versión simplificada de cómo opera el acceso secuencial-indexado. Los índices y registros se
almacenan en disco. Hemos limitamos el número de cilindros y pistas para los propósitos de nuestro ejemplo. En
primer lugar debe observarse que los registros se encuentran organizados secuencialmente en las tres pistas del
cilindro 1. El procesamiento secuencial se realiza comenzando por el primer registro del archivo, procediendo
entonces a través del archivo desde el primer registro hasta el último. También se facilita el acceso directo a los
registros. Supongamos que deseamos recuperar el registro 31. Al buscar en el índice del cilindro encontramos
que dicho registro se encuentra en el cilindro 1. Ya que la clave del registro de numeración más alta en el cilindro
1 es el 52, Y como los registros se ordenaron secuencialmente por la clave, el registro 31 debe estar en el cilindro
1. La búsqueda del índice de la pista para el cilindro 1 muestra que el registro 31 está en la pista 2. En esta
_________________________________________________________________________________
Area de Computación, Universidad de La Serena
7
Fundamento de Informática Teórica(2003)
Prof. Dr. Eric Jeltsch F.
situación, la cabeza de lectura/escritura se mueve hacia el cilindro 1 y se activa la cabeza de lectura/escritura de
la pista 2. Sobre la pista 2 se realiza una búsqueda secuencial para localizar el registro 31. Aunque la búsqueda
secuencial no ha sido completamente eliminada, su alcance se redujo suficientemente como para justificar el
término acceso directo.
Nuestro ejemplo utiliza registros que no son bloques, pero puede extenderse fácilmente a registros que sean
bloques. Pensemos entonces que el área de datos es como un contenedor de, tres registros y consideremos el área
clave como la clave del registro más alto en el bloque.
(3)Organización directa de un archivo
Hasta aquí se han discutido dos formas de organización de archivos: secuencial y secuencial -indexada. Se han
destacado simultáneamente los dos métodos de acceso a un archivo:acceso secuencial y acceso directo. Los
registros en una simple organización secuencial de un archivo se acceden solamente de forma secuencial. Los
registros en una organización secuencial-indexada de un archivo se acceden directa y secuencialmente.
Finalmente consideremos un tercer tipo de organización de archivos llamada directa o hash. Solamente los
métodos de acceso directo son aplicables a este tipo de organización de archivos.
(4)Funciones Hash estáticas
Una de las desventajas del esquema indexado es que se debe acceder y leer el índice para localizar los registros.
El uso de técnicas hashing como método de direccionamiento elimina la necesidad del mantenimiento y
búsqueda de índices. La eliminación del índice evita la necesidad de hacer dos accesos al almacenamiento
secundario para acceder a un registro: uno para leer el índice y otro para acceder al archivo.
_________________________________________________________________________________
Area de Computación, Universidad de La Serena
8
Descargar