Vous êtes sur la page 1sur 29

ANLISIS Y DISEO

Diseo Lgica DE DATOS

Diseo Fisico
D.Fsico - 1
DISEO FSICO
Especificacin de estructuras de almacenamiento internas y caminos
de acceso especficos para que las diversas aplicaciones que accedan
a la BD tengan un buen rendimiento
Cada SGBD ofrece varias opciones:
Diferentes tipos de NDICES
Agrupamiento de registros (de distinto tipo) relacionados en los mismos bloques de
disco (CLUSTER de ficheros)
Distintos tipos de tcnicas de dispersin (HASHING)
Diferentes valores para los parmetros fsicos (tamao de bloque, de buffers, ...)
...
El diseo fsico es muy dependiente del SGBD comercial seleccionado
Una vez elegido el SGBD, el Diseo Fsico consiste en la eleccin e
implementacin de las estructuras ms apropiadas para los archivos de la BD,
entre las opciones que ofrece el SGBD
Disear e implementar los mecanismos de seguridad : vistas de usuario y
reglas de acceso (privilegios/roles)
D.Fsico - 2
D.FSICO: OBJETIVOS
CRITERIOS PARA ELEGIR OPCIONES DE DISEO FSICO (~OBJETIVOS)
TIEMPO DE RESPUESTA (debe minimizarse)
Tiempo entre la introduccin de una transaccin de BD y la obtencin de respuesta
Depende de...
TIEMPO DE ACCESO A LA BASE DE DATOS (bajo el control del SGBD) para obtener los
datos que T necesita
CARGA DEL SISTEMA, PLANIFICACIN DE TAREAS DEL SO, RETRASOS DE
COMUNICACIN (fuera del control del SGBD)

APROVECHAMIENTO DEL ESPACIO (debe optimizarse)


Cantidad de espacio ocupado por archivos de la BD y sus estructuras de acceso

PRODUCTIVIDAD DE LAS TRANSACCIONES (debe maximizarse)


Nmero promedio de transacciones que el SBD puede procesar por minuto
Parmetro crtico de los sistemas de procesamiento masivo de transacciones
Debe medirse en condiciones pico del sistema
D.Fsico - 3
D.FSICO: OBJETIVOS
Especificar LMITES PROMEDIO y del PEOR DE LOS CASOS de cada parmetro
como parte de los REQUERIMIENTOS de RENDIMIENTO del Sistema.

Utilizar tcnicas analticas o experimentales (prototipos, simulacin)


para ESTIMAR valores promedio y del peor de los casos
suponiendo diferentes decisiones de diseo fsico,
para ver si se satisfacen los requerimientos de rendimiento especificados

El rendimiento depende del TAMAO y NMERO de REGISTROS en los ficheros


* estimar estos parmetros para cada fichero
* estimar tambin cmo y cunto va a crecer
(en tamao de registro, o en nmero de registros)
Estimar PATRONES DE ACTUALIZACIN y OBTENCIN de datos para cada
fichero, considerando TODAS las TRANSACCIONES

D.Fsico - 4
D.FSICO: OBJETIVOS

DISEO FSICO

ESTRUCTURAS DE
ALMACENAMIENTO
Y CAMINOS DE IMPLEMENTACIN
inicial
ACCESO

BD

D.Fsico - 5
Diseo FSICO
Muchos sistemas incluyen UTILERAS DE SUPERVISIN que obtiene
ESTADSTICAS DE RENDIMIENTO
N de INVOCACIONES de TRANSACCIONES y/o CONSULTAS PREDEFINIDAS,
Actividades de Entrada/Salida para cada fichero, N de bloques (pginas) por
fichero, N de entradas por ndice, Frecuencias de UTILIZACIN de ndices, ...
Cambios en Requerimientos del Sistema de BD (Nuevas Consultas o
Transacciones, ...) Reorganizar la BD:
Creacin de nuevos ndices, o Modificacin de mtodos de acceso, ...

optimizador: decisin final sobre el camino de acceso. Pero es el diseador


