Está en la página 1de 40

Organización y acceso a los datos

Bases de Datos 2 - Tecnologo de Informatica

BD2 - Programación
Outline

1 Almacenamiento en disco
Medios de almacenamiento
Dispositivos de almacenamiento secundario

2 Estructuras básicas de archivo


Organización de Archivos
Organización de Registros en Archivos

BD2 - Programación
Outline

1 Almacenamiento en disco
Medios de almacenamiento
Dispositivos de almacenamiento secundario

2 Estructuras básicas de archivo


Organización de Archivos
Organización de Registros en Archivos

BD2 - Programación
Outline

1 Almacenamiento en disco
Medios de almacenamiento
Dispositivos de almacenamiento secundario

2 Estructuras básicas de archivo


Organización de Archivos
Organización de Registros en Archivos

BD2 - Programación
Jerarquía de almacenamento

La colección de datos que constituye una BD debe


almacenarse físicamente en un medio de
almacenamiento.
Luego el DBMS puede recuperar, actualizar y procesar
estos datos.
Los medios de almacenamiento forman una jerarquía de
almacenamento.
1 Almacenamiento principal o primario
2 Almacenamiento secundario
3 Almacenamiento terciario

BD2 - Programación
Almacenamiento principal o primario

Medios utilizados directamente por el CPU.


El principal es la memoria que es subdividida en una
jerarquía.
Memoria caché, es una RAM estática. La utiliza el CPU
para acelerar la ejecución de los programas. Es muy cara.
Memoria principal, es una DRAM (RAM dinámica). Área
de trabajo de la CPU para almacenar programas y datos.
Tiene menor costo y es más lenta que la RAM estática.
En algunos casos, una BD pueden mantenerse totalmente
en la memoria principal. Son útiles en aplicaciones de
tiempo real.

BD2 - Programación
Almacenamiento secundario y terciario

La principal opción para almacenamiento de BD online son


los discos magnéticos.
Otra opción para almacenar información persistente son
las memorias flash.
SSD (solid-state-drive).
Los discos ópticos y las cintas son utilizados en
sistemas de almacenamiento offline. Son categorizados
como almacenamiento tercieario.
Estos dispositivos tienen gran capacidad, cuestan poco y
proporcionan un acceso más lento que los dispositivos de
almacenamiento primarios.
Los datos no pueden ser procesados directamente por el
CPU; primero deben copiarse en el almacenamiento
principal.

BD2 - Programación
Almacenamiento de bases de datos

Las BD normalmente almacenan grandes cantidades de


datos.
La mayoría se almacenan de forma permanente (o
persistentemente) en almacenamiento secundario de
disco magnético debido a:
Son demasiado grandes para entrar en memoria.
Perdida de datos almacenados y almacenamiento no
volátil.
Costo de almacenamiento.
Son dispositivos online.

BD2 - Programación
Outline

1 Almacenamiento en disco
Medios de almacenamiento
Dispositivos de almacenamiento secundario

2 Estructuras básicas de archivo


Organización de Archivos
Organización de Registros en Archivos

BD2 - Programación
Dispostivos de disco
Discos magnéticos

Disco Duro (HDD por hard disk drive) es un dispositivo que


contiene discos magnéticos.
Su unidad básica es el bit. La información es codificada en
bytes, comunmente de a 8 bits c/byte.
La información se almacena en bloques de disco (o
páginas). Un bloque es una secuencia de sectores de una
misma pista/track del disco. Las pistas de varios discos
forman un cilindro (ver imagen).
La dirección de hardware de un bloque es una
combinación de número de cilindro, número de pista y
número de bloque.

BD2 - Programación
Dispostivos de disco

Figura : Elmasri edición 7, fig. 16.1


BD2 - Programación
Bloques de disco

La transferencia de datos entre la memoria principal y el


disco tiene lugar en unidades de bloques de disco.
El rango de tamaños varia de 512 bytes a varios kilobytes
por bloque.
Se puede indicar la cantidad de bloques por pista al
formatear el disco.
Bloques pequeños: más transferencias desde el disco.
Bloques más grandes: más espacio desperdiciado.
Tamaño típico oscila entre 4 y 16 KB.

