Eduardo Mena
Ficheros y BD (troncal)
Diseo de BD Relacionales (opt.)
BD Avanzadas (opt.)
Sistemas de Informacin (opt.)
Interaccin Hombre-Mquina (opt.)
FBD
DBDR
IHM
BDA
Problemas detectados
DBDR debera ser troncal
el diseo de BDs es fundamental para un informtico
proyeccin laboral
SI
concreto
Repeticin / Relacin
con otras materias
Ficheros
son TADs: implementacin de operaciones: funciones
hash, ndices (rboles B,...). Interesante estudiar la
complejidad.
BDA: Objetivos
SGBD relacionales otras alternativas
Conocer las tendencias futuras (I+D)
Desarrollo de prototipos en entornos
heterogneos (y distribuidos)
Disear e implementar un sistema
multibase de datos
Saber aplicar todos nuestros
conocimientos a casos reales
BDA: Evaluacin
50%: Examen terico-prctico (40%, 60%)
No hay que empollar
50%: Prctica
Libertad de diseo
Heterogeneidad
Imaginacin
Autosuficiencia
Optimizacin de
Preguntas
Optimizacin de preguntas
Optimizacin: pregunta plan costo pt.
costo = CPU + I/O + COMUNICACIONES
Ejemplo motivador
La optimizacin es posible y necesaria
Las distintas estrategias requieren costes
muy distinto
Debe ser un proceso automtico
depende del momento concreto en la vida de
la BD
es complicado saber qu estrategia es mejor
Nunca se esta seguro (estimaciones)
Etapas en la optimizacin
Convertir la pregunta en una representacin
interna (lgebra relacional, rbol sintctico)
Transformar la pregunta en una forma
cannica (reglas sintcticas y semnticas)
Escoger los procedimientos de bajo nivel
candidatos (para cada operador)
ndices? clustering? rango y nm. valores?
Optimizacin sintctica
Entrada: expresin lgebra relacional
Salida: expr. lgebra relacional
equivalente
Optimizacin semntica
Transformar la pregunta en otra que
devuelve las misma tuplas
Utilizar conocimiento semntico de la BD
restr. integridad, dependencias funcionales,
claves extranjeras, reglas semnticas
Algoritmos
BD en servidores paralelos
influyen los tres: CPU, I/O y COM.
Optimizacin en Oracle
Optimizacin basada en reglas o basada
en costes (seleccionado por el usuario)
EXPLAIN PLAN: ver como se ejecutar una
sentencia SQL
No hay optimizacin semntica
hasta Oracle 8, incluido
Conclusiones
Los SGBD realizan optimizacin de preguntas
son intiles algunas reformulaciones de preguntas
Diseo Fsico
Diseo Fsico
El diseo fsico de BD forma parte importante del
ciclo de vida de un sistema de BDs.
Consiste en escoger las estructuras de
almacenamiento y caminos de acceso que
1) cumplan los objetivos del sistema
2) proporcionen un balance ptimo entre el rendimiento
(tiempos de respuesta de transacciones, nmero de
transacciones por minuto...) y el costo (espacio utilizado,
reorganizaciones de datos...).
Diseo Fsico:
Recopilar informacin.
Por cada op. (preg. SQL) con la BD indicar:
Desnormalizacin
El proceso de normalizacin consiste en dividir una
tabla R en R1 y R2 si R=R1
R1.K=R2.K R2
Evita redundancia y anomalas (ins./bor./mod.)
Problema: Para obtener R hay que hacer el join
Particionamiento horizontal
Si existe tabla R = sC1(R) U ... U sCn(R) donde
muchas operaciones con la BD son con s Ci (R)
algunos atributos son inaplicables (NULL) segn Ci
entonces cada s Ci (R) se guarda en una tabla y se define una
vista sobre R (diseo lgico? fsico?)
Particionamiento vertical
Si existe una tabla R (A1,...An,B1,...Bm) donde
muchas de las operaciones afectan slo a atributos
A1,...,An y muy pocas veces a atributos B1,...Bm
esas operaciones son muy frecuentes
R(..Ai,...,Bj...) es mucho ms grande que R(..Ai...)
Conclusiones
Realizar el diseo fsico inicial
Obtener informacin de las operaciones esperadas
Resolver operaciones con mayores restricciones
(aplicando algunos de los mtodos explicados)
Resolver el resto de las opers. sin perjudicar a otras
aadir ndices para favorecer consultas perjudica a operaciones
de insercin / borrado
Transacciones,
Recuperacin y Control de
Concurrencia
Transacciones
Transaccin: coleccin de operaciones que forman
una nica unidad lgica de trabajo en una BD
Control concurrencia
Sistemas multiusuario: ejecucin intercalada
Recuperacin
Para cuando una transaccin falla
Inicio
Lecturas/escrituras de elementos de la BD
Final (pueden hacer falta algunas verificaciones)
Confirmacin (COMMIT) o anular (ROLLBACK)
Transacciones
Toda transaccin debe cumplir el principio ACID
Atmica: se ejecuta todo (commit) o nada (rollback)
Debe garantizarlo el mtodo de recuperacin del SGBD
Recuperacin
Cadas del sistema durante una transaccin
Errores de ejecucin: overflow, divisin por 0...
Errores lgicos que violan alguna regla de
integridad (definida explcitamente o no) y que
dejan inconsistente la BD -> programador/ABD
Problemas de concurrencia de transacciones
Fallos de lectura/escritura en disco
Problemas fsicos y catstrofes: fuego, robos,
sabotajes, fallos humanos,... --> medidas de
seguridad informtica en la empresa.
Recuperacin
Para que el sistema se pueda recuperar ante fallos
se necesita grabar cada operacin con la BD en un
fichero LOG (bitcora). Checkpoints.
se escribe en el fichero LOG antes que en la BD
el fichero LOG debe estar en memoria estable
<comienza-transaccin, numt>
<escritura, numt, id_dato, val_viejo, val_nuevo>
<lectura, numt, id_dato, valor>
<termina_transaccin_con_xito, numt>
<punto_comprobacin, numt, numc>
Problemas de concurrencia
La ejecucin concurrente de transacciones
puede dar lugar a problemas:
Problema de la actualizacin perdida
Problema de leer una actualizacin temporal
(lectura sucia)
Problema del resumen incorrecto
Problema de la lectura no repetible
Problemas de Concurrencia
Sol. trivial: cada transaccin se ejecuta en
exclusin mutua. Cul sera la granularidad?
BD? Tabla? Tupla? Atributo?
La solucin trivial no es vlida: muy
restrictiva
Se supone que las BDs se pensaron para que
varios usuarios/aplicaciones accedieran a la vez
Control de concurrencia:
planes serializables
Dadas las transacciones T1, T2, ... Tn,
T1 compuesto por operaciones O11,O12,..O1 m1
T2 compuesto por operaciones O21,O22,..O2 m2
... Tn compuesto por operaciones On1, On2..On mn
Serializabilidad
Aparte de ACID, queremos que las transacciones
sean serializables.
Determinar si un determinado plan es serializable
es un problema NP-completo.
Solucin: Imponer restricciones a la libre
intercalacin de operaciones entre transacciones
Tcnicas pesimistas: se impide realizar ciertas
operaciones si son sospechosas de producir planes no
serializables: BLOQUEOS (lock) y MARCAS DE
TIEMPO (time-stamping)
Tcnicas optimistas: no imponen restricciones pero
despus se comprueba si ha habido interferencias
Protocolo de
Bloqueo en dos fases
Una transaccin sigue el protocolo de
bloqueo en dos fases si nunca hace un lock
despus de haber hecho algn unlock.
Fase de crecimiento: se solicitan locks
Fase de devolucin: se realizan unlocks
Deadlocks
Deadlock (o abrazo mortal o interbloqueo): cuando una transaccin
T1 est bloqueada esperando a que otra T2 libere un lock, la cual tambin
est bloqueada esperando a que T1 libere uno de sus lock. Se puede
generalizar para N transacciones.
Prevencin de deadlocks
Cada transaccin obtiene todos los locks al principio y si no puede entonces no
obtiene ninguno. Problema de livelock (inanicin de algunas transacciones que
pueden no obtener todos los que necesiten)
Los elementos de la BD estn ordenados de alguna manera y los lock hay que
obtenerlos en dicho orden. Los programadores deben controlarlo !!
Tcnicas optimistas
No se realizan comprobaciones ANTES de ejecutar las
operaciones (pedir locks, comprobar timestamps), sino al
acabar toda la transaccin (fase validacin)
Durante la ejecucin de la transaccin se trabaja con
copias
Hay tres fases en un protocolo optimista:
Fase de lectura
Fase de validacin
Fase de escritura
Es bueno cuando no hay muchas interferencias entre
transacciones (por eso son optimistas)
Recuperacin en Oracle
Redo logs (cclicos)
Archive logs (consolidacin de redo logs)
Backups
Mirrors
Export: Incremental, acumulativo (coleccin de
incrementales), total
Control de concurrencia en
ORACLE (1)
Lectura consistente: garantiza que se lean los datos
tal y como estaban al inicio de la transaccin, sin
impedir que otras transacciones los cambien.
Implcitamente con SELECT .. FROM T,R ... (lo
garantiza sobre las tuplas de T,R,...)
Explcitamente con SET TRANSACTION READ ONLY;
(lo garantiza sobre las tuplas de todas las tablas
hasta el fin de transaccin.)
Debe ser la primera instruccin de la transaccin
No permitir hacer ningn INSERT, DELETE o UPDATE en
dicha transaccin
Control de concurrencia en
ORACLE (2)
LOCKs
Explcitamente con LOCK TABLE T IN x MODE
x indica si sobre todas/algunas tuplas de T en
modo compartido/exclusivo)
Control de concurrencia en
ORACLE (y 3)
No hay UNLOCK explcitos en ORACLE!!
Se realiza un UNLOCK implcito de todos los
LOCK con cada COMMIT o ROLLBACK
(implcitos o explcitos)
Interaccin de
Aplicaciones con BDs
Interaccin de Aplicaciones
con Bases de Datos
Acceso bsico. Casos Especiales
SQL embebido
Uso de un API
Tipos de API
ODBC. Drivers
Acceso Bsico
Normalmente suministrado por el SGBD y
sus aplicaciones adjuntas
Puede no existir. SGBOO
Prompt (SQL). Oracle: SQL-Plus
4GL. Informix, Oracle (PL/SQL)
Forms, reports, menus
SQL Embebido
Uso de un API
API: Aplication Program Interface
Protocolos y funcionalidades
Tipos de APIs
Propietarios. Ej: OCI (Oracle Call Interface)
Interoperables
CLI (Call Level Interface)
ODBC (Open Data Base Connectivity).
IDAPI
ODBC
Desarrollado por Microsoft
NO es un protocolo de comunicacin
Driver ODBC: programa que interactua
con un SGBD concreto y ofrece un API
segn los dictados ODBC.
Implementado con SQL embebido
Implementado con un API propietario
Bases de Datos
Orientadas a Objetos
(BDOO)
BDOO: Motivacin
Aplicaciones tradicionales de BD donde
existen muchos datos almacenados en registros
(pocos tipos de registros) gen. de longitud fija con
campos atmicos (en 1FN) y de tamao pequeo
esquemas de BD casi no cambian y estn en 1FN
las transacciones son generalmente cortas
Herramientas Modelo
Relacional
Los SGBD Relacionales proporcionan
Problemas Modelo
Relacional
SQL no es computacionalmente completo. Se
necesitan LP ------------> Mismatch impedance
con los tipos: el SGBD y el LP tienen distintos tipos
Los LP no ofrecen un tipo primitivo relacin que tome como
valor un CONJUNTO DE VALORES !
Es necesario utilizar CURSORES para tratamiento
secuencial dentro de un programa !!
Los tipos abstractos de datos que se pueden crear con LP
habra que guardarlos en tablas para darles persistencia .
Problemas Modelo
Relacional (2)
Poder limitado de modelado
El modelo relacional tiene como nico tipo de
datos a las TABLAS con ATRIBUTOS.
Sin embargo nos gustara poder definir
Problemas Modelo
Relacional (3)
Complejidad del entorno
Los programadores deben saber programar con el
SGBD (SQL) y con el LP
Hacer que programas YA existentes que trabajan con
ficheros lo hagan con BDs es duro
Para aadir interfaces a los programas de BDs hay que
manipular otros tipos de objetos grficos que no
pueden ser guardados en la BD.
Para cambiar de una plataforma a otra, todos los
distintos componentes usados deben ser soportados de
manera consistente en la nueva.
Caractersticas OO
Tipos Abstractos de Datos (TAD) + Herencia +
Identidad de Objetos
[TAD = Tipos + Operaciones + Encapsulacin]
Conceptos bsicos OO
Objetos complejos
Un objeto es un elemento con una estructura (atrs.
de ciertos tipos) (que pueden ser simples, listas,
conjuntos,..) y un comportamiento (operaciones o
mtodos) que corresponden a la definicin de la
CLASE de la cual el objeto es una INSTANCIA.
CLASE define unos ATRIBUTOS y MTODOS
La clase agrupa a una serie de OBJETOS o INSTANCIAS
Identidad de objetos
Cada objeto tiene un identificador nico (OID)
Inalterable y dado por el sistema al crearse.
Ej: 25#cine o bien sin indicar la clase: #35
Persistencia: C++
persistente
Es posible escribir programas C++ con
todas las caractersticas de OO comentadas
(ver conceptos bsicos de OO).
Problema: las caractersticas de BD no se
conseguiran (ver definicin BDOO)
Intento de solucin: extender C++ para que
permita definir clases persistentes.
persistent class A: public B,..D { .....}
NOTA: Las clases persistentes no deben
contener punteros a clases no persistentes !
Persistencia: C++
persistente (2)
Sin embargo, el resto de caractersticas
BD siguen sin obtenerse
(ver definicin BDOO = BD + OO)
Lo peor: el lenguaje de interrogacin es
navegacional o procedural (es mejor el
del modelo relacional que es asercional)
Lo mejor: no hay mismatch impedance
ni el resto de problemas sealados en
(problemas modelo relacional).
Diseo de BDOO
Para disear BDs generalmente se usa un
modelo de BDs semntico llamado EntidadRelacin (extendido) de Chen.
Los pasos que se pueden seguir son:
Obtener el esquema E-R extendido
Normalizar dicho esquema E-R
Obtener las tablas correspondientes al E-R
Normalizar las tablas relacionales.
Obtener el E-R al que corresponderan dichas tablas
Traduccin E-R a OO
Las entidades y relaciones del E-R se
pueden traducir a clases y atributos OO.
Entidad -----> Clase
Entidad especializacin -----> Subclase
Relacin 1:1, 1:N --------> Atributo sobre Clase
Relacin N:M ------> 2 atributos sobre Clases
Relaciones de grado mayor que 2 o de tipo N:M
con atributos ------> Clase
No olvidar que se pueden definir mtodos
ODE: Un SGBDOO
ODE es un SGBDOO
Desarrollado en los laboratorios AT&T
Utiliza un lenguaje de programacin de BD
llamado O++ basado en C++
Otros SGBDOOs: GemStone, Iris, O2, ORION,
ObjectStore (basado en C++), Vbase.
Lenguaje O++
Persistencia
Una clase C++ se puede declarar como
persistente. Apuntadores de objetos tambin
persistent class personas { .... }
persistent personas * pe;
Utilizamos el mtodo pnew (pdelete) para crear
(destruir) objetos persistentes
pe = pnew personas(.......);
pdelete pe;
Bases de Datos
Distribuidas
(BDD)
BD Distribuidas
Tecnologa de Bases de Datos (tradicional)
Centralizacin de datos
Varios Ficheros
Redes de Computadores
Distribucin/comparticin de recursos
BD centralizada
Definicin de BD Distribuida
Un sistema de BD distribuidas es una
coleccin de varias BDs que se encuentran
lgicamente inter-relacionadas y
distribuidas sobre una red de ordenadores.
Un sistema de gestin de bases de datos
distribuidas (SGBDD) es el software que
permite el manejo de sistemas de BDs
distribuidas y que hace dicha distribucin
transparente al usuario.
Definicin de BD Distribuida
No son Sistemas de BD Distribuidas:
Un sistema de ordenador de tiempo
compartido
Un sistema de multiprocesadores (BD
Paralelas)
Un sistema de BD que reside en uno de los
nodos de una red. Eso es una BD centralizada
accesible a travs de la red.
Transparencia en entornos
Distribuidos
Transparencia de red
el usuario no debe ser consciente del uso de la red
transparencia de localizacin: dnde estn los datos, lenguajes
locales necesarios
transparencia de nombres: nombres nicos en todo el sistema
distribuido, independientes de la localizacin
Transparencia de fragmentacin
el usuario no debe ser consciente de la existencia de varios
depsitos de datos
Transparencia de replicacin
el usuario no debe ser consciente de la existencia de varias
copias de los datos
Seguridad
se aaden los problemas de seguridad en redes
Dificultad de cambio
las empresas ya tienen BD centralizadas
Arquitecturas de BD
distribuidas
Sistemas de BDs Distribuidas (SBDD)
Formados por BDs no autnomas.
Proporcionan un esquema global.
El esquema global se obtiene de arriba a abajo: primero se define el
esquema conceptual global y luego se fragmenta en varias BDs.
Informacin de Acceso
(transacciones)
FRAGMENTACIN
Esquema Local 1
Esquema Local N
DISEO FSICO
DISEO FSICO
Esquema Fsico 1
Esquema Fsico N
Fragmentacin (I)
El problema de obtener los esquemas locales a
partir del global se divide en dos:
Fragmentacin: dividir el esquema global en fragmentos.
Asignacin: distribuir los fragmentos entre los esquemas
locales.
Fragmentacin (II)
Fragmentacin horizontal: basada en
encontrar condiciones de seleccin
Primero horizontal
Correccin de la
fragmentacin
Completitud
Todo elemento de la relacin debe estar en
alguno de los fragmentos.
Reconstruccin
La relacin inicial debe poder reconstruirse
aplicando operadores sobre los fragmentos
Asignacin (I)
Asignar fragmentos a los esquemas locales
Sin replicacin: todo fragmento reside en un
nico nodo
bueno para actualizaciones, malo para preguntas
Asignacin (y II)
REPLICACIN REPLICACIN
SIN
COMPLETA
PARCIAL REPLICACIN
PROCESAMIENTO
DE PREGUNTAS
Ms fcil
Ms difcil
Ms difcil
CONTROL DE
CONCURRENCIA
Difcil
Ms difcil
Ms fcil
DISPONIBILIDAD
DE LOS DATOS
Muy alta
Alta
Baja
Esquema Local 1 en
un modelo cannico
Esquema Local N en
un modelo cannico
TRADUCCIN
TRADUCCIN
Esquema Local 1
Esquema Local N
Obtencin del
Esquema Global (I)
El problema de obtener un esquema
global a partir de N esquemas locales se
divide en dos:
Traduccin: cada esquema local se traduce a
un modelo cannico
Integracin: los esquemas locales se integran
en uno solo
Modelo cannico
El modelo de datos (cannico) utilizado
para expresar el esquema global es muy
importante.
No hay que olvidar que las bases de datos
locales pueden ser heterogneas (distintos
modelos de datos)
Se utilizan modelos ms ricos
semnticamente que el relacional: OO,
modelos funcionales, semnticos, etc...
Obtencin del
Esquema Global (y II)
Supongamos que los esquemas locales son relacionales y se
usa como modelo cannico el modelo semntico EntidadRelacin Extendido de Chen
Traduccin
A partir de tablas y atributos relacionales (esquema
exportado) se identifican entidades, relaciones y atributos
(enriquecimiento semntico)
Pueden aparecer nuevas entidades
(especializaciones/generalizaciones, etc.)
Integracin
Aplicacin de las propiedades semnticas entre las entidades
y relaciones de distintos esquemas locales cannicos
(sinonimia, unin, generalizacin/especializacin, etc.)
Informacin de enlace
Relacin entre los elementos de datos del
esquema global y los elementos de datos
de los esquemas locales
Necesaria para poder responder a las
preguntas
DESCOMPOSICIN
Esquema Global
Esquema
de Fragmentos
OPTIMIZACIN LOCAL
Preguntas locales optimizadas
Esquema Local
Transacciones en BDDs:
protocolo de commit en 2 fases
Se desea ejecutar una transaccin T compuesta por
varias transacciones T1, ... Tn sobre varias BDs:
BD1,...BDn. Para ejecutar un COMMIT global:
Fase de votacin
Cada transaccin Ti no hace COMMIT sino que dice al
nodo coordinador si puede hacerlo y espera a que
ste le conteste
Fase de decisin
Si todas las Ti han respondido diciendo que pueden
hacer COMMIT el coordinador ordena que se ejecute.
En otro caso ordena un ROLLBACK a todas ellas. El
coordinador debe recibir acknowledge de todos
BD Activas: Motivacin
Los SGBD convencionales son pasivos. Slo
ejecutan preguntas o transacciones realizadas por
los usuarios o por los programas de aplicacin.
Para representar la semntica del mundo real
proporcionan:
MODELO DE DATOS
Estructuras de Datos
Operadores para trabajar con las estructuras
Reglas de integridad
MODELO DE TRANSACCIONES
Posibilidad de definir transacciones pero slo si los
usuarios o aplicaciones lo solicitan explcitamente
BD Activas: Definicin y
Modelo de Conocimiento
Un Sistema de Bases de Datos Activas es un
sistema que monitoriza situaciones de inters y
que, cuando ocurren, dispara o activa la ejecucin
de una serie de acciones.
El comportamiento deseado se expresa en forma
de Reglas Evento-Condicin-Accin (ECA)
ON evento
IF condicin
THEN accin
Nota: Las reglas ECA provienen del paradigma de las Reglas
de Produccin (IF condicin THEN accin) tratado en
Inteligencia Artificial (sobre todo en Sistemas Expertos)
Modelo de Conocimiento
ON evento IF condicin THEN accin
evento puede ser un suceso primitivo:
o un suceso compuesto:
S1 OR S2 (sucede el suceso S1 o el S2)
S1 AND S2 (suceden ambos sucesos)
S1 ; S2 (sucede S1 y despus S2)
un abort o rollback
mandar un mensaje al usuario
introducir / modificar datos en la base de datos
etc.
Modelo de Ejecucin
Es el comportamiento de las reglas en tiempo de
ejecucin. Se debe conocer:
1) Cundo se evalan los eventos (la frecuencia, si se
evalan dentro de transacciones, etc.)
Durante la ejecucin de una transaccin puede haber momentos en
los que la BD est inconsistente
Triggers en ORACLE 7
CREATE [OR REPLACE] TRIGGER nombre_de_trigger
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF nom_atr [, nom_atr] ...]}
EVENTO
CONDICIN
ACCIN
Restricciones en triggers
Oracle
El bloque PL/SQL que forma la parte accin no puede contener
sentencias como COMMIT o ROLLBACK (ni CREATE...,
ALTER...)
No se pueden crear triggers sobre tablas del sistema que
forman el catlogo. Sera bueno para realizar acciones cada vez
que se creara, borrara, etc. una tabla en la BD !!
Dentro de un trigger no se puede ni hacer SELECT de una
tabla mutante, ni se puede cambiar la clave primaria, una
clave ajena o claves nicas de una tabla restringida.
Una tabla mutante es aquella sobre la que se est haciendo un INSERT, un DELETE, un
UPDATE o una tabla que puede ser afectada debido a una restriccin DELETE CASCADE.
Una tabla restringida es aquella que es usada dentro de un trigger, por una sentencia
SQL o para mantener una integridad referencial.
Una tabla no es considerada mutante ni restringida para triggers que NO SON del tipo FOR
EACH ROW (excepto si el trigger se ha lanzado debido a una restriccin DELETE
CASCADE).
Bases de Datos
Deductivas
BD Deductivas: Motivacin
La lgica como lenguaje de preguntas.
Los predicados corresponderan a relaciones.
vuelo(1,Madrid,Pars,13:30,15:30).
Las reglas corresponderan a defs. de vistas.
vuelo_Mad_tarde(N,S,L,HS,HL) :vuelo(N,Madrid,L,HS,HL), HS > 14:00.
La conjuncin de predicados a demostrar seran las
preguntas.
:- vuelo(N,Madrid,L,HS,HL), HS > 14:00.
Y cul es el
futuro de los
SGBD?
SGBD Relacionales + OO
- Tecnologa Object-Relational
- Definicin SQL3
SGBD Relacionales + Actividad
- Triggers ya existen en algunos SGBD
- Def. SQL3 intenta estandarizar
SGBD Cliente/Servidor y Distribuidos
Tal vez SGBD Relacionales + Deduct.?
Es difcil predecir...
...especialmente el futuro
N. Boehr
En cualquier caso...
gracias por aguantarme
y suerte...