el que puede especificar los mecanismos de acceso que dispondr el
optimizador.
Para asegurar que el optimizador dispone de eficientes mtodos de acceso:
a. Conocer los mecanismos de acceso soportados por el SGBD.
b. Evaluar las circunstancias bajo las que el DBMS utiliza el mecanismo de acceso.
c. Concentrarse sobre las solicitudes de procesamiento ms crticas.

D.Fsico - 6
FACTORES A CONSIDERAR EN EL D.FSICO

Factores que afectan al rendimiento de las aplicaciones


(transacciones y consultas)
Objetivo del DISEO FSICO
ESTRUCTURACIN ADECUADA de datos en el ALMACENAMIENTO de tal forma que
GARANTICE un BUEN RENDIMIENTO de las aplicaciones

Pero para un Esquema Conceptual podemos tener diversos Esquemas Fsicos


posibles en un mismo SGBD: Cul es el ms apropiado? en base a qu
podemos decidirnos por uno u otro?

Imposible analizar el RENDIMIENTO ni TOMAR DECISIONES DE DISEO sin


saber QU USO SE LE VA A DAR A LA BASE DE DATOS
Consultas/Transacciones
Frecuencia (esperada) de Consultas y Transacciones
Restricciones de Tiempo (especiales) de Consultas y Transacciones
Frecuencia (esperada) de operaciones de Actualizacin de la BD

D.Fsico - 7
FACTORES A CONSIDERAR EN EL D.FSICO
1. ANLISIS DE CONSULTAS Y TRANSACCIONES
Definir (alto nivel) transacciones y consultas que se espera ejecutar en la BD
PARA CADA CONSULTA...
TABLAS (FICHEROS) a los que accede
CAMPOS sobre los que se especifica alguna CONDICIN DE SELECCIN
CAMPOS sobre los que se especifica alguna CONDICIN DE REUNIN o de ENLACE
de REGISTROS de diferente tipo
CAMPOS cuyos valores obtiene la consulta
PARA CADA TRANSACCIN y operacin de ACTUALIZACIN...
TABLAS (FICHEROS) que actualiza
Operacin que realiza en cada fichero (INSERCIN, MODIFICACIN, ELIMINACIN)
CAMPOS sobre los que se especifica alguna CONDICIN DE SELECCIN para las
modificaciones y borrados
CAMPOS actualizados (por una operacin de modificacin)
() Candidatos para definir ESTRUCTURAS DE ACCESO sobre ellos
() Candidatos para EVITAR definir ESTRUCTURAS DE ACCESO sobre ellos
D.Fsico - 8
FACTORES A CONSIDERAR EN EL D.FSICO

2. ANLISIS DE FRECUENCIA ESPERADA DE INVOCACIN DE


CONSULTAS Y TRANSACCIONES (tasas o velocidades de invocacin)

Datos de Informacin sobre los CAMPOS


FRECUENCIAS de cada (de seleccin y reunin) en cada
CONSULTA y TRANSACCIN CONSULTA y TRANSACCIN

FRECUENCIA ESPERADA DE USO DE CADA


CAMPO (de seleccin y reunin)
--considerando TODAS las CONSULTAS y
TRANSACCIONES--

Si el volumen de procesamiento es elevado, aplicar la regla informal del 80-20

NO es necesario SUPERVISAR TODAS las Consultas y Transacciones para


recoger Estadsticas y Tasas de Invocacin, sino que BASTA con hacerlo con un
20% de ellas (las que realizan el 80% del procesamiento) D.Fsico - 9
FACTORES A CONSIDERAR EN EL D.FSICO

3. ANLISIS DE RESTRICCIONES DE TIEMPO SOBRE CONSULTAS Y


TRANSACCIONES
T debe TERMINAR ANTES de 6 segundos en el 95% de las veces que sea
invocada y NUNCA debe DURAR ms de 25 segundos
Restricciones de Tiempo ASIGNACIN DE PRIORIDADES ADICIONALES a
los campos candidatos para ESTRUCTURAS DE ACCESO
Un campo de seleccin utilizado por T ser candidato con mayor prioridad
para estructura de acceso que otros