BD2 - Programación
Buffer y Buffer Manager

Los sistemas de BD buscan minimizar el número de


bloques o páginas tranferidos entre el disco y la memoria.
Podemos reducir el número de accesos a disco
manteniendo en memoria principal tantos bloques como
sea posible.
Buffer es una porción de la memoria principal disponible
para almacenar copias de bloques de disco.
Se llama Buffer manager al subsistema del DBMS
responsable de la asignación de espacio del buffer.
El buffer manager ve la memoria principal disponible como
un buffer pool. El tamaño del buffer pool es tipicamente un
parámetro del DBMS controlado por el DBA.

BD2 - Programación
Buffer Manager

Los programas llaman al buffer manager cuando necesitan


un bloque de disco.

1 Si el bloque está en el buffer, el buffer manager retorna la


dirección en memoria principal del bloque.
2 Si el bloque no está en el buffer, el buffer manager:
1 Asigna espacio en el buffer para el bloque.
1 Reemplaza algún otro bloque, de ser necesario, para hacer
lugar al nuevo bloque utilizando una política de reemplazo.
2 Un bloque reemplazado es escrito a disco si fue modificado
desde la última vez que fue escrito o recuperado del disco
(dirty bit on).
2 Lee el bloque del disco al buffer y retorna la dirección en
memoria principal del bloque a quien lo solicitó.

BD2 - Programación
Buffer Manager
Políticas de reemplazo

Least recently used (LRU). Se elige para reemplazo la


página que no ha sido utilizada por el período más largo.
Clock policy. Se marca cada buffer con un 0 o 1
dependiendo de su uso. Se busca en recorrida round-robin
el primer buffer que tenga valor 0 para su reemplazo.
First-in-first-out (FIFO). Se elige el buffer que ha estado
ocupado más tiempo por una página. Requiere menos
mantenimiento que LRU.
Pinned block. Bloques de memoria que no está permitido
bajarlos a disco.

BD2 - Programación
Buffer Manager
Políticas de reemplazo

Las políticas LRU y Clock no son las mejores para


aplicaciones de BD que requieren recorridas secuenciales
de datos y el archivo no entra completamente en el buffer.
Políticas como FIFO pueden modificarse para asegurar
que bloques marcados/pinned, como bloques raiz de un
índice, permanezcan en el buffer.
En algunas situaciones puede forzarse la escritura a disco
incluso cuando no es necesario el espacio ocupado. Ej.
registros de log.
Hay mas estrategías de reemplazo. Ej MRU (most recently
used).

BD2 - Programación
Subsistema de disco
Interfacing Disk Drives to Computer Systems

Múltiples discos están conectados al sistema computador


a través del controlador de disco.
Familias de estandar de interfaces de disco:
SATA (Serial ATA); dtr 150 MB/s.
SCSI (Small Computer System Interconnect)
SAS (Serial Attached SCSI); dtr 3 a 6 Gb/s.
Otras variantes de cada standard.

BD2 - Programación
Subsistema de disco

Comunmente el controlador está incluido en el disco


(DAS, Direct Attached Storage).
En un Storage Area Networks (SAN), un gran número de
discos (LUN, Logical Unit Number) están conectados por
una red de alta velocidad a un números de servidores.
En un Network Attached Storage (NAS) el storage
conectado en red provee una interfaz de sistema de
archivos (file system) utilizando un protocolo de red de
sistema de archivos (NFS), en lugar de proveer un sistema
de interfaz de disco.

BD2 - Programación
Dispositivos de cinta magnética

Acceso a los bloques de datos en orden secuencial.


