Almacenamiento y Recuperación de la Información 2do Semestre 2005
description
Transcript of Almacenamiento y Recuperación de la Información 2do Semestre 2005
Almacenamiento y Recuperación de la Información
2do Semestre 2005Wenceslao Palma M. <[email protected]>
www.inf.utfsm.cl/~wpalma/ari
Representación de DatosOrganización Física de los Datos
• Representación y organización física sobre un medio de almacenamiento (índices, punteros, listas, etc.).
• Representa la visión del administrador de los archivos (o de la base de datos, DBA), que es dependiente del dispositivo.
• El archivo es visto como una colección de bloques en memoria secundaria.
Representación de DatosOrganización Física de los Datos
Operaciones a considerar:
• Controlar accesos.
• Asignar y administrar buffers.
• Crear y mantener directorios.
• Crear y mantener tablas en la memoria principal.
Representación de DatosElementos de Datos
• Pregunta a responder: ¿cómo se registran en el disco los diferentes tipos de datos, al momento de declaraciones como:
create table ActorDeCine( nombre CHAR(30), domicilio VARCHAR(255), sexo CHAR(1), fecha_nacimiento DATE);
Representación de DatosElementos de Datos
Tipo CHAR(n): este string de largo fijo se representa mediante un arreglo de n bytes.
• Si el valor guardado tiene un largo menor, se completa el espacio con algún carácter especial.
Representación de DatosElementos de Datos
Tipo VARCHAR(n): este string de largo variable se puede representar de dos formas:
• Largo más contenido: asignando un arreglo de (n+1) bytes, siendo el primero de éstos el largo real del dato. Bytes no usados se ignoran.
Representación de DatosElementos de Datos
• String terminado en Nulo: asigna, también, un arreglo de (n+1) bytes, pero sin registrar el largo, sino que tras el último byte de dato válido, se coloca un carácter nulo.
Representación de DatosElementos de Datos
Tipo DATE: representable mediante un string de largo fijo (típicamente CHAR(10).• Ejemplo: 15-04-2004 se presenta con 10 caracteres, uno por cada dígito más uno por cada guión.
Una idea similar se sigue con las horas, expresadas como HH:MM:SS, o similar.
Representación de DatosElementos de Datos
En la mayoría de los otros tipos de datos, en particular los BIT(n), booleanos y enumerativos se representan con tantos bytes como sean suficientes para contener el total de bits presentes, lo que normalmente significa que el último de los bytes no se usa totalmente.
Representación de DatosRegistros
• Registros de Largo Fijo
struct deposito{ char nombre_sucursal[20]; int número_cuenta; char nombre_cliente[20]; float saldo;};
Representación de DatosRegistros de Largo Fijo
Almacenamiento secuencial:
Registro 0 Perryridge 102 Hayes 400 Registro 1 Round Hill 305 Turner 350 Registro 2 Mianus 215 Smith 700 Registro 3 Downtown 101 Johnson 500 Registro 4 Redwood 222 Lindsay 700 Registro 5 Perryridge 201 Williams 900 Registro 6 Brighton 217 Green 750 Registro 7 Downtown 110 Peterson 600 Registro 8 Perryridge 218 Lyle 700
Representación de DatosRegistros de Largo Fijo
Almacenamiento secuencial: problemas...
• Difícil la eliminación de un registro...marca de borrado o llenar con otro registro.
• A menos que el tamaño del bloque sea un múltiplo del registro, algunos registros no podrán almacenarse completamente en un bloque.
Representación de DatosRegistros de Largo Fijo
Almacenamiento secuencial:
Eliminación del Registro 2, con corrimientos de datos
Registro 0 Perryridge 102 Hayes 400Registro 1 Round Hill 305 Turner 350Registro 3 Downtown 101 Johnson 500Registro 4 Redwood 222 Lindsay 700Registro 5 Perryridge 201 Williams 900Registro 6 Brighton 217 Green 750Registro 7 Downtown 110 Peterson 600Registro 8 Perryridge 218 Lyle 700
Representación de DatosRegistros de Largo Fijo
Almacenamiento secuencial:
Eliminación del Registro 2, con traslado del registro 8
Registro 0 Perryridge 102 Hayes 400Registro 1 Round Hill 305 Turner 350Registro 8 Perryridge 218 Lyle 700Registro 3 Downtown 101 Johnson 500Registro 4 Redwood 222 Lindsay 700Registro 5 Perryridge 201 Williams 900Registro 6 Brighton 217 Green 750Registro 7 Downtown 110 Peterson 600
Representación de DatosRegistros de Largo Fijo
Almacenamiento secuencial, con uso de punteros:
Eliminación de los Registros 1, 4 y 6.
EncabezadoRegistro 0 Perryridge 102 Hayes 400Registro 1Registro 2 Mianus 215 Smith 700Registro 3 Downtown 101 Johnson 500Registro 4Registro 5 Perryridge 201 Williams 900Registro 6Registro 7 Downtown 110 Peterson 600Registro 8 Perryridge 218 Lyle 700
Representación de DatosRegistros de Largo Fijo
Encabezados:
• El esquema del registro, o bien un puntero al lugar donde el SABD almacena el esquema para este tipo de registro.• El largo del registro.• Estampillas de tiempo que indican el momento que el registro fue modificado/leído por última vez.
Representación de DatosRegistros de Largo Fijo
Encabezados: la base de datos mantiene información del esquema, rescatada del create table, con:• Los atributos de la relación, y sus tipos.• El orden en el cual aparecen en la tupla.• Restricciones sobre los atributos y la relación misma.
Representación de DatosRegistros de Largo Variable
Campo de Largo Variable:• Por lo general, se guardan al final del registro.• En el encabezado se maneja un puntero al inicio de cada campo de este tipo.
Representación de DatosRegistros de Largo Variable
Campo Repetitivo:• Una alternativa es usar un caracter de separación para delimitar los valores repetitivos del campo, y otro separador para indicar el término del campo.
• Otra alternativa es usar un puntero a la primera ocurrencia del campo, más un número que indique la cantidad de veces de la repetición.
Representación de DatosRegistros de Largo Variable
Campo de Distintos Tipos:
• Cada tipo es precedido por un campo indicador de tipo.
Representación de DatosRegistros de Largo Variable
Campo Opcional:
• Si el número total de campos del registro es alto, pero el número de campos fijos es bajo, se puede incluir una secuencia de duplas <nombre del campo, valor del campo>, en vez de guardar sólo los valores.
• La secuencia anterior puede considerar un número de campo, en lugar del nombre + un esquema para mantener una correspondencia entre los campos y dichos números.
Representación de DatosRegistros de Largo Variable
Grupo Repetitivo:
struct deposito{ int número_cuenta; char nombre_cliente[20]; float saldo;};
struct lista-deposito{ char nombre_sucursal[20]; deposito set(info_cuenta);}
Representación de DatosRegistros de Largo Variable
Grupo Repetitivo: uso de marca especial como fin de registro.
Perryridge 102 Hayes 400 201 Williams 900 218 Lyle 700 Round Hill 305 Turner 350
Mianus 215 Smith 700 Downtown 101 Johnson 500 110 Peterson 600 Redwood 222 Lindsay 700 Brighton 217 Green 750
Representación de DatosRegistros de Largo Variable
Grupo Repetitivo: uso de marca especial como fin de registro ….problemas!!
• No es fácil volver a usar el espacio que ocupaba un registro que se eliminó.
• En general, los registros no disponen de espacio para crecer.
por lo tanto, no se usa normalmente.
Representación de DatosRegistros de Largo Variable
Grupo Repetitivo: Espacio Reservado.
Perryridge 102 Hayes 400 201 Williams 900 218 Lyle 700Round Hill 305 Turner 350
Mianus 215 Smith 700 Downtown 101 Johnson 500 110 Peterson 600 Redwood 222 Lindsay 700 Brighton 217 Green 750
Representación de DatosRegistros de Largo Variable
Perryridge 102 Hayes 400Round Hill 305 Turner 350
Mianus 215 Smith 700Downtown 101 Johnson 500Redwood 222 Lindsay 700
201 Williams 900Brighton 217 Green 750
110 Peterson 600218 Lyle 700
Grupo Repetitivo: Punteros (básico)
Representación de DatosRegistros de Largo Variable
Grupo Repetitivo: Punteros con dos archivos.
Perryridge 102 Hayes 400Round Hill 305 Turner 350
Mianus 215 Smith 700Downtown 101 Johnson 500Redwood 222 Lindsay 700Brighton 217 Green 750
201 Williams 900110 Peterson 600218 Lyle 700
Representación de DatosOrganización de Registros en Bloques
• Factor de bloqueo (fb):
tamaño del bloque / tamaño del registro
• En general, el cuociente no entrega un valor exacto. Luego, se usa la fórmula:
tamaño del bloque / tamaño del registro
• Este factor permite saber el número de bloques del archivo.
Representación de DatosOrganización de Registros en Bloques
Está la posibilidad de usar el espacio libre que queda porque el tamaño del bloque no es múltiplo del tamaño del registro, mediante registros atravesados (SPAN).
Representación de DatosOrganización de Registros en Bloques
Bloque i Registro 1 Registro 2 Registro 3
Bloque i+1 Registro 4 Registro 5 Registro 6
Registros no Atravesados
Bloque i Registro 1 Registro 2 Registro 3 Registro 4a
Bloque i+1 Registro 4b Registro 5 Registro 6 Registro 7
…Registros Atravesados (Registros Span)
Registro 1 Registro 2 Registro 3
Registro 4 Registro 5 Registro 6
Registro 1 Registro 2 Registro 3 Registro 4a
Registro 4b Registro 5 Registro 6 Registro 7
Representación de DatosOrganización de Bloques en Archivos
• Asignación Contigua.
• Asignación Enlazada.
bloque bloque bloque bloque 1 2 3 4
bloque bloque bloque bloque 1 2 3 4
Representación de DatosOrganización de Bloques en Archivos
Representación de DatosOrganización de Bloques en Archivos
• Asignación Indexada.
Representación de DatosOrganización de Bloques en Archivos
Un archivo tiene un encabezado o descriptor de archivo con:
• Información para determinar las direcciones de disco de los bloques del archivo.
• Descripción de los formatos de registros: largo de registro, orden de los campos en el registro, separadores.
Representación de DatosBLOBs
• Un dato de tipo BLOB representa un dato de gran tamaño.
• Ejemplos comunes de datos BLOB son las imágenes (GIF, JPEG), películas en formato MPEG y el audio.
Representación de DatosBLOBs
Almacenamiento:• Debe almacenarse como una secuencia de bloques, comúnmente asignados consecutivamente en un cilindro para ser recuperado fácilmente.• No obstante puede ser almacenado como una lista enlazada de bloques.
Representación de DatosBLOBs
Almacenamiento: (cont.)• Por otro lado, puede requerirse que el BLOB sea recuperado rápidamente, de modo que guardarlo en un solo disco resulte insuficiente.• Luego, será necesario particionar el BLOB entre varios discos, alternando sus bloques entre ellos.• Así, varios bloques del BLOB pueden ser leídos a la vez, aumentando la tasa de recuperación por un factor similar al número de discos de la partición.
FIN