4. ANLISIS DE FRECUENCIA ESPERADA DE OPERACIONES DE


ACTUALIZACIN
Los ficheros que se modifican mucho deben tener el MNIMO posible de
ESTRUCTURAS DE ACCESO
Actualizar el fichero (inserciones, eliminaciones, modificaciones)
Actualizar los caminos de acceso
ms lentas las operaciones de actualizacin D.Fsico - 10
PROCESO DE DISEO FSICO
ANLISIS DE TRANSACCIONES ESTUDIO DE ALTERNATIVAS
Y CONSULTAS SOBRE LOS DATOS OFRECIDAS POR EL SGBD

DECISIONES DE
DISEO FSICO PAUTAS DE DISEO FSICO

ESTRUCTURAS DE
ALMACENAMIENTO AFINAMIENTO (TUNING)
Y CAMINOS DE
ACCESO
* BAJO RENDIMIENTO

IMPLEMENTACIN * NO CUMPLIMIENTO DE
NUEVAS CONSULTAS Y REQUERIMIENTOS DEL
TRANSACCIONES SISTEMA

BD SUPERVISIN DEL
RENDIMIENTO
D.Fsico - 11
PAUTAS DE DISEO FSICO DE BDs RELACIONALES

ELECCIN DE ESTRUCTURAS DE ALMACENAMIENTO Y CAMINOS


DE ACCESO
La mayora de los SGBD representan cada RELACIN BASE como un FICHERO
Es necesario especificar... Tipo de fichero,Tipos de estructuras de acceso

Tcnicas de exploracin (scan)


Tcnicas de ndices (index)
Tcnicas de dispersin (hash)
Tcnicas de agrupamiento(cluster)

TCNICAS PARA ACELERAR la operacin de EQUIRREUNIN y/o


de REUNIN NATURAL
Tcnicas de Agrupamiento de 2 o ms tablas (Clusters)
Desnormalizacin, por razones de eficiencia

D.Fsico - 12
EXPLORACIN
Mecanismo de acceso por defecto (tabla desordenada).
Ineficiente si:
Se inspeccionan muchas tuplas y se selecciona un pequeo porcentaje.
Eficiente:
Sobre tablas pequeas e inspeccionadas mediante pocas E/S (factor de bloqueo).
Alto porcentaje de seleccionadas 20%.
Otros mecanismos de acceso son demasiado costosos.
Como incrementar el porcentaje de tuplas recuperadas: limitando el
alcance del examen a un conjunto de tuplas que contengan todas las especificadas
(seleccin) y pocas no seleccionadas (rango de valores).
Tabla de agrupacin (clustered table): tuplas almacenadas en la secuencia de
valores para un conjunto especfico de columnas (Tabla ordenada). Supone
mecanismo de acceso complementario que proporcione acceso directo a la primera
tupla que satisfaga la condicin de bsqueda (p.e. ndice o hashing).
Particionamiento horizontal de acuerdo a algn criterio de seleccin.