Los discos son almacenamiento de acceso aleatorio
porque cualquier bloque puede ser accedido de forma
aleatoria conocida su dirección.
En una cinta para acceder al n-ésimo bloque deben
recorrerse los n-1 bloques anteriores.
Utilizados principalmente para la copia de seguridad de la
base de datos, para archivar información y como medio
para transferencia de informacón de un sistema a otro.
Tape jukeboxes son sistemas que almacenan de cientos
de terabytes hasta varios petabytes.
Ejemplos:
LTO-6, 2.5-TB , dtr 160 MB/s. 80 segundos de promedio de
busqueda.
T10000D de Oracle/StorageTek, 8.5 TB, dtr 252 MB/s.

BD2 - Programación
Outline

1 Almacenamiento en disco
Medios de almacenamiento
Dispositivos de almacenamiento secundario

2 Estructuras básicas de archivo


Organización de Archivos
Organización de Registros en Archivos

BD2 - Programación
Outline

1 Almacenamiento en disco
Medios de almacenamiento
Dispositivos de almacenamiento secundario

2 Estructuras básicas de archivo


Organización de Archivos
Organización de Registros en Archivos

BD2 - Programación
Organización de Archivos

La base de datos es almacenada como una colección de


archivos. Cada archivo es una secuencia de registros. Un
registro es una secuencia de campos.
Un enfoque:
Asumir que el tamaño/largo del registro es fijo.
Cada archivo tiene registros solo de un tipo.
Diferentes archivos son utilizados para diferentes
relaciones.
Este caso es fácil de implementar. Luego vemos otros
casos.

BD2 - Programación
Registros de largo fijo

Enfoque simple:
El registro almacenado i empieza en el byte n*(n-1), donde
n es el tamaño de cada registro.
Acceder al registro es simple pero los registros pueden
cruzar bloques.
Hay varias alternativas al borrar un registro i:
Mover los registros i+1,...,n a
i,...,n-1.
Mover el registro n a i.
No mover registros pero
mantener links a todos los
registros libres (free list).

BD2 - Programación
Registros de largo fijo
Borro registro 3 y compacto

BD2 - Programación
Registros de tamaño fijo
Borro registro 3 y muevo el último

BD2 - Programación
Registros de largo fijo
Free List

Almaceno la dirección del primer registro borrado en el


cabezal del archivo.
Uso el dicho registro para almacenar la dirección del
seegundo registro borrado y así sucesivamente.

BD2 - Programación
Registros de largo variable

Un sistema de BD puede utilizar registros de largo


variable por varias razones:
Alamacena varios tipos de registro en un archivo.
Los tipos de registro permiten largos variables para uno o
más campos (ej. varchar).
Los registros de un archivo son del mismo tipo, pero uno o
más campos son opcionales; es decir, pueden incluir
valores para algunos registros pero no todos (campos
opcionales).
Los atributos son almacenados en orden.
Cada registro tiene un valor para cada campo.
Valores Null son representados con null-value bitmap.
Pueden utilizarse caracteres separadores especiales para
finalizar los campos de largo variable o podemos
almacenar el largo del campo (offset y largo).

BD2 - Programación
Registros de largo variable
Formatos de registros

BD2 - Programación
Outline

1 Almacenamiento en disco
Medios de almacenamiento
Dispositivos de almacenamiento secundario

2 Estructuras básicas de archivo


Organización de Archivos
Organización de Registros en Archivos

BD2 - Programación
Organización de Registros en Archivos

Organizaciones principales de ficheros que determinan la


colocación física (organización) de los registros del fichero
en el disco y cómo se puede acceder a ellos (métodos de
acceso).
Típicas operaciones sobre archivos: open, reset, find
(locate), read (get), findnext, delete, modify, insert, close.
Una organización de archivos exitosa debe llevar a cabo
las operaciones que esperan aplicarse frecuentemente
sobre le archivo de la manera más eficiente posible.
Un archivo puede almacenarse una sola vez utilizando una
organización particular. El DBA puede tomar decisiones de
diseño

BD2 - Programación
Organización de Registros en Archivos

Fichero Heap (fichero desordenado). Un registro puede


