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