Afinamiento (tuning):
Utilizar dispositivos de alta velocidad para tablas frecuentemente examinadas.
Especificar nmero y tamao apropiado de buffers. D.Fsico - 13
AGRUPAMIENTO (Cluster)
Almacenamiento de tuplas en una secuencia predeterminada basada en
los valores de una o ms columnas (cluster key)
Agrupar: tablas medio-grandes ( 6 bloques fsicos) que son frecuentemente
(a) ordenadas sobre esa secuencia,
(b) accedidas sobre criterios de seleccin que involucran un rango de valores
sobre una columna o conjuntos de columnas,
(c) procesadas de forma secuencial en esa secuencia,
(d) y que no son frecuentemente actualizadas (d1) mediante inserciones o
borrados de tuplas (d2) modificaciones de los valores que determinan el
agrupamiento (cluster).
Sobre qu columnas?:
Que participen en ORDER BY, GROUP BY, UNION, DISTINCT y otras
operaciones que impliquen ordenacin.
Columnas de reunin (JOINS de clave primaria + clave ajena).
Seleccin sobre rango de valores.
D.Fsico - 14
NDICES
Son el mecanismo de acceso ms dinmico: se pueden aadir, suprimir,
redefinir ndices de forma ms fcil que cambiar una secuencia de cluster,
redefinir una clave de dispersin o cambiar cualquier otro parmetro que
afecte al almacenamiento fsico de la BD.
se puede posponer la especificacin de ndices para el final del proceso de
diseo e incluso despus de la implementacin inicial de la BD.
Estructura comn a muchos SGBD: B-trees soporta bien diferentes tipos de
consultas (por rango, valores extremos MIN-MAX, ...), inserciones frecuentes,
...
Pueden ser usados para:
Evitar el examen de tabla completa (Full table scan) (se utiliza el ndice para
realizar el examen) para ser til: suma de E/S a ndice + E/S a tabla < E/S a
tabla.
Limitar el alcance del examen a tabla: cluster index, ordenacin.
Evitar una ordenacin.
Evitar el acceso a las tablas para determinadas consultas.
D.Fsico - 15
NDICES
Conviene UTILIZAR ndices...
sobre tablas medianas/grandes (ocupan gran cantidad de espacio)
para facilitar el acceso a pequeos porcentajes del total de tuplas (20%)
seleccionadas
y para evitar...
el recorrido de la tabla completa
el acceso a tablas para consultas que incluyen un pequeo subconjunto de
columnas (gracias a los ndices compuestos)
PERSONA(ssnum, apellido, nombre, edad, telef)
CREATE INDEX idx_perso ON PERSONA(apellido, nombre)
la ordenacin de las tuplas de la tabla (ORDER BY, GROUP BY, UNION,
DISTINCT, JOIN, ...)
el acceso a ficheros para determinadas consultas (EXISTS, IN, ...)

Crearlos sobre columnas ...


que suelen aparecer en clusulas WHERE, order by, ... (ordenacin)
que suelen ser atributos de reunin de varias tablas (p.ej. claves ajenas)
con gran variedad de valores (mayor discriminacin en las bsquedas)
D.Fsico - 16
NDICES
Conviene EVITAR los ndices...
si la tabla es muy pequea (ocupa poco espacio)
si se degradan los requerimientos de procesamiento crtico
si el costo de su almacenamiento +mantenimiento >>>> beneficio
INSERCIN, MODIFICACIN, ELIMINACIN sobre tablas indexadas
mantenimiento del ndice (automtico, por parte del SGBD)
A veces conviene CREAR la tabla, rellenarla, y luego CREAR los NDICES
Y a veces conviene (actualizaciones masivas, reorganizaciones, copias de
seguridad, estadsticas): ELIMINAR NDICES, realizar las MODIFICACIONES
sobre la BD y CREAR de nuevo los NDICES
Mximo de 4 ndices por tabla. Ms si rara vez es actualizada
INDICES necesidad de espacio + velocidad de insercin/eliminacin
Evitar crear ndices sobre columnas
que son actualizadas muy a menudo
con distribucin irregular de valores (selectividad: confunde al optimizador)
columnas que slo aparezcan en clusulas WHERE con funciones u operadores
(distintos a MIN o MAX) pueden no hacer disponible el camino de acceso D.Fsico - 17
NDICES

El SGBD Oracle ...


Implementa los ndices mediante rboles B*
No incluye entrada en el ndice para tupla con NULL en la columna de
indexacin
El Optimizador NO usa el ndice construido sobre una columna, si la
consulta...
no incluye WHERE,
usa una columna indexada aplicandole una funcin (SUBSTR, ...) u
operador (||, ...)
pero el SGBD s usa el ndice si la consulta...
contiene un ORDER BY a la columna indexada,
aplica MAX, MIN sobre una nica columna (la indexada)