ubicarse en el archivo en donde haya espacio. Sin orden
particular.
Fichero Secuencial (fichero ordenado). Registros
almacenados en orden secuencial basado en el valor de
un campo particular de cada registro.
Fichero Disperso (Hashing). Una función de hash
aplicada sobre algún atriuto de cada registro; el resultado
especifica en cual bloque del archivo debe ubicarse el
registro.
Registros de cada relación pueden almacenarse en
archivos separados. En una multitable clustering file
organization registros de diferentes relaciones pueden
almacenarse en el mismo archivo.
Motivación: almacenar registros relacionados en el mismo
bloque para minimizar I/O.

BD2 - Programación
Organización de Registros en Archivos
Blocking factor

Los tamaños de un registro puede ser más grande o


pequeño que el tamaño del bloque. Para registros de largo
fijo con tamaño R bytes y siendo B el tamaño del bloque,
con B>=R, pueden entrar bfr = [B/R]) registros.
bfr es llamado el blockin factor para un archivo.
Notar que la división de los bloques en registros no es
exacta.

BD2 - Programación
Organización Expandidad y No expandida

Para aprovechar el espacio no utilizado podemos


almacenar parte de un registro en un bloque y el resto en
otro.
Un puntero en el final del primer bloque apunta al bloque
que contiene el resto del registro.
Esta organización es dice que es expandida (spanned).
Cuando R>B, debemos utilizar una organización
expandida.
Si no está permitido que los registro crucen bloques, la
organización se dice que es no expandida (unspanned).

BD2 - Programación
Organización Expandidad y No expandida

Figura : Elmasri edición 7, fig. 16.6

BD2 - Programación
Fichero Heap
Fichero desordenado

Es el tipo de organización más simple y básico.


Los registros son ubicados en el archivo en el orden en
que son insertados. Nuevos registros son insertados al
final del archivo.
También es conocido como fichero de pila.
Insertar un nuevo registro es muy eficiente. El último
bloque de disco del archivo es copiado en el buffer, se
agrega el registro y el bloque es reescrito en disco.
La búsqueda por condición requiere llevar a cabo una
búsqueda lineal del archivo bloque por bloque.

BD2 - Programación
Fichero Heap
Fichero desordenado

Para borrar un registro se debe encontrar el bloque,


copiarlo en el buffer, borrar el registro del buffer y reescribir
el bloque en disco.
Esto deja espacio no utilizado en los bloques de disco.
Borrar muchos registros resulta en un desperdicio de
espacio almacenamiento.
Se requiere un reorganización periodica del archivo para
reclamar el espacio no utilizado.
Otra posibilidad es utilizar el espacio de registros borrados
para almacenar nuevos registros.

BD2 - Programación
Fichero Secuencial
Organización Secuencial

Es útil para aplicaciones que requieren procesamiento


secuencial de los archivos completos.
Los registros en el archivo son ordenados por la clave de
ordenación/búsqueda (campo particular).
Los ficheros secuenciales se pueden agrupar y almacenar
en cilindros continuos para minizar tiempos de búsqueda
en disco.

BD2 - Programación
Fichero Secuencial

Insertar y borrar registros son operaciones costosas


porque el archivo debe permanecer ordenado.
Borrado. Utiliza cadenas de punteros.
Inserción. Ubica la posición donde debe insertarse el
registro.
Si hay espacio libre es insertado ahí.
Si no hay espacio libre, es insertado en un bloque
overflow.
En cualquier caso, la cadena de puntero debe ser
actualizada.
Se requiere reorganizar el
archivo de vez en cuando
para restaurar el orden
secuencial.

BD2 - Programación
Multitable Clustering File Organization

Almacena varias relaciones en un mismo archivo


utilizando multitable clustering File organization

Departamento

Instructor

Multitable clustering de
Departamento y Instructor

BD2 - Programación
Multitable Clustering File Organization
Es una buena organización para consultas que involucren
operaciones Join entre departamento e instructor, y para
consultas que involucren un departamento y sus
instructores.
Es mala para consultas que involucren solo
departamentos
Se puede argegar cadenas de punteros para linkear
registros de una relación particular.

BD2 - Programación

También podría gustarte