380 likes | 497 Views
Almacenamiento y Recuperación de la Información 2do Semestre 2005 Wenceslao Palma M. < wpalma@inf.utfsm.cl > www.inf.utfsm.cl/~wpalma/ari. Representación de Datos. Organización Física de los Datos.
E N D
Almacenamiento y Recuperación de la Información 2do Semestre 2005 Wenceslao Palma M. <wpalma@inf.utfsm.cl> www.inf.utfsm.cl/~wpalma/ari
Representación de Datos Organizació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 Datos Organizació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 Datos Elementos 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 Datos Elementos 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 Datos Elementos 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 Datos Elementos 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 Datos Elementos 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 Datos Elementos 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 Datos Registros • Registros de Largo Fijo • struct deposito • { • char nombre_sucursal[20]; • int número_cuenta; • char nombre_cliente[20]; • float saldo; • };
Representación de Datos Registros de Largo Fijo Almacenamiento secuencial:
Representación de Datos Registros 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 Datos Registros de Largo Fijo • Almacenamiento secuencial: • Eliminación del Registro 2, con corrimientos de datos
Representación de Datos Registros de Largo Fijo • Almacenamiento secuencial: • Eliminación del Registro 2, con traslado del registro 8
Representación de Datos Registros de Largo Fijo • Almacenamiento secuencial, con uso de punteros: • Eliminación de los Registros 1, 4 y 6.
Representación de Datos Registros 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 Datos Registros 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 Datos Registros 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 Datos Registros 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 Datos Registros de Largo Variable • Campo de Distintos Tipos: • Cada tipo es precedido por un campo indicador de tipo.
Representación de Datos Registros 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 Datos Registros 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 Datos Registros de Largo Variable Grupo Repetitivo: uso de marca especial como fin de registro.
Representación de Datos Registros 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 Datos Registros de Largo Variable Grupo Repetitivo: Espacio Reservado.
Representación de Datos Registros de Largo Variable Grupo Repetitivo: Punteros (básico)
Representación de Datos Registros de Largo Variable Grupo Repetitivo: Punteros con dos archivos.
Representación de Datos Organizació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 Datos Organizació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 Datos Organización de Registros en Bloques 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 Datos Organizació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 Datos Organización de Bloques en Archivos
Representación de Datos Organización de Bloques en Archivos • Asignación Indexada.
Representación de Datos Organizació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 Datos BLOBs • 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 Datos BLOBs 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 Datos BLOBs 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.