D.Fsico - 18
Tcnicas de dispersin (Hashing)
Las tuplas son fsicamente almacenadas y recuperadas de acuerdo con los resultados de una
funcin de dispersin (hash function): genera a distribucin de valores numricos (hash values),
basada en valores especficos de la clave de dispersin (hash key values).
Alternativa a tablas indexada / agrupada: las tuplas son localizadas usando los valores de clave
que estn almacenados en un ndice separado mnimo de 2 operaciones de E/S. Una funcin
de dispersin no necesita E/S mnimo una E/S para leer o escribir una tupla en la tabla.
No todos los SGBD soportan hashing (no universal)
Extremadamente eficiente para acceso directo.
Solo se puede definir un hashing por tabla (determina la posicin fsica).

Utilizar hashing para: tablas medianas grandes.


Frecuentes accesos individuales aleatorios.
Especificar valores discretos (seleccin por igualdad) de la misma columna o
conjunto de columnas (hash key values).
Actualizaciones infrecuentes de la hash key.
Tamao de la tabla conocido y no se esperan crecimientos o reducciones
significativos dispersin esttica / dispersin dinmica en caso contrario.
D.Fsico - 19
Tcnicas de dispersin (Hashing)
No utilizarlo:
Accesos por rango de valores, a menos que sea una lista discreta de valores
de clave (IN (val, val, val)).
Accesos que requieran ordenacin (como acceso en secuencia lgica).
Si se accede a la tabla sobre criterios de seleccin que no involucran la clave
o que involucran a parte de la misma
Si se accede mediante bsqueda de patrn (pattern match, LIKE).

Sobre que columnas:


a) Que permitan lograr una buena distribucin de tuplas.
b) Eviten colisiones (sinnimos, valores duplicados de hash: originan
encadenamientos, overflow, ...) no se debe definir sobre columnas con
pocos valores diferentes.
c) Sobre columnas frecuentemente utilizadas para recuperar mediante
condiciones de igualdad sobre valores discretos.
d) Evirtarlo sobre columnas frecuentemente actualizadas.

D.Fsico - 20
Acelerar la operacin de equirreunin y/o de reunin natural:
Tcnicas de agrupamiento
Almacenar DOS RELACIONES (intererrelacin 1:N clave primaria / clave
ajena) en un NICO FICHERO segn la clave del cluster: Cada registro del
lado 1 (clave primaria) est SEGUIDO de los registros del lado N (ajena)
Consultas MUY EFICIENTES sobre la clave del cluster ...
REUNIONES entre ambas tablas
Agrupamiento de registros del lado N por el valor de la clave externa
(los registros relacionados estn en el mismo bloque menos accesos a bloque)
Mayor aprovechamiento del espacio

Consultas a cada tabla por separado resultan ineficientes (acceso multi-tabla)


Examen completo (scan) de cada tabla por separado, ms costoso
INSERCIN poco eficiente debido a que se debe mantener la ordenacin fsica, al
tiempo que desaprovechar el mnimo espacio de almacenamiento
muchos encadenamientos entre registros (zonas de desborde, etc.) menor
eficiencia de las bsquedas segn la clave del cluster reduccin del rendimiento
de las consultas D.Fsico - 21
RESUMEN DE PAUTAS DE D.FSICO (1) (Elmasri/Navathe)

Usar FICHERO ORDENADO y escoger como atributo de ordenacin el que se


use mucho

para obtener o procesar los registros en orden, o


en operaciones de reunin con este fichero, o
en selecciones que incluyen un rango de valores sobre ese atributo

CREANDO un NDICE sobre ese atributo (camino de acceso primario)


ndice PRIMARIO (atributo clave) -- CREATE UNIQUE INDEX... CLUSTER
ndice de AGRUPAMIENTO (no clave) -- CREATE INDEX ... CLUSTER

Usar un FICHERO NO ORDENADO si


