Conceptos de BDD
• Sistema de computación distribuido: elementos de procesamiento que cooperan en la ejecución de tareas,
interconectados por una red de ordenadores.
• BD distribuida (BDD): son varias BD interrelacionadas lógicamente y situadas en diferentes nodos de una red de ordenadores.
• SGBD distribuido: el que gestiona BD distribuidas de forma transparente para el usuario (éste ve las BD como si fueran una sola BD centralizada)
Otras funciones de las BDD:
– Seguir la pista a los datos: fragmentación, réplica
– Procesar consultas distribuidas
– Gestionar transacciones distribuidas
– Gestionar datos replicados: qué copia usar, mantener la consistencia
– Recuperar BDD: de fallos de ordenadores individuales
– Seguridad: privilegios, autorizaciones de acceso
– Gestionar el catálogo distribuido: contiene los metadatos. Debe ser global para toda la BDD o local para cada sitio.
Diseño de la BD "Empresa"
Diseño de BDD: fragmentación
• Directorio (catálogo) global: contiene la
información de fragmentación. Lo utiliza el SBDD.
• Fragmentar: decidir dónde situar las
partes de la BDD
– Se puede plantear top-down (como aquí) o
bottom-up
• Idea simple: situar cada tabla en un
ordenador distinto
• Fragmentación horizontal:
– Ejemplo: un ordenador por departamento.
Cada departamento quiere tener su información en su ordenador. (BD Empresa)
– Supone dividir las tuplas de cada tabla
en 3 trozos.
Cada trozo en el ordenador de su
departamento.
– Así, EMPLEADO se divide en: σND=1, σND=4
y σND=5
– La tabla original se reconstruye con
UNIÓN de los 3 trozos.
– Es posible generar fragmentos que
compartan tuplas (no disjuntos)
• Fragmentación horizontal derivada: la
partición de la tabla primaria DEPARTAMENTO se aplica a tablas secundarias,
como EMPLEADO, que la referencian mediante una clave extranjera (ND)
• Fragmentación vertical:
– De EMPLEADO en información personal y
laboral:
• πNOMBRE, INIC, APELLIDO, FECHA_NCTO,
DIRECCIÓN, SEXO
• πNSS, SALARIO, NSS_SUPERV, ND
– Esta división no es apropiada porque no
se puede reconstruir la tabla original: es necesario añadir NSS a la primera
división (clave primaria)
– Para reconstruir la tabla original se usa
REUNIÓN EXTERNA COMPLETA (o UNIÓN EXTERNA). Con REUNIÓN
simple, las tuplas de una relación que no se reúnen con ninguna tupla de la
otra tabla no aparecen en el resultado.
– Podemos generar fragmentos que compartan
otros atributos además de la clave (no disjuntos)
• Toda fragmentación debería ser completa:
– Horizontal: todas las tuplas están en
algún fragmento
– Vertical: todo atributo está en algún
fragmento
• Fragmentación mixta: cuando se aplica
fragmentación vertical y horizontal sobre la misma tabla
• Esquema de fragmentación es un conjunto
de fragmentos que:
– Fragmentación completa: todos los
atributos y tuplas están en algún fragmento
– Permite reconstruir la BD original.
– Interesante (no necesario) que los
fragmentos sean disjuntos
Diseño de BDD: replicación y asignación
• La replicación mejora la disponibilidad de los datos
• Caso extremo: tener una réplica de la BD completa en cada sitio (ordenador):
– Ventajas: mejora el rendimiento local y global además de la disponibilidad (con un sitio activo se
accede a toda la BD)
– Inconvenientes: actualizaciones más costosas (se deben realizar en todas las réplicas para mantener la coherencia). El control de concurrencia y recuperación es también más costoso.
• El otro extremo es no tener ninguna replicación (salvo las claves primarias en fragmentos verticales).
• Entre ambos extremos: replicación parcial. Hay muchasposibilidades.
• Esquema de replicación: describe qué se replica
• Asignación: dónde se sitúan los fragmentos y réplicas
– La elección del lugar y el grado de replicación depende de los objetivos de rendimiento y
disponibilidad. También del tipo de transacciones y su frecuencia.
– Encontrar una solución óptima o incluso una buena es un problema complejo
BDD y cliente-servidor:
arquitectura de 2 niveles
• Los SGBD totalmente distribuidos (transparentes) aun no son viables comercialmente
• En su lugar se han creado sistemas basados en cliente-servidor
• La forma habitual de dividir la funcionalidad del SGBD entre cliente y servidor ha sido la arquitectura de 2 niveles:
– Servidor (o servidor SQL): donde se sitúa el SGBD. Una BDD se situaría en varios servidores.
– Clientes:
• Envían consultas/actualizaciones a servidores
• Tienen interfaces SQL, de usuario y funciones de
interfaz del lenguaje de programación
• Consultan en el diccionario de datos la información sobre la distribución de la BD entre los servidores.
Tienen módulos que descomponen consultas globales en varias locales a cada servidor
• Interacción cliente-servidor (arquitectura de 2 niveles):
– El cliente analiza la consulta del usuario. La descompone en varias subconsultas y envía cada una a un servidor. (También puede hacerlo el usuario a mano)
– Cada servidor ejecuta su subconsulta y devuelve el resultado al cliente
– El cliente combina los resultados recibidos y muestra al usuario el resultado de su consulta.
• En este enfoque al servidor se le llama máquina back-end (o subyacente) y al cliente máquina
front-end (de la parte visible).
• Al servidor también se le llama servidor de transacciones y procesador de BD y al cliente procesador de aplicaciones
BDD y cliente-servidor:
arquitectura de 3 niveles
• Actualmente es más común utilizar una arquitectura en 3 niveles, sobre todo para aplicaciones web.
• Las 3 capas son:
– Cliente (Presentación):
• Es la interfaz (interfaces web, formularios, …)
• Suelen usar navegadores web y lenguajes como HTML, JavaScript, PERL, …
• Gestiona las entradas, salidas y la navegación con páginas web estáticas o, cuando accede a BD, con
páginas dinámicas (ASP, JSP, …)
– Servidor de aplicaciones (SA) (lógica de negocio):
• Incluye, por ejemplo, consultas basadas en datos introducidos por el usuario, o resultados de consultas a los que da formato y envía para su presentación
• Puede incluir otro tipo de funcionalidad como comprobaciones de seguridad o de la identidad
• Puede acceder a varias BD conectándose mediante ODBC, JDBC u otras técnicas
– Servidor de BD (SBD):
• Procesa consultas y actualizaciones solicitadas por la capa de aplicación
• Puede devolver los resultados en formato XML
• La división de funcionalidad entre las 3 capas puede variar.
• El servidor de aplicaciones (SA) también:
– Tiene acceso a diccionarios de datos para consultar
cómo se distribuyen las BDD entre los servidores de BD
(SBD)
– Puede incluir módulos para descomponer una consulta
en varias subconsultas locales a cada SBD
• La interacción entre SA y SBD puede ser así:
– El SA construye una consulta utilizando datos tomados
por el cliente. Descompone la consulta en varias
subconsultas, cada una de ellas local a un SBD, y las
envía a sus correspondientes SBD.
– Cada SBD procesa sus consultas y envía los resultados al
SA que las solicitó. Cada vez es más frecuente utilizar el
formato XML para devolver los resultados.
– El SA combina los resultados para obtener el resultado
de la consulta original. Dota al resultado de un formato,
como HTML y lo envía al cliente para su presentación.
• El SA es responsable de (en arquitectura de 2 niveles lo es el
cliente):
– Generar un plan de ejecución distribuido y supervisar su
ejecución.
– Garantizar la consistencia de las réplicas de datos.
– Asegurar la atomicidad de las transacciones globales
(que no se puedan ejecutar “a medias”, o sea que bien se ejecuta
toda la transacción o no se ejecuta nada)
No hay comentarios:
Publicar un comentario