Estructuras de Almacenamiento Nivel FísicoF Nivel Lógico Modelo Entidad-Relación y Modelo Relacional El nivel en el que se deben mover los usuario es el nivel lógico El objetivo de un sistema de bases de datos es simplificar y facilitar la tarea de acceso a los datos Al final están los dispositivos de almacenamiento y es necesario su conocimiento para su adecuada utilización Introducción 2 Índice RAID Acceso al Almacenamiento Organización de los Archivos Organización de los Registros en los Archivos Almacenamiento con Diccionario de Datos RAID Introducción 3 Estructuras de Almacenamiento Requisitos Almacenamiento Los requisitos de almacenamiento de datos de algunas aplicaciones (en particular aplicaciones Web, aplicaciones de bases de datos y aplicaciones multimedia) han crecido tan rápido que se necesita un gran número de discos para almacenar sus datos (incluso aunque las capacidades de los discos hayan estado crecio muy rápidamente) Tener varios discos presenta oportunidades para mejorar la velocidad (discos funcionando con lectura/escritura en paralelo) y la fiabilidad (guardar información repetida) RAID 5 RAID Las técnicas de organización de discos denominadas RAID (Redundant Array of Indepent Disks; Disposición Redundante de Discos Indepientes) se han propuesto para abordar los problemas de rimiento y fiabilidad Nacen con la idea de usar discos pequeños de bajo coste como alternativa económicamente efectiva a los discos grandes y caros Actualmente se usan por su mayor fiabilidad y por su mayor velocidad de transferencia de datos, más que por motivos económicos RAID 6
Fiabilidad RAID Redundancia La probabilidad de que algún disco, de una estructura de N discos, falle es mucho más elevada que la probabilidad de que falle un único disco concreto Tiempo Medio entre Fallos (un disco): 100.000 horas = 11 años Tiempo Medio entre Fallos (un disco de cien): 100.000/100 horas = 1.000 Horas= 42 días La Redundancia consiste en guardar información adicional que normalmente no se necesita pero que puede utilizarse en caso de fallo de un disco para reconstruir la información perdida En presencia de redundancia el tiempo medio efectivo entre fallos aumenta La solución al problema de la fiabilidad es introducir redundancia RAID 7 RAID 8 Creación n de Imágenes Rimiento RAID La forma más sencilla de crear redundancia (y la más costosa) es duplicar los discos (Un disco lógico Dos discos físicos) El tiempo medio entre pérdidas de datos (fallos de un disco con imagen) depe del tiempo medio entre fallos de cada disco y del tiempo medio de reparación Fallos de los discos indepientes Tiempo medio entre fallos de disco: 100.000 Horas Tiempo medio de reparación: 10 Horas Tiempo medio entre pérdidas de datos: 57.000 años (Disponibles sistemas con 55 a 110 años) RAID 9 Con la creación de imágenes la velocidad a la que se pueden procesar las solicitudes de lectura se duplica (la solicitud puede enviarse a cualquiera de los discos, si ambos están operativos) Con varios discos se puede mejorar la velocidad de transferencia distribuyo los datos (en su forma más sencilla se puede hacer una distribución en el nivel del bit: 8 discos > un bit de cada byte en cada disco) Sectores 8 veces más grandes Velocidad de Acceso 8 veces mayor RAID 10 Distribución n Nivel de Bloque Niveles RAID La distribución de datos más usada es la distribución en el nivel de bloque: se reparte los bloques entre varios discos Se trata la disposición de discos como un único y gran disco y se proporciona números lógicos a los bloques de todos los discos comenzando en 0 8 discos: Bloque lógico 0 Bloque físico 0 del disco 1 Bloque lógico 11 Bloque físico 1 del disco 4 Al leer un archivo grande, se buscan n bloques en paralelo en los n discos RAID 11 La creación de imágenes proporciona gran fiabilidad pero resulta costosa La distribución proporciona velocidades de transferencia elevadas pero no mejora la fiabilidad Niveles RAID: esquemas con diferentes compromisos de coste y rimiento (proporcionan la redundancia mediante bits de paridad) 4 discos de datos : bits para corrección de errores mediante paridad C: copia redundante de los datos RAID 12
RAID de Nivel 0 RAID de Nivel 1 RAID de Nivel 0 se refiere a disposiciones de disco con distribución en el nivel de bloque pero sin redundancia (ni creación de imágenes ni bits de paridad) RAID de Nivel 1, o discos con imagen, se refiere a la creación de imágenes de disco con distribución de bloques Distribución no redundante C: Copia C: Copia C C C C RAID 13 RAID 14 RAID de Nivel 2 RAID 2 vs. RAID 1 RAID de Nivel 2 también se conoce como organización de códigos de corrección de errores tipo memoria RAID de Nivel 2 sólo necesita la sobrecarga de tres discos para cuatro discos de datos, a diferencia de RAID de Nivel 1, que necesita la sobrecarga de cuatro discos Realizan la detección de errores utilizando los bits de paridad (1 bit de paridad permite detectar un error en un bit de un byte) C: Copia RAID 15 RAID 16 RAID de Nivel 3 RAID 3 vs. RAID 2 RAID de Nivel 3, u organización de paridad con bits entrelazados, a diferencia de los sistemas de memoria, los controladores de disco pueden detectar si un sector se ha leído correctamente, por lo que es suficiente un bit de paridad Si un sector se deteriora se sabe exactamente cual es y se puede recuperar a través del único bit de paridad C: Copia RAID de Nivel 3 es tan bueno como RAID de Nivel 2, pero resulta menos costoso en cuanto al número de discos adicionales (sólo tiene la sobrecarga de un disco), por lo que RAID de Nivel 2 no se utiliza en la práctica RAID 17 RAID 18
RAID 3 vs. RAID 1 RAID de Nivel 3 tiene dos ventajas respecto a RAID de Nivel 1 Sólo se necesita un disco de paridad para varios discos normales, en comparación con un disco imagen por cada disco en RAID de Nivel 1, por lo que se reduce la sobrecarga de almacenamiento (la velocidad de transferencia es N veces más rápida que en un disco) RAID de Nivel 3 permite un menor número de operaciones de entrada/salida, dado que participan todos los discos RAID 19 RAID de Nivel 4 RAID de Nivel 4, u organización de paridad con bloques entrelazados, usa distribución de bloque y además guarda un bloque de paridad en un disco aparte en un disco aparte para los bloques del resto de discos La velocidad de transferencia es menor, pero se pueden ejecutar en paralelo varios accesos de lectura, lo que produce una mayor velocidad global C: Copia La mejor velocidad de transferencia es para accesos de gran tamaño RAID 20 RAID de Nivel 5 RAID 5 vs. RAID 4 RAID de Nivel 5, o paridad distribuida con bloques entrelazados, divide los datos y la paridad entre los N+1 discos aumentando de esta forma el número de solicitudes atidas por unidad de tiempo RAID de Nivel 4 RAID de Nivel 5 D1 D2 D3 D4 D5 D1 D2 D3 D4 0 1 2 3 0 0 0 1 2 4 5 6 7 1 4 1 5 6 8 9 10 11 2 8 9 2 10 12 13 14 15 3 12 13 14 3 16 17 18 19 4 16 17 18 19 D5 3 7 11 15 4 C: Copia RAID Nivel 5 incluye a RADI Nivel 4 dado que ofrece mejor rimiento de lectura y escritura por el mismo coste RAID 21 RAID 22 RAID de Nivel 6 RAID de Nivel 6, también denominado esquema de redundancia +Q, guarda información redundante adicional para protección contra fallos de disco múltiples Utiliza códigos de Reed-Solomon para la corrección de errores Elección n del Nivel RAID Factores a tener en cuenta al elegir un Nivel RAID Coste económico extra de los requisitos de almacenamiento en disco Requisitos de rimiento en términos del número de operaciones de entrada/salida Rimiento cuando falla un disco Rimiento durante la reconstrucción (mientras los datos del disco estropeado se reconstruyen en un nuevo disco) C: Copia RAID 23 RAID 24
Rimiento en Reconstrucción El rimiento en la reconstrucción de un sistema RAID puede ser un factor importante si se necesita un aporte continuo de datos, como ocurre en los sistemas de bases de datos de alto rimiento RAID de Nivel 0 se usa en aplicaciones de alto rimiento donde la seguridad de los datos no es crítica RAID de Nivel 1 presenta la reconstrucción más sencillo pero con el sistema más caro RAID de Nivel 3 (2) raramente se usa dado que la distribución de bloques da mejores resultados para grandes transferencias RAID 25 Rimiento en Reconstrucción RAID de Nivel 5 (4) es una gran opción para aplicaciones donde los datos se leen frecuentemente y se escriben raramente RAID de Nivel 6 no se soporta actualmente en casi ninguna implementación RAID, pero es recomable en aplicaciones en las cuales la seguridad de datos es muy importante RAID de Nivel 1 RAID de Nivel 5 Requisitos Almacenamiento Entrada/Salida Moderado Alto Alto Moderado RAID 26 Aspectos Hardware RAID Software (implementado sin cambios en el nivel hardware) / RAID Hardware (hardware de propósito especial) Intercambio en caliente (los discos averiados se puede eliminar y reemplazar sin apagar el sistema; fundamental en los sistemas críticos 24x7) Varias fuentes de alimentación con baterías de respaldo Varios controladores de disco Varias interconexiones con el sistema Los conceptos RAID se han generalizado a otros dispositivos de almacenamiento e incluso a la transmisión de datos RAID 27 Acceso al Almacenamiento Estructuras de Almacenamiento Archivos y Bloques Las bases de datos se corresponden con archivos, residentes en disco con copia de seguridad en cinta, que mantiene el sistema operativo Cada archivo se divide en unidades de almacenamiento de longitud constantes denominadas bloques, que son las unidades de asignación de almacenamiento y de transferencia de datos Uno de los principales objetivos del sistema de bases de datos es minimizar el número de transferencias de bloques entre el disco y la memoria Acceso al Almacenamiento 29 Memoria Intermedia Una manera de reducir el número de accesos a disco es mantener en la memoria principal todos los bloques que sea posible El objetivo es maximizar la probabilidad de que, cuando se necesite, un bloque ya se encuentre en la memoria principal y por tanto no se necesite un acceso a disco La memoria intermedia (buffer) es la parte de la memoria principal disponible para el almacenamiento de las copias de los bloques de disco El gestor de la memoria intermedia es el responsable de la asignación de la memoria intermedia Acceso al Almacenamiento 30
Gestor Memoria Intermedia Los programas de un sistema de bases de datos formulan solicitudes al gestor de la memoria intermedia cuando necesitan un bloque del disco Si el bloque se encuentra en la memoria intermedia se devuelve al programa solicitante Si el bloque no se encuentra en la memoria intermedia el gestor asigna espacio al bloque descartando, si hace falta, algún otro bloque (este se graba en disco si ha sido modificado desde la última vez que se grabó) y lo lee a la memoria intermedia Esquemas de Gestión de Memoria específicos Acceso al Almacenamiento 31 Estrategia de Substitución Cuando no queda espacio libre en la memoria intermedia hay que eliminar un bloque de ésta antes de que se pueda escribir en él otro nuevo Generalmente los sistemas operativos utilizan un esquema de menos recientemente utilizado (Last Recently Used, LRU), en el que se vuelve a escribir en el disco y se elimina de la memoria intermedia el bloque al que se ha hecho referencia menos recientemente En las bases de datos funciona mejor el esquema de más recientemente utilizado (Most Recently Used, MRU) pues se suele reutilizar la información Acceso al Almacenamiento 32 Bloques Clavados ara que el sistema de bases de datos pueda recuperarse de las caídas resulta necesario limitar las ocasiones en que se puede volver a escribir el bloque en el disco Se dice que un bloque está clavado cuando no se le permite que se vuelva a escribir en el disco Aunque muchos sistemas operativos no permiten trabajar con bloques clavados, esta prestación resulta esencial para la implementación de un sistema de bases de datos resistente a caídas Salida Forzada de Bloques Hay situaciones en las que resulta necesario volver a escribir el bloque en el disco, aunque no se necesite el espacio de memoria intermedia que ocupa Este proceso de escritura se denomina salida forzada del bloque Se necesita la salida forzada porque la memoria intermedia se pierde en las caídas mientras que los datos del disco suelen sobrevivir Acceso al Almacenamiento 33 Acceso al Almacenamiento 34 Ejemplo prestatario for each tupla p de prestatario do for each tupla c de cliente do if p[nombre_cliente]=c[nombre_cliente] then begin sea x una tupla definida como sigue: x[nombre_cliente]:=p[nombre_cliente] x[numero_prestamo]:=p[numero_prestamo] x[calle_cliente]:=c[calle_cliente] x[ciudad_cliente]:=c[ciudad_cliente] incluir la tupla x como parte del resultado cliente MRU + clavado del bloque de cliente que se está procesando Acceso al Almacenamiento 35 Organización n de los Archivos Estructuras de Almacenamiento
Registros Registros Longitud Fija Los archivos se organizan lógicamente como secuencias de registros Aunque los bloques son de un tamaño fijo determinado por las propiedades físicas del disco y por el sistema operativo, los tamaños de los registros varían pues en las bases de datos relacionales las tuplas de las diferentes relaciones suelen ser de tamaños distintos type cuenta = record numero_cuenta: char(10); nombre_sucursal: char(22); saldo: real; 40 bytes 1 carácter = 1 byte 1 real = 8 bytes Organización n de los Archivos 37 Organización n de los Archivos 38 Registros Consecutivos Desplazamiento Global registro 2 registro 6 registro 7 registro 8 registro 6 registro 7 registro 8 Resulta difícil borrar un registro (rellenar o marcar) Registros en dos bloques (salvo tamaño múltiplo exacto) Necesita desplazar muchos registros Organización n de los Archivos 39 Organización n de los Archivos 40 Desplazar Último Cabecera de Archivo registro 8 registro 6 registro 7 Más sencilla que un desplazamiento global Mejor dejarlos libres y esperar una inserción posterior (no basta una simple marca) Organización n de los Archivos 41 cabecera registro 2 registro 6 registro 7 registro 8 La cabecera de archivo guarda la dirección del primer registro libre y cada registro libre se utiliza para guardar la dirección del siguiente registro libre Organización n de los Archivos 42
Registros Longitud Variable Registros Longitud Variable Los registros de longitud variable surgen en los sistemas de bases de datos de varias maneras: Almacenamiento de varios tipos de registros en un mismo archivo Tipos de registro que permiten longitudes variables para uno o varios campos Tipos de registros que permiten campos repetidos type lista_cuentas = record nombre_sucursal: char(22); informacion_cuentas: array [1 ] of record numero_cuenta: char(10); saldo: real No hay límite para el tamaño del registro hasta el tamaño del disco Organización n de los Archivos 43 Organización n de los Archivos 44 Cadena de Bytes áginas con Ranuras registro 2 Cabecera de bloque Número Entradas Tamaño Ubicación Espacio Libre No resulta sencillo reutilizar el espacio ocupado por un registro borrado anteriormente (fragmentación) No queda espacio para el aumento del tamaño de los registros (el desplazamiento es costoso) Fin del espacio libre Organización n de los Archivos 45 Organización n de los Archivos 46 Espacio Reservado Listas Enlazadas registro 2 Válida si existe una longitud máxima que no se supera nunca registro 2 registro 6 registro 7 registro 8 Organización n de los Archivos 47 Organización n de los Archivos 48
Organización n de los Registros en los Archivos Organización n de Registros Generalmente se usa un archivo separado para almacenar los registros de cada relación de la base de datos Existen organizaciones de archivos en agrupaciones en las cuales se guardan en el mismo archivo registros de relaciones diferentes Estructuras de Almacenamiento Organización n de los Registros en los Archivos 50 Archivos en Montículo En la organización de archivos en montículo se puede colocar cualquier registro en cualquier parte del archivo en que haya espacio suficiente No hay ninguna ordenación de los registros Generalmente sólo hay un archivo por relación Organización n de los Registros en los Archivos 51 Archivos Secuenciales En la organización de archivos secuenciales los registros se guardan en orden secuencial, basado en el valor de la clave de búsqueda (no tiene por qué ser una clave principal o una superclave) de cada registro Organización n de los Registros en los Archivos 52 Hash En la organización asociativa (hash) de archivos se calcula una función de asociación de algún atributo de cada registro El resultado de la función de asociación especifica el bloque del archivo en el que se colocará el registro Está muy relacionado con la creación de índices Almacenamiento con Diccionario de Datos Organización n de los Registros en los Archivos 53 Estructuras de Almacenamiento
Catálogo del Sistema Un sistema de bases de datos relacional necesita tener datos sobre las relaciones, como por ejemplo el esquema Los nombres de las relaciones Los nombres de los atributos de cada relación Los dominios y las longitudes de los atributos Los nombres de las vistas definidas en la base de datos y las definiciones de esas vistas Las restricciones de integridad Además datos de los usuarios del sistema Los nombres de los usuarios autorizados La información de las cuentas de los usuarios Contraseñas u otra información usada para autentificar a los usuarios Almacenamiento con Diccionario de Datos 55 Almacenamiento con Diccionario de Datos 56 Además datos de información estadística y descriptiva Además datos sobre los índices de cada una de las relaciones Número de tuplas de cada relación Método de almacenamiento utilizado para cada relación La organización del almacenamiento (secuencial, asociativa o con montículos) El nombre del índice El nombre de la relación para la cual se crea el índice Los atributos sobre los cuales se define el índice El tipo de índice formado Almacenamiento con Diccionario de Datos 57 Almacenamiento con Diccionario de Datos 58 Minibase de Datos La información del catálogo constituye una base de datos en miniatura Algunos sistemas de bases de datos guardan esta información utilizando estructuras de datos y código especial Suele resultar preferible guardar los datos sobre la base de datos en la misma base de datos Almacenamiento con Diccionario de Datos 59