si ningn atributo satisface estos criterios, o
el fichero es frecuentemente actualizado ...
inserciones/borrados de tuplas (registros)
modificaciones del atributo de ordenacin
D.Fsico - 22
RESUMEN DE PAUTAS DE DISEO FSICO (y 2)

Para cada atributo (no de ordenacin) que se use mucho en operaciones de


seleccin o reunin, crear un ndice SECUNDARIO -- CREATE [UNIQUE] INDEX ...

Si el fichero se va a actualizar mucho (INSERCIN/ELIMINACIN),


reducir al MNIMO el nmero de NDICES del fichero

Usar un FICHERO DISPERSO y si algn atributo ...


se usa mucho para seleccin por igualdad u operaciones de reunin
nunca se utiliza para obtener los registros en orden
sus valores son muchos y diferentes, y apenas se modifica su valor

y se puede CREAR NDICES SECUNDARIOS sobre otros atributos del fichero


disperso

D.Fsico - 23
Acelerar la operacin de equirreunin y/o de reunin
natural: DESNORMALIZACIN
Desnormalizar, es decir, violar la normalizacin, slo tiene una excusa:
rendimiento ... y slo en algunas situaciones [Shasha-92]

La normalizacin hasta la 3FN, FNBC o superior, facilita la comprensin de...


los datos y
relaciones entre los datos, que deben protegerse y mantenerse al crear las
aplicaciones

En aplicaciones importantes o muy sencillas,


cuyas tareas no se adaptan a tablas normalizadas,
una vez terminado el anlisis, puede ser necesario desnormalizar algunas tablas,
para conseguir una aplicacin que se adapte a...
las tareas de los usuarios
los requerimientos de tiempo

D.Fsico - 24
DESNORMALIZACIN REAL

DESNORMALIZACIN REAL
Consultas o Transacciones frecuentes que necesitan reunin de
demasiadas tablas (tres o ms), o
dos tablas con muchas tuplas
se ejecutarn muy lentamente
Solucin: Romper la 3FN (FNBC o superior)
Almacenar atributos de una tabla en otra tabla
REPETICIN, DUPLICACIN o REDUNDANCIA de atributos
Importante: las transacciones que actualizan el atributo deben MANTENER LA
CONSISTENCIA entre los duplicados (evitar anomalas)
Procedimientos almacenados, Disparadores (Triggers), Afirmaciones
Redundancia controlada

DESNORMALIZACIN EXTREMA
Almacenar un FICHERO con la REUNIN de las tablas
Resolver explcitamente las ANOMALAS DE ACTUALIZACIN
D.Fsico - 25
DESNORMALIZACIN REAL

Esquema de base de datos no normalizado


El anlisis de requerimientos indica que siempre que se necesita el perfil de un
trabajador, se requiere el nombre del responsable de donde est alojado el
trabajador.

EMPLEADO(nombre, edad, alojamiento, responsable)


OFICIO_EMPLEADO(nombre, oficio, calificacion)
OFICIO(oficio, descripcion)
ALOJAMIENTO(alojamiento, nombre-completo, direccion, responsable)

Este esquema...
INSERCIN NO DIRECTA en la tabla EMPLEADO: al insertar un empleado el
nombre del responsable debe venir desde la tabla ALOJAMIENTO, segn el valor
de alojamiento para el nuevo empleado
MODIFICACIN del nombre de un responsable en la tabla ALOJAMIENTO, o
cambio de responsable para un alojamiento modificacin de tuplas EMPLEADO
D.Fsico - 26
Estructura lgica de una BD Oracle

D.Fsico - 27
Estructuras lgicas de almacenamiento
Segmento datos
Segmento de ndices
Segmento de rollback
Segmento temporal
SELECT ... ORDER BY...
CREATE INDEX.
SELECT ... GROUP BY...
SELECT ... UNION ...
SELECT DISTINCT ...
SELECT INSERSEC ...
SELECT ... MINUS ...

D.Fsico - 28
Estructura fsica de Oracle
Ficheros de datos
Ficheros redo log
Ficheros de
control

D.Fsico - 29