13.08.2013 Views

modelos avanzados de bases de datos base de datos distribuidas

modelos avanzados de bases de datos base de datos distribuidas

modelos avanzados de bases de datos base de datos distribuidas

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

UNIVERSIDAD DE CASTILLA-LA MANCHA<br />

ESCUELA SUPERIOR DE INFORMÁTICA<br />

MODELOS AVANZADOS DE BASES DE DATOS<br />

BASE DE DATOS DISTRIBUIDAS<br />

Grupo: Distribución 1<br />

Francisco Corbera Navas<br />

Alejandro Delgado Gallego<br />

Fecha : 01/04/2008


Base <strong>de</strong> Datos Distribuidas<br />

Índice<br />

Introducción ……………………………………………………………….………….. 3<br />

Sistemas gestores <strong>de</strong> Bases <strong>de</strong> Datos Distribuidas (SGBDD) …………….………….. 5<br />

Tipos <strong>de</strong> SGBDD ………………………………………………….……….…. 5<br />

Los objetivos <strong>de</strong> un SGBDD …………………………………………….….... 6<br />

Arquitectura cliente-servidor …………………………………………………………. 8<br />

Diseño <strong>de</strong> Bases <strong>de</strong> Datos Distribuidas ………………………………………..………9<br />

Estrategias <strong>de</strong> Diseño …………………………………………………………10<br />

Fragmentación …………………………….……………………..……………12<br />

Asignación ……………………………………………………….……………13<br />

Transacciones en <strong>base</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong> ………………………….………………14<br />

Control <strong>de</strong> concurrencia ………………………………………………..……………..15<br />

Serialización distribuida ……………………………………..………………..16<br />

Protocolo <strong>de</strong> bloqueo (locking protocol) ………………………...……………17<br />

Protocolo <strong>de</strong> marcas <strong>de</strong> tiempo (timestamp protocol) ….……………………..17<br />

Procesamiento <strong>de</strong> Consultas Distribuidas …………………….……………… ..……..17<br />

Objetivos <strong>de</strong> la optimización <strong>de</strong> consultas …………………………………….19<br />

Características <strong>de</strong> los procesadores <strong>de</strong> consultas …………………….………..20<br />

Arquitectura <strong>de</strong>l procesamiento <strong>de</strong> consultas ………….………………………20<br />

Ventajas y <strong>de</strong>sventajas <strong>de</strong> las Bases <strong>de</strong> <strong>datos</strong> Distribuidas ……………………………21<br />

Conclusiones ……………………………………………………………..……………22<br />

Bibliografía ……………………………….………………………………….………..22<br />

2


Base <strong>de</strong> Datos Distribuidas<br />

Introducción<br />

Inicialmente po<strong>de</strong>mos <strong>de</strong>cir que las SBDD surgen como respuesta a la distribución que las<br />

empresas ya tienen, al menos <strong>de</strong> manera lógica (divisiones, <strong>de</strong>partamentos, etc…) y que en<br />

ocasiones también tiene <strong>de</strong> manera física (plantas, fábricas, etc…). Todo esto nos lleva a que<br />

posiblemente los <strong>datos</strong> también estén distribuidos, ya que cada unidad organizacional<br />

mantendrá los <strong>datos</strong> con los que normalmente opere.<br />

A cada uno <strong>de</strong> estas subdivisiones se les llama “islas <strong>de</strong> información” (sitios), y lo que hace<br />

un sistema distribuido es establecer los “puentes” necesarios para conectar a esas islas entre si.<br />

En <strong>de</strong>finitiva lo que preten<strong>de</strong> es que la estructura <strong>de</strong> la <strong>base</strong> <strong>de</strong> <strong>datos</strong> refleje la estructura <strong>de</strong><br />

la empresa (principal beneficio <strong>de</strong> los sistemas distribuidos). Es en realidad una BD virtual<br />

compuesta <strong>de</strong> varias BDs “reales” distintas que se encuentran en varios sitios distintos.<br />

Otra <strong>de</strong> las principales motivaciones para el <strong>de</strong>sarrollo <strong>de</strong> sistemas <strong>de</strong> <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> es el<br />

<strong>de</strong>seo <strong>de</strong> integrar los <strong>datos</strong> operacionales <strong>de</strong> una organización y proporcionar un acceso<br />

controlado a esos <strong>datos</strong>. Aunque la integración y el acceso controlado pue<strong>de</strong>n implicar la<br />

necesidad <strong>de</strong> utilizar mecanismos <strong>de</strong> centralización, el objetivo en realidad no es ese. De hecho,<br />

el <strong>de</strong>sarrollo <strong>de</strong> re<strong>de</strong>s informáticas promueve el modo <strong>de</strong>scentralizado <strong>de</strong> trabajo.<br />

Los SGBD distribuidos <strong>de</strong>berían ayudarnos a resolver el problema <strong>de</strong> las islas <strong>de</strong><br />

información. Esto pue<strong>de</strong> ser resultado <strong>de</strong> la separación geográfica, <strong>de</strong> la incompatibilidad <strong>de</strong> las<br />

arquitecturas informáticas, <strong>de</strong> los protocolos <strong>de</strong> comunicaciones, etc. Si se consigue integrar las<br />

<strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> en un todo lógico coherente, po<strong>de</strong>mos resolver el problema.<br />

Con todo esto po<strong>de</strong>mos dar una <strong>de</strong>finición más formal <strong>de</strong> <strong>base</strong> <strong>de</strong> <strong>datos</strong> distribuida (BDD)<br />

como una colección <strong>de</strong> múltiples <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> interrelacionadas lógicamente y <strong>distribuidas</strong> por<br />

una red <strong>de</strong> computadores.<br />

3


Base <strong>de</strong> Datos Distribuidas<br />

Es importante tener clara la diferencia que existe con el procesamiento distribuido, en el<br />

cual existe una BD centralizada a la que se pue<strong>de</strong> acce<strong>de</strong>r a través <strong>de</strong> una<br />

red informática. En las siguientes figuras po<strong>de</strong>mos ver claramente la diferencia entre ambos:<br />

Base <strong>de</strong> Datos Distribuida Procesamiento Distribuido<br />

El Sistema Gestor <strong>de</strong> Bases <strong>de</strong> Datos Distribuido (SGBDD) es el sistema software que<br />

permite gestionar la BDD y hace que dicha distribución sea transparente para los usuarios.<br />

Un SGBDD está compuesto por una única <strong>base</strong> <strong>de</strong> <strong>datos</strong> lógica dividida en una serie <strong>de</strong><br />

fragmentos que pue<strong>de</strong>n estar replicados en diferentes instalaciones. Cada fragmento se almacena<br />

en uno o más or<strong>de</strong>nadores bajo el control <strong>de</strong> un SGBD in<strong>de</strong>pendiente. Todos estos or<strong>de</strong>nadores<br />

(instalación o nodo) <strong>de</strong>l sistema están conectados entre sí mediante una red <strong>de</strong> comunicaciones.<br />

Clasificaremos las BDD según dos criterios:<br />

• Homogéneas o heterogéneas <strong>de</strong>pendiendo <strong>de</strong> si todos los servidores utilizan el<br />

mismo SGBD o no .<br />

• De área local o <strong>de</strong> área ancha según sea la red <strong>de</strong> comunicaciones que conecta los<br />

servidores.<br />

Por otra parte y con lo que respecta a las implementaciones comerciales, la mayoría <strong>de</strong> los<br />

productos SQL actuales proporcionan algún tipo <strong>de</strong> soporte <strong>de</strong> <strong>base</strong> <strong>de</strong> <strong>datos</strong> distribuida, con<br />

diversos grados <strong>de</strong> funcionalidad.<br />

• Ingres/Star.<br />

• La opción <strong>de</strong> <strong>base</strong> <strong>de</strong> <strong>datos</strong> distribuida <strong>de</strong> Oracle.<br />

• La propiedad <strong>de</strong> <strong>datos</strong> distribuidos <strong>de</strong> DB2.<br />

• Informix y SQL Server.<br />

4


Base <strong>de</strong> Datos Distribuidas<br />

Vale la pena reseñar que todos estos sistemas son relacionales, a<strong>de</strong>más hay varias<br />

razones que iremos <strong>de</strong>scubriendo a lo largo <strong>de</strong> este tema, que aconsejan que para que un sistema<br />

distribuido sea exitoso, <strong>de</strong>be ser relacional.<br />

Sistemas gestores <strong>de</strong> Bases <strong>de</strong> Datos Distribuidas (SGBDD)<br />

Software que hace transparente al usuario la gestión <strong>de</strong> una <strong>base</strong> <strong>de</strong> <strong>datos</strong> distribuida. En<br />

a<strong>de</strong>lante lo llamaremos SGBDD.<br />

Entre sus funciones particulares <strong>de</strong>stacan:<br />

• Po<strong>de</strong>r acce<strong>de</strong>r a sitios remotos.<br />

• Transmitir consultas y <strong>datos</strong> a través <strong>de</strong> re<strong>de</strong>s <strong>de</strong> telecomunicaciones.<br />

• Rastrear la pista <strong>de</strong> distribución y replicación <strong>de</strong> los <strong>datos</strong>.<br />

• Capacidad <strong>de</strong> elaborar estrategias <strong>de</strong> ejecución.<br />

• Control <strong>de</strong> concurrencia.<br />

• Mantener la consistencia <strong>de</strong> las copias <strong>de</strong> un elemento <strong>de</strong> información.<br />

• Capacidad <strong>de</strong> <strong>de</strong>cidir qué versión <strong>de</strong> la copia <strong>de</strong> un elemento <strong>de</strong> información es la que<br />

tiene que ser accedida en un momento <strong>de</strong>terminado.<br />

• Recuperación ante caídas.<br />

• Control <strong>de</strong> la seguridad para mantener privilegios <strong>de</strong> acceso a los <strong>datos</strong> distribuidos.<br />

Para ofrecer todas las funcionalida<strong>de</strong>s vistas un SGBDD <strong>de</strong>be contar (al menos) con los<br />

siguientes componentes:<br />

• Componente <strong>de</strong> manejo <strong>de</strong> la <strong>base</strong> <strong>de</strong> <strong>datos</strong>.<br />

• Componente <strong>de</strong> comunicación <strong>de</strong> <strong>datos</strong>.<br />

• Diccionario <strong>de</strong> <strong>datos</strong><br />

• Componente <strong>de</strong> <strong>base</strong> <strong>de</strong> <strong>datos</strong> distribuida.<br />

Tipos <strong>de</strong> SGBDD<br />

Hay diferentes tipos <strong>de</strong> SGBDD. El factor para categorizarlos es su grado <strong>de</strong> homogeneidad.<br />

Partiendo <strong>de</strong> él, tenemos dos tipos <strong>de</strong> SGBDD.<br />

• Homogéneos: todos los nodos utilizan el mismo SGBD<br />

• Heterogéneos: los nodos pue<strong>de</strong>n utilizar distintos SGBD.<br />

5


Base <strong>de</strong> Datos Distribuidas<br />

Los sistemas homogéneos son mucho más fáciles <strong>de</strong> diseñar y mantener. Esta técnica<br />

permite el crecimiento incremental, haciendo que la adición <strong>de</strong> un nuevo nodo al SGBDD sea<br />

sencilla, y también permite conseguir unas mayores prestaciones, al aprovechar las capacida<strong>de</strong>s<br />

<strong>de</strong> procesamiento paralelo <strong>de</strong> los múltiples nodos.<br />

Los objetivos <strong>de</strong> un SGBDD<br />

Una vez que nos hemos introducido en el mundo <strong>de</strong> las SBDD, estamos preparados para<br />

establecer el principio fundamental <strong>de</strong> los sistemas distribuidos:<br />

“Los usuarios <strong>de</strong>ben actuar <strong>de</strong> la misma forma tanto si están ante un sistema distribuido como<br />

si están ante uno centralizado”.<br />

En 1987, uno <strong>de</strong> los más importantes y conocidos teóricos <strong>de</strong> las <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong><br />

relacionales, C. J. Date, propuso 12 objetivos que <strong>de</strong>bían alcanzar los diseñadores en sus BDD<br />

junto con sus SGBDD basándose en este principio fundamental. Las 12 reglas son las<br />

siguientes:<br />

1. Autonomía local: Los sitios <strong>de</strong> un sistema distribuido <strong>de</strong>ben ser autónomos en el mayor<br />

grado posible, lo que permite una mayor seguridad, control <strong>de</strong> concurrencia y copias <strong>de</strong><br />

seguridad. Esto quiere <strong>de</strong>cir que los <strong>datos</strong> <strong>de</strong>ben ser gestionados localmente, las operaciones<br />

son locales y todas las operaciones en un puesto son controladas por ese puesto.<br />

2. In<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> un sitio central: El anterior objetivo implica que todos los sitios<br />

<strong>de</strong>ben ser tratados como iguales, por lo tanto no <strong>de</strong>be existir ningún sitio maestro central <strong>de</strong>l<br />

cual <strong>de</strong>pendan el resto. Esto es así por das razones fundamentales:<br />

• Pue<strong>de</strong> ser un cuello <strong>de</strong> botella.<br />

• Pue<strong>de</strong> ser vulnerable, si éste falla también fallará todo el sistema.<br />

3. El sistema <strong>de</strong>be estar en continua operación: Un fallo en uno <strong>de</strong> los nodos no <strong>de</strong>be<br />

afectar al sistema. Tampoco si se aña<strong>de</strong>n nuevos nodos. Así, un SD <strong>de</strong>berá proporcionar las<br />

siguientes características.<br />

• Fiabilidad (o confiabilidad): probabilidad <strong>de</strong> que el sistema esté listo y<br />

funcionando en cualquier momento dado.<br />

• Disponibilidad: probabilidad <strong>de</strong> que el sistema esté listo y funcionando<br />

continuamente a lo largo <strong>de</strong> un período especificado. Po<strong>de</strong>mos <strong>de</strong>cir que nunca<br />

6


Base <strong>de</strong> Datos Distribuidas<br />

<strong>de</strong>bería ser necesario apagar el sistema para realizar tareas como: añadir un<br />

sitio, creación dinámica <strong>de</strong> fragmentos, actualización <strong>de</strong> versiones, etc.<br />

4. Transparencia <strong>de</strong> ubicación: Para el usuario la localización física <strong>de</strong> los <strong>datos</strong> <strong>de</strong>be ser<br />

transparente. No necesita saber dón<strong>de</strong> está el dato para utilizarlo.<br />

5. Transparencia <strong>de</strong> fragmentación: Los usuarios <strong>de</strong>ben comportarse, como si los <strong>datos</strong><br />

en realidad no tuvieran fragmentación alguna, la cual es necesaria por razones <strong>de</strong><br />

rendimiento.<br />

Este objetivo es <strong>de</strong>seable, como el anterior, porque simplifica los programas <strong>de</strong> los<br />

usuarios y sus activida<strong>de</strong>s en el sitio.<br />

6. Transparencia en la replicación: Consiste en que el usuario no <strong>de</strong>be tener conciencia <strong>de</strong><br />

la replicación <strong>de</strong> los <strong>datos</strong>, así como <strong>de</strong> su <strong>de</strong>strucción<br />

La replicación es necesaria por las siguientes razones:<br />

• Un mayor rendimiento, puesto que disponemos <strong>de</strong> copias locales.<br />

• Una mayor disponibilidad, puesto que los <strong>datos</strong> son accesibles siempre al tenerse<br />

varias copias.<br />

La principal <strong>de</strong>sventaja, es que hay que mantener actualizadas todas las copias <strong>de</strong> ese<br />

objeto o dato replicado. Esto nos lleva al problema <strong>de</strong> la “propagación <strong>de</strong> las<br />

actualizaciones”.<br />

7. Procesamiento <strong>de</strong> consultas <strong>distribuidas</strong>: El sistema <strong>de</strong>be ser capaz <strong>de</strong> procesar<br />

consultas que afecten a <strong>datos</strong> <strong>de</strong> más <strong>de</strong> un sitio y hacerlo <strong>de</strong> forma optimizada. Este hecho<br />

pue<strong>de</strong> ser consi<strong>de</strong>rado como otra razón por la que los sistemas distribuidos siempre son<br />

relacionales (las peticiones relacionales son optimizables, mientras que las no relacionales<br />

no lo son).<br />

8. Administración <strong>de</strong> transacciones <strong>distribuidas</strong>: El sistema distribuido <strong>de</strong>be disponer <strong>de</strong><br />

mecanismos (protocolos) a<strong>de</strong>cuados para el control <strong>de</strong> concurrencia y la recuperación <strong>de</strong><br />

transacciones <strong>distribuidas</strong>. Una transacción pue<strong>de</strong> acce<strong>de</strong>r y modificar <strong>datos</strong> en diferentes<br />

nodos sin que el usuario se entere <strong>de</strong> que múltiples sitios se están viendo afectados por la<br />

transacción.<br />

9. In<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong>l hardware: Es necesario tener la posibilidad <strong>de</strong> ejecutar el mismo<br />

SGBDD en diferentes plataformas <strong>de</strong> hardware (IBM, ICL, HP, PC, SUN) y, a<strong>de</strong>más, hacer<br />

que esas máquinas diferentes participen <strong>de</strong> igual forma en un sistema distribuido.<br />

7


Base <strong>de</strong> Datos Distribuidas<br />

10. In<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong>l sistema operativo: Un vez más, es necesario tener la posibilidad <strong>de</strong><br />

ejecutar el mismo SGBDD, en diferentes plataformas <strong>de</strong> sistema operativo (UNIX,<br />

Windows XP …) bajo un mismo sistema distribuido.<br />

11. In<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> la red: El sistema <strong>de</strong>be tener la posibilidad <strong>de</strong> soportar también, una<br />

variedad <strong>de</strong> re<strong>de</strong>s <strong>de</strong> comunicación distintas.<br />

12. In<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong>l SGBD: Lo que en realidad se preten<strong>de</strong> es que todos los ejemplares<br />

<strong>de</strong>l SGBDD locales en sitios diferentes soporten la misma interfase, que en este caso sería<br />

el estándar SQL oficial. Con esto conseguiremos que el sistema distribuido fuera<br />

heterogéneo, al menos en cierta medida ya que en realidad los fabricantes solo cumplen<br />

<strong>de</strong>terminadas características <strong>de</strong> este estándar, que suelen ser distintas <strong>de</strong> unos a otros.<br />

Debido a que estos cuatro últimos objetivos son i<strong>de</strong>ales y no existen estándares<br />

al respecto, solo cabe esperar un cumplimiento parcial <strong>de</strong> los mismos.<br />

Arquitectura cliente-servidor<br />

Las aplicaciones <strong>de</strong> <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong> se <strong>de</strong>sarrollan en el contexto <strong>de</strong> la<br />

arquitectura cliente-servidor.<br />

8


Base <strong>de</strong> Datos Distribuidas<br />

La arquitectura cliente-servidor se creó para manejar los nuevos entornos <strong>de</strong> cómputo en los<br />

que un gran número <strong>de</strong> PC, estaciones <strong>de</strong> trabajos, servidores <strong>de</strong> ficheros, impresoras,<br />

servidores <strong>de</strong> <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong>, servidores Web y otros equipos están interconectados a través <strong>de</strong><br />

una red.<br />

En un sistema cliente-servidor tenemos dos partes fundamentales:<br />

• Cliente. Se podría correspon<strong>de</strong>r con una máquina usuario que proporciona capacidad <strong>de</strong><br />

interfaz al usuario y procesamiento local.<br />

• Servidor. Es una máquina que pue<strong>de</strong> proporcionar a las máquinas cliente servicios, tales<br />

como impresión, acceso a ficheros, o acceso a la <strong>base</strong> <strong>de</strong> <strong>datos</strong>.<br />

Aún no se ha establecido <strong>de</strong> forma exacta cómo dividir la funcionalidad <strong>de</strong>l SGBD entre<br />

el cliente y el servidor aunque existen varios enfoques.<br />

En cuanto al software, en un sistema <strong>de</strong> gestión <strong>de</strong> <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> es normal dividir los<br />

diferentes módulos software en tres niveles:<br />

• El software <strong>de</strong> servidor que gestiona los <strong>datos</strong> locales en un sitio, al igual que el<br />

software <strong>de</strong>l SGBD centralizado.<br />

• El software <strong>de</strong>l cliente que soporta casi todas las tareas <strong>de</strong> distribución y maneja las<br />

interfaces <strong>de</strong> usuario<br />

• El software <strong>de</strong> comunicaciones (algunas veces junto con el sistema operativo<br />

distribuido) proporciona las primitivas <strong>de</strong> comunicación que utiliza el cliente para<br />

transmitir instrucciones y <strong>datos</strong> entre los sitios necesarios.<br />

Diseño <strong>de</strong> Bases <strong>de</strong> Datos Distribuidas<br />

El diseño <strong>de</strong> <strong>base</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong> se ocupa <strong>de</strong> tomar <strong>de</strong>cisiones en la ubicación <strong>de</strong><br />

programas que acce<strong>de</strong>rán a la <strong>base</strong> <strong>de</strong> <strong>datos</strong> y sobre los propios <strong>datos</strong> que la constituyen, a lo<br />

largo <strong>de</strong> los diferentes nodos que constituyen la red. Tenemos que distribuir pequeños<br />

elementos entre diferentes computadores, es <strong>de</strong>cir, distribuir la información.<br />

La organización <strong>de</strong> los sistemas <strong>de</strong> <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong> se pue<strong>de</strong> analizar <strong>de</strong>s<strong>de</strong> tres<br />

dimensiones:<br />

9


Base <strong>de</strong> Datos Distribuidas<br />

• El nivel <strong>de</strong> compartición. Esta característica posee tres alternativas <strong>de</strong>pendiendo <strong>de</strong>l<br />

nivel <strong>de</strong> compartición:<br />

o Inexistente. Cada aplicación y sus <strong>datos</strong> se ejecutan en una maquina sin<br />

comunicación con otros programas o <strong>datos</strong>.<br />

o Compartición <strong>de</strong> <strong>datos</strong>. Cada máquina posee sus propias aplicaciones locales<br />

pero se comparte los <strong>datos</strong>.<br />

o Compartición <strong>de</strong> <strong>datos</strong> y programas. Las aplicaciones locales en una<br />

máquina pue<strong>de</strong>n invocar servicios en otras y a<strong>de</strong>más comparten los <strong>datos</strong>.<br />

• Características <strong>de</strong> acceso a los <strong>datos</strong>. Estas características pue<strong>de</strong>n ser dos:<br />

o Estático. El mo<strong>de</strong>lo <strong>de</strong> acceso a los <strong>datos</strong> no varía con el tiempo.<br />

o Dinámico. El mo<strong>de</strong>lo <strong>de</strong> acceso a los <strong>datos</strong> varía con el tiempo.<br />

• El nivel <strong>de</strong> conocimiento <strong>de</strong> la características <strong>de</strong> acceso:<br />

o Sin información. Los diseñadores no tienen información <strong>de</strong> cómo acce<strong>de</strong>n los<br />

usuarios a los <strong>datos</strong>.<br />

o Con información parcial. Los diseñadores no poseen toda la información <strong>de</strong><br />

cómo acce<strong>de</strong>n los usuarios a los <strong>datos</strong>.<br />

o Con información total. Los diseñadores poseen la información completa <strong>de</strong><br />

Estrategias <strong>de</strong> Diseño<br />

cómo los usuarios acce<strong>de</strong>n a los <strong>datos</strong>.<br />

Estas estrategias son las utilizadas al diseñar una <strong>base</strong> <strong>de</strong> <strong>datos</strong> relacional, pero añadiendo<br />

un paso <strong>de</strong> diseño <strong>de</strong> la distribución.<br />

A la hora <strong>de</strong> abordar el diseño <strong>de</strong> una <strong>base</strong> <strong>de</strong> <strong>datos</strong> distribuida podremos optar<br />

principalmente por dos tipos <strong>de</strong> estrategias: la estrategia ascen<strong>de</strong>nte y la estrategia <strong>de</strong>scen<strong>de</strong>nte:<br />

La estrategia ascen<strong>de</strong>nte (botton-up): En este caso se partiría <strong>de</strong> los esquemas<br />

conceptuales locales y se trabajaría para llegar a conseguir el esquema conceptual<br />

global. Después se pasaría al diseño <strong>de</strong> distribución. Esta estrategia suele ser utilizada para<br />

integrar varias <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> centralizadas existentes.<br />

En la estrategia <strong>de</strong>scen<strong>de</strong>nte (top-down) se parte <strong>de</strong> cero y se avanza en el <strong>de</strong>sarrollo <strong>de</strong>l<br />

trabajo. Los pasos a realizar mediante esta estrategia son los siguientes:<br />

10


Base <strong>de</strong> Datos Distribuidas<br />

1. Análisis <strong>de</strong> requisitos: En esta etapa se <strong>de</strong>terminan los requisitos para obtener tanto los<br />

<strong>datos</strong> como las necesida<strong>de</strong>s <strong>de</strong> procesamientos <strong>de</strong> los usuarios. Igualmente se <strong>de</strong>berán fijar<br />

los requisitos <strong>de</strong>l sistema, los objetivos que <strong>de</strong>be cumplir en cuanto a rendimiento,<br />

seguridad, disponibilidad y flexibilidad teniendo en cuenta aspectos económicos. Al<br />

finalizar esta etapa <strong>de</strong>bemos poseer unos objetivos que servirán como entrada para dos<br />

activida<strong>de</strong>s: Diseño conceptual y diseño <strong>de</strong> vistas.<br />

2. Diseño <strong>de</strong> vistas: En esta etapa se <strong>de</strong>finirán las interfaces <strong>de</strong>l usuario con el sistema. Se<br />

<strong>de</strong>terminan las aplicaciones que usaran la <strong>base</strong> <strong>de</strong> <strong>datos</strong> así como <strong>datos</strong> estadísticos o<br />

estimaciones <strong>de</strong> las mismas sobre frecuencia <strong>de</strong> acceso <strong>de</strong> cada aplicación a cada tabla, que<br />

nos permitirá poseer información que nos ayudará a optimizar ciertas partes y crear un<br />

diseño conceptual mas eficiente. Al finalizar esta etapa se <strong>de</strong>bería poseer toda la<br />

información <strong>de</strong> acceso y la <strong>de</strong>finición <strong>de</strong> los esquemas externos.<br />

3. Diseño conceptual: En esta etapa se suele realizar la integración <strong>de</strong> las vistas <strong>de</strong>l usuario.<br />

Como resultado <strong>de</strong> la ejecución <strong>de</strong> estas dos últimas etapas <strong>de</strong>bemos tener un esquema<br />

conceptual global, información <strong>de</strong> acceso y los esquemas externos que servirán <strong>de</strong> entrada<br />

para la próxima etapa.<br />

4. Diseño <strong>de</strong> la distribución. Esta etapa es representativa en el diseño <strong>de</strong> BBDD<br />

<strong>distribuidas</strong> ya que es la etapa que la diferencia <strong>de</strong>l diseño <strong>de</strong> <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> centralizadas.<br />

Consiste obtener diferentes esquemas conceptuales locales a partir <strong>de</strong>l esquema conceptual<br />

global y la información <strong>de</strong> acceso. En este punto <strong>de</strong>bemos consi<strong>de</strong>rar dos activida<strong>de</strong>s<br />

importantes:<br />

• Fragmentación: consiste en <strong>de</strong>cidir como dividimos la <strong>base</strong> <strong>de</strong> <strong>datos</strong> y en que partes.<br />

• Asignación: consiste en ubicar los fragmentos que hemos obtenido en los distintos<br />

nodos.<br />

5. Diseño físico. A partir <strong>de</strong> los esquemas conceptuales locales y la información <strong>de</strong> acceso<br />

obtenidos en las etapas anteriores se <strong>de</strong>be obtener el esquema físico.<br />

6. Monitorización y ajustes. Este paso se realiza para llevar un control <strong>de</strong>l proceso y e<br />

intentar reparar lo errores o <strong>de</strong>sviaciones que se produzcan en el proceso.<br />

11


Base <strong>de</strong> Datos Distribuidas<br />

Fragmentación<br />

La fragmentación es el proceso encargado <strong>de</strong> dividir una relación en otras subrelaciones <strong>de</strong><br />

menor tamaño, y su objetivo es encontrar la unidad apropiada <strong>de</strong> distribución. Existe una serie<br />

<strong>de</strong> razones por las que llevar a cabo la fragmentación:<br />

• Utilización: En general, las aplicaciones funcionan con vistas que normalmente son<br />

subconjuntos <strong>de</strong> relaciones. Por tanto, es lógico consi<strong>de</strong>rar como unidad <strong>de</strong><br />

distribución a esos subconjuntos <strong>de</strong> relaciones.<br />

• Eficiencia: Los <strong>datos</strong> se almacenan cerca <strong>de</strong>l lugar en el que son utilizados con mayor<br />

frecuencia. A<strong>de</strong>más, los <strong>datos</strong> que las aplicaciones locales no necesitan no se<br />

almacenan en ese nodo.<br />

• Paralelismo: La <strong>de</strong>scomposición <strong>de</strong> una relación en fragmentos permite que una<br />

transacción pueda ser dividida en subconsultas. Cada subconsulta operará sobre el<br />

fragmento a<strong>de</strong>cuado. En <strong>de</strong>finitiva, se aumenta el grado <strong>de</strong> concurrencia.<br />

• Seguridad: Los <strong>datos</strong> no requeridos por las aplicaciones locales no se almacenan en<br />

ese nodo, por lo que no están disponibles para los usuarios no autorizados.<br />

¿Qué unidad <strong>de</strong> fragmentación tomar?<br />

El principal problema <strong>de</strong> la fragmentación consiste en encontrar una unidad <strong>de</strong><br />

fragmentación. Se podría consi<strong>de</strong>rar como unidad <strong>de</strong> fragmentación una relación completa pero<br />

esto no es óptimo <strong>de</strong>bido a cuestiones <strong>de</strong> eficiencia. Las siguientes afirmaciones nos dan<br />

razones por las que la relación no es la unidad <strong>de</strong> fragmentación i<strong>de</strong>al:<br />

• Las vistas son subconjuntos <strong>de</strong> varias relaciones, es <strong>de</strong>cir, se forman a partir <strong>de</strong> trozos<br />

<strong>de</strong> varias tablas. Ya que cada aplicación posee sus propias vistas lo mas a<strong>de</strong>cuado será<br />

conseguir que la mayoría <strong>de</strong> las vistas estén <strong>de</strong>finidas sobre subtablas locales a cada<br />

aplicación y así logramos un incremento <strong>de</strong>l rendimiento. Luego la mejor unidad <strong>de</strong><br />

fragmentación seria subconjuntos <strong>de</strong> relaciones.<br />

• Al <strong>de</strong>scomponer una relación en fragmentos, se permite el procesamiento concurrente<br />

<strong>de</strong> transacciones ya que no se bloquean tablas enteras sino subtablas, por lo que dos<br />

consultas pue<strong>de</strong>n acce<strong>de</strong>r a la misma tabla en fragmentos distintos.<br />

• Al <strong>de</strong>scomponer una relación en fragmentos, se permite la paralelización <strong>de</strong> consultas al<br />

po<strong>de</strong>r <strong>de</strong>scomponerlas en subconsultas, cada una <strong>de</strong> las cuales trabajará con un<br />

fragmento distinto produciéndose un incremento <strong>de</strong>l rendimiento.<br />

12


Base <strong>de</strong> Datos Distribuidas<br />

Inconvenientes <strong>de</strong> la fragmentación:<br />

• Si las aplicaciones tienen requisitos que necesiten la <strong>de</strong>scomposición <strong>de</strong> la relación en<br />

fragmentos mutuamente exclusivos, estas aplicaciones cuyas vistas estén <strong>de</strong>finidas<br />

sobre más <strong>de</strong> un fragmento pue<strong>de</strong>n poseer menor rendimiento.<br />

• Si una vista <strong>de</strong> usuario no se pue<strong>de</strong> <strong>de</strong>finir sobre un solo fragmento necesitarán un<br />

control semántico que dificulta y <strong>de</strong>grada el rendimiento <strong>de</strong>bido a que la verificación <strong>de</strong><br />

las restricciones <strong>de</strong> integridad implican buscar fragmentos en múltiples localizaciones.<br />

Tipos <strong>de</strong> fragmentación:<br />

Fragmentación horizontal. Consiste en el particionamiento en tuplas <strong>de</strong> una relación<br />

global en subconjuntos, don<strong>de</strong> cada subconjunto pue<strong>de</strong> contener <strong>datos</strong> que cumplen una<br />

condición y se pue<strong>de</strong> <strong>de</strong>finir expresando cada fragmento como una operación <strong>de</strong> selección<br />

sobre la relación global.<br />

Fragmentación vertical. En este tipo <strong>de</strong> fragmentación se divi<strong>de</strong>n el conjunto <strong>de</strong> atributos en<br />

grupos. Los fragmentos se obtienen proyectando la relación global sobre cada grupo. La<br />

fragmentación es correcta si cada atributo se mapea en al menos un atributo <strong>de</strong>l fragmento.<br />

Fragmentación mixta. Este tipo <strong>de</strong> fragmentación consiste en la aplicación <strong>de</strong><br />

fragmentación vertical y <strong>de</strong>spués fragmentación horizontal o viceversa.<br />

Asignación<br />

Supongamos que tenemos un conjunto <strong>de</strong> fragmentos F={F1, F2, …, Fn} y una red que<br />

consiste en este conjunto <strong>de</strong> sitios S={S1, S2, …, Sm}. El problema <strong>de</strong> asignación <strong>de</strong>termina la<br />

distribución óptima <strong>de</strong> F en S. La optimalidad pue<strong>de</strong> ser <strong>de</strong>finida <strong>de</strong> acuerdo a dos medidas:<br />

1. Coste mínimo. Consiste en el coste <strong>de</strong> la comunicación <strong>de</strong> <strong>datos</strong>, coste <strong>de</strong>l<br />

almacenamiento y el coste <strong>de</strong> procesamiento. Nuestro objetivo es encontrar una función<br />

que minimiza el coste.<br />

2. Rendimiento. La estrategia <strong>de</strong> asignación se diseña para mantener una métrica <strong>de</strong><br />

rendimiento. Las dos métricas más utilizadas son el tiempo <strong>de</strong> respuesta y el<br />

“throughput” (productividad).<br />

13


Base <strong>de</strong> Datos Distribuidas<br />

Cuando una serie <strong>de</strong> <strong>datos</strong> se asignan, estos pue<strong>de</strong>n replicarse para mantener una copia o<br />

varias idénticas. Por tanto, respecto a la replicación, en la asignación <strong>de</strong> fragmentos existen tres<br />

estrategias:<br />

No soportar replicación. Cada fragmento resi<strong>de</strong> en un solo sitio.<br />

Soportar replicación completa. Cada fragmento resi<strong>de</strong> en cada uno <strong>de</strong> los sitios.<br />

Soportar replicación parcial. Cada fragmento resi<strong>de</strong> en alguno <strong>de</strong> los sitios.<br />

Se consi<strong>de</strong>ra <strong>de</strong> gran utilidad la replicación cuando el número <strong>de</strong> consultas <strong>de</strong> solo<br />

lectura es bastante mayor que el número <strong>de</strong> consultas <strong>de</strong> actualizaciones.<br />

Transacciones en <strong>base</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong><br />

La pregunta es qué pasa cuando dos consultas tratan <strong>de</strong> actualizar el mismo elemento <strong>de</strong><br />

<strong>datos</strong> o si el sistema falla durante la ejecución <strong>de</strong> una consulta. Intuitivamente se pue<strong>de</strong> pensar<br />

que el concepto principal que <strong>de</strong>be manejar la <strong>base</strong> <strong>de</strong> <strong>datos</strong> es la <strong>de</strong> ‘ejecución consistente’ <strong>de</strong><br />

consultas. Por eso es que se introduce el concepto <strong>de</strong> una transacción que es usado <strong>de</strong>ntro <strong>de</strong>l<br />

dominio <strong>de</strong> la <strong>base</strong> <strong>de</strong> <strong>datos</strong> como una unidad básica <strong>de</strong> cómputo consistente y confiable.<br />

Lo que se persigue con el manejo <strong>de</strong> transacciones es por un lado tener una<br />

transparencia a<strong>de</strong>cuada <strong>de</strong> las acciones concurrentes a una <strong>base</strong> <strong>de</strong> <strong>datos</strong> y por otro lado tener<br />

una transparencia a<strong>de</strong>cuada en el manejo <strong>de</strong> las fallas que se pue<strong>de</strong>n presentar en una <strong>base</strong> <strong>de</strong><br />

<strong>datos</strong>. Las propieda<strong>de</strong>s <strong>de</strong> una transacción son las siguientes:<br />

1.-Atomicidad. Se refiere al hecho <strong>de</strong> que una transacción se trata como una unidad <strong>de</strong><br />

operación. Por lo tanto, o todas las acciones <strong>de</strong> la transacción se realizan o ninguna <strong>de</strong> ellas<br />

se lleva a cabo.<br />

2.-Consistencia. La consistencia <strong>de</strong> una transacción es simplemente su correctitud. En otras<br />

palabras, una transacción es un programa correcto que lleva la <strong>base</strong> <strong>de</strong> <strong>datos</strong> <strong>de</strong> un estado<br />

consistente a otro con la misma característica.<br />

3.-Aislamiento. Una transacción en ejecución no pue<strong>de</strong> revelar sus resultados a otras<br />

transacciones concurrentes antes <strong>de</strong> su commit. Más aún, si varias transacciones se ejecutan<br />

concurrentemente, los resultados <strong>de</strong>ben ser los mismos que si ellas se hubieran ejecutado <strong>de</strong><br />

manera secuencial (seriabilidad).<br />

14


Base <strong>de</strong> Datos Distribuidas<br />

4.-Durabilidad. Es la propiedad <strong>de</strong> las transacciones que asegura que una vez que una<br />

transacción hace su commit, sus resultados son permanentes y no pue<strong>de</strong>n ser borrados <strong>de</strong> la<br />

<strong>base</strong> <strong>de</strong> <strong>datos</strong>.<br />

En resumen, las transacciones proporcionan una ejecución atómica y confiable en<br />

presencia <strong>de</strong> fallas, una ejecución correcta en presencia <strong>de</strong> accesos <strong>de</strong> usuario múltiples y un<br />

manejo correcto <strong>de</strong> réplicas (en el caso <strong>de</strong> que se soporten).<br />

En un SBDD pue<strong>de</strong> que participen varias localida<strong>de</strong>s en la ejecución <strong>de</strong> una transacción<br />

por lo que es más difícil garantizar la propiedad <strong>de</strong> atomicidad. El fallo <strong>de</strong> una <strong>de</strong> estas<br />

localida<strong>de</strong>s o el fallo <strong>de</strong> la línea <strong>de</strong> comunicación entre ellas pue<strong>de</strong>n llevar a un resultado<br />

erróneo. Es por esto que existe el gestor <strong>de</strong> transacciones cuya función es asegurar la ejecución<br />

atómica <strong>de</strong> las transacciones gestionando la ejecución <strong>de</strong> aquellas transacciones(locales o<br />

globales) que acce<strong>de</strong>n a <strong>datos</strong> almacenados en su localidad y el coordinador <strong>de</strong> transacciones<br />

que es el encargado <strong>de</strong> coordinar la ejecución <strong>de</strong> varias transacciones(locales o globales)<br />

iniciadas en su localidad.<br />

A más bajo nivel nos encontramos con la necesidad <strong>de</strong> transferir los <strong>datos</strong> entre el<br />

almacenamiento en disco y la memoria principal. De esto se encarga el gestor <strong>de</strong> búferes.<br />

En un SGBDD, todos estos módulos se encuentran tanto a nivel local en cada equipo como<br />

a nivel <strong>de</strong> nodo. Estos últimos son los <strong>de</strong>nominados gestores globales <strong>de</strong> transacciones.<br />

El procedimiento a seguir cuando se ejecuta una transacción global en un nodo N1 es la<br />

siguiente:<br />

o El gestor global <strong>de</strong> transacciones <strong>de</strong>l nodo N1, divi<strong>de</strong> la transacción en una secuencia <strong>de</strong><br />

subtransacciones, siguiendo la información guardada en el catálogo global <strong>de</strong>l sistema.<br />

o El encargado <strong>de</strong> la comunicación <strong>de</strong> <strong>datos</strong> <strong>de</strong>l nodo N1 envía dichas subtransacciones a<br />

los nodos a<strong>de</strong>cuados, por ejemplo N2 y N3.<br />

o Los gestores globales <strong>de</strong> transacciones <strong>de</strong>l los nodos que reciben los <strong>datos</strong>, se encargan<br />

<strong>de</strong> gestionarlos y los resultados <strong>de</strong> las secuencias <strong>de</strong> instrucciones SQL se <strong>de</strong>vuelven a<br />

través <strong>de</strong>l encargado <strong>de</strong> la comunicación <strong>de</strong> <strong>datos</strong> al primer nodo N1.<br />

15


Base <strong>de</strong> Datos Distribuidas<br />

Control <strong>de</strong> concurrencia<br />

Todos los mecanismos <strong>de</strong> control <strong>de</strong> concurrencia <strong>de</strong>ben asegurar la consistencia <strong>de</strong> los<br />

objetos y cada transacción atómica será completada en un tiempo finito.<br />

Un método <strong>de</strong> control <strong>de</strong> concurrencia es correcto si es serializable, es <strong>de</strong>cir existe una<br />

secuencia equivalente en que las operaciones <strong>de</strong> cada transacción aparecen antes o <strong>de</strong>spués <strong>de</strong><br />

otra transacción pero no entremezcladas. Una ejecución serial <strong>de</strong> transacciones es siempre<br />

correcta.<br />

Se <strong>de</strong>be sincronizar las transacciones concurrentes <strong>de</strong> los usuarios, extendiendo los<br />

argumentos para la serializabilidad y los algoritmos <strong>de</strong> control <strong>de</strong> concurrencia para la ejecución<br />

en ambientes distribuidos.<br />

La finalidad <strong>de</strong>l control <strong>de</strong> concurrencia es asegurar la consistencia <strong>de</strong> los <strong>datos</strong> al<br />

ejecutar transacciones, y que cada acción atómica sea completada en un tiempo finito.<br />

Uno <strong>de</strong> los problemas <strong>de</strong> concurrencia específicos <strong>de</strong> las <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong> es la<br />

consistencia <strong>de</strong> copia múltiple (se produce cuando un mismo dato esta en varias<br />

localizaciones). A<strong>de</strong>más se siguen dando los mismos problemas para <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong><br />

centralizadas (pérdida <strong>de</strong> actualizaciones, <strong>de</strong>pen<strong>de</strong>ncia neutral (uncommitted <strong>de</strong>pen<strong>de</strong>ncy) y<br />

análisis inconsistentes).<br />

Serialización distribuida<br />

Si cada planificador <strong>de</strong> ejecución local es serializable y las ór<strong>de</strong>nes locales serializadas<br />

son idénticas (es <strong>de</strong>cir, respetan el or<strong>de</strong>n <strong>de</strong> secuencia), entonces el planificador global es<br />

serializable.<br />

Hay dos soluciones para el control <strong>de</strong> concurrencia en un ambiente distribuido:<br />

• El bloqueo (lock) garantiza la ejecución concurrente. En este caso hay que tener<br />

cuidado <strong>de</strong> que no se produzcan interbloqueos.<br />

• Las marcas <strong>de</strong> tiempo garantizan la ejecución concurrente según el or<strong>de</strong>n fijado en<br />

las marcas <strong>de</strong> tiempo. Este asegura la serialización global. Si solo hay una copia <strong>de</strong><br />

cada dato entre todos los nodos, se pue<strong>de</strong>n usar mecanismos <strong>de</strong> control <strong>de</strong><br />

concurrencia para sistemas centralizados, aunque con modificaciones.<br />

16


Base <strong>de</strong> Datos Distribuidas<br />

Protocolo <strong>de</strong> bloqueo (locking protocol)<br />

Nos fijaremos en el Protocolo <strong>de</strong> Bloqueo <strong>de</strong> Dos Fases distribuido (2PLP)<br />

Se caracteriza por distribuir un gestor <strong>de</strong> bloqueo en cada nodo. Cada uno es<br />

responsable <strong>de</strong> la gestión <strong>de</strong> bloqueos <strong>de</strong> los <strong>datos</strong> que contiene en ese nodo. El 2PLP<br />

distribuido implementa una protocolo <strong>de</strong> control <strong>de</strong> replicas Read-One-Write-All. Cualquier<br />

copia <strong>de</strong> un dato replicado pue<strong>de</strong> ser usada para operaciones <strong>de</strong> lectura, pero todas las copias<br />

<strong>de</strong>ben ser bloqueadas para escritura antes que se puedan modificar.<br />

Protocolo <strong>de</strong> marcas <strong>de</strong> tiempo (timestamp protocol)<br />

Su objetivo es or<strong>de</strong>nar las transacciones globalmente <strong>de</strong> manera que transacciones con<br />

una marca <strong>de</strong> tiempo menor, obtengan la prioridad en el caso <strong>de</strong> conflicto. El problema es que<br />

los relojes <strong>de</strong> nodos diferentes podrían no estar sincronizados.<br />

Procesamiento <strong>de</strong> Consultas Distribuidas<br />

El procesamiento <strong>de</strong> consultas ha recibido una gran atención en las <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong><br />

<strong>distribuidas</strong>, ya que es un aspecto crítico en el rendimiento <strong>de</strong> las mismas.<br />

Sin embargo el procesamiento <strong>de</strong> consultas es mucho más difícil en ambientes distribuidos<br />

que en centralizados, ya que en ambientes distribuidos existe un gran número <strong>de</strong> parámetro que<br />

afectan el rendimiento <strong>de</strong> las consultas <strong>distribuidas</strong>, mientras que en sistemas centralizados los<br />

lenguajes <strong>de</strong> <strong>base</strong> <strong>de</strong> <strong>datos</strong> relacionales permiten la expresión <strong>de</strong> consultas complejas en una<br />

forma concisa y simple.<br />

La función principal <strong>de</strong> un procesador <strong>de</strong> consultas relacionales es transformar una<br />

consulta en una especificación <strong>de</strong> alto nivel, normalmente en cálculo relacional, a una consulta<br />

equivalente en una especificación <strong>de</strong> bajo nivel, normalmente alguna variación <strong>de</strong>l álgebra<br />

relacional.<br />

17


Base <strong>de</strong> Datos Distribuidas<br />

La transformación es correcta si la consulta <strong>de</strong> bajo nivel tiene la misma semántica que la<br />

consulta original, es <strong>de</strong>cir, si ambas consultas producen el mismo resultado. Para verificar si es<br />

correcta la transformación se hace un mapeo bien <strong>de</strong>finido entre el cálculo relacional y el<br />

álgebra relacional.<br />

Otro aspecto importante es el consumo <strong>de</strong> recursos. Hay que elegir una buena estrategia <strong>de</strong><br />

ejecución que sea eficiente para que así minimicemos el consumo <strong>de</strong> recursos <strong>de</strong> nuestro<br />

sistema.<br />

18


Base <strong>de</strong> Datos Distribuidas<br />

Ejemplo: Consi<strong>de</strong>ramos esta Base <strong>de</strong> Datos:<br />

EMPRESA(ID_EMPRESA,NOMBRE_EMPRESA)<br />

PROYECTO(ID_EMPRESA,NOMBRE_PROYECTO,FUNCION)<br />

La consulta trata <strong>de</strong> encontrar “todos las empresas a las que les subvencionan un proyecto”.<br />

Expresión SQL: SELECT NOMBRE_EMPRESA FROM EMPRESA E, PROYECTO P<br />

WHERE E.ID_EMPRESA=P.ID_EMPRESA AND FUNCION = “BENEFICIARIO”<br />

Dos consultas equivalentes el álgebra relacional serían:<br />

1) Π EMPRESA (σFUNCION-“BENEFICIARIO” Λ E.ID-P.ID (E x P))<br />

2) Π ENOMBRE (E>< ID (FUNCION=“BENEFICIARIO” (P))<br />

La segunda estrategia es mejor, ya que evitamos calcular el producto cartesiano <strong>de</strong> E x P,<br />

por lo que la eficiencia mejora (al disminuir el coste computacional).<br />

Sin embargo, en los sistemas distribuidos (a diferencia <strong>de</strong> los sistemas centralizados) el<br />

álgebra relacional no es suficiente para expresar la ejecución <strong>de</strong> estrategias, que <strong>de</strong>be ser<br />

complementada con operaciones para el intercambio <strong>de</strong> información entre nodos. Entre estas<br />

operaciones <strong>de</strong>stacan las que hacen el procesador <strong>de</strong> consultas <strong>distribuidas</strong> para elegir el or<strong>de</strong>n<br />

<strong>de</strong> las operaciones <strong>de</strong>l álgebra relacional, el mejor sitio para procesar <strong>datos</strong> y la forma en que los<br />

mismos <strong>de</strong>ben ser transformados.<br />

Objetivos <strong>de</strong> la optimización <strong>de</strong> consultas<br />

El objetivo PRINCIPAL <strong>de</strong> la optimización <strong>de</strong> consultas <strong>distribuidas</strong> es mejorar la<br />

eficiencia <strong>de</strong> las mismas. Más <strong>de</strong>talladamente, podríamos <strong>de</strong>cir que se trata <strong>de</strong> transformar una<br />

consulta sobre una <strong>base</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong> en una especificación <strong>de</strong> alto nivel a una estrategia<br />

<strong>de</strong> ejecución eficiente en un lenguaje <strong>de</strong> bajo nivel.<br />

Tenemos que minimizar la siguiente función <strong>de</strong> coste:<br />

En función el ambiente en que se trabaje cada uno <strong>de</strong> los factores <strong>de</strong> la expresión anterior<br />

pue<strong>de</strong>n llegar a tener pesos diferentes. Por ejemplo, en la re<strong>de</strong>s WAN el coste <strong>de</strong> comunicación<br />

19


Base <strong>de</strong> Datos Distribuidas<br />

domina dado que hay una velocidad <strong>de</strong> comunicación relativamente baja. Es por esto que los<br />

algoritmos diseñados para trabajar en entornos WAN suelen <strong>de</strong>spreciar el coste <strong>de</strong> CPU y <strong>de</strong><br />

entrada/salida. En re<strong>de</strong>s LAN el peso las comunicaciones no es tan dominante y los tres factores<br />

se equiparan.<br />

Otro factor importante a tener en cuenta a la hora <strong>de</strong> optimizar consultas en <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong><br />

<strong>distribuidas</strong> es saber la complejidad computacional <strong>de</strong> los diferentes tipos <strong>de</strong> operaciones que se<br />

pue<strong>de</strong>n hacer. Antes hemos visto que ganábamos eficiencia al eliminar un producto cartesiano,<br />

que como veremos ahora, es la operación más compleja.<br />

Veamos un listado <strong>de</strong> las principales operaciones <strong>de</strong>l álgebra relacional junto con su<br />

complejidad:<br />

• Selección y proyección sin eliminar duplicados: O(n)<br />

• Proyección (con eliminación <strong>de</strong> duplicados) y agrupación: O(n*log n).<br />

• Junta, semijunta, división, operaciones con conjuntos: O(n*log n).<br />

• Producto cartesiano: O(n^2).<br />

Características <strong>de</strong> los procesadores <strong>de</strong> consultas<br />

Comparar un sistema centralizado con uno distribuido es una tarea complicada ya que<br />

ambos difieren en una gran cantidad <strong>de</strong> aspectos, <strong>de</strong>s<strong>de</strong> su arquitectura hasta la forma <strong>de</strong> tratar<br />

una consulta. Vamos a enumerar las principales características <strong>de</strong> los procesadores <strong>de</strong> consultas<br />

<strong>distribuidas</strong> y que los diferencias <strong>de</strong> los procesadores <strong>de</strong> los sistemas centralizados:<br />

• Tipo <strong>de</strong> optimización.<br />

• Granularidad <strong>de</strong> la optimización.<br />

• Tiempo <strong>de</strong> optimización<br />

• Estadísticas<br />

• Nodos <strong>de</strong> <strong>de</strong>cisión.<br />

• Topología <strong>de</strong> la red.<br />

Arquitectura <strong>de</strong>l procesamiento <strong>de</strong> consultas<br />

El procesamiento <strong>de</strong> consultas <strong>distribuidas</strong> po<strong>de</strong>mos separarlo en cuatro fases o niveles,<br />

<strong>de</strong>s<strong>de</strong> que la consulta llega hasta que se optimiza al máximo posible:<br />

• Descomposición <strong>de</strong> consultas.<br />

• Localización <strong>de</strong> <strong>datos</strong>.<br />

20


Base <strong>de</strong> Datos Distribuidas<br />

• Optimización global <strong>de</strong> consultas.<br />

• Optimización local <strong>de</strong> consultas.<br />

Ventajas y <strong>de</strong>sventajas <strong>de</strong> las Bases <strong>de</strong> <strong>datos</strong> Distribuidas<br />

Ventajas:<br />

• Favorecer la naturaleza distribuidora <strong>de</strong> muchas aplicaciones, no solamente a nivel local<br />

sino incluso en diferentes lugares.<br />

• Se consigue una compartición <strong>de</strong> los <strong>datos</strong>, sin per<strong>de</strong>r un <strong>de</strong>terminado control local.<br />

• Crecimiento modular.<br />

• El rendimiento se mejora. Cuando se distribuye una gran <strong>base</strong> <strong>de</strong> <strong>datos</strong> por múltiples<br />

sitios, las consultas locales y las transacciones tienen mejor rendimiento porque las<br />

<strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> locales son más pequeñas. A parte <strong>de</strong> esta distribución, se pue<strong>de</strong><br />

conseguir lo siguiente en estos sistemas:<br />

o Reducir el número <strong>de</strong> transacciones ejecutándose por sitio.<br />

o Un paralelismo entre las consultas ejecutando varias en sitios diferentes,<br />

<strong>de</strong>scomponiendo una <strong>de</strong> ellas en subconsultas que puedan ejecutarse en<br />

paralelo.<br />

• Aumento <strong>de</strong> la fiabilidad y la disponibilidad.<br />

• Economía: es más barato construir un sistema con pequeñas computadoras que uno<br />

gran<strong>de</strong> si ambos dan el mismo rendimiento.<br />

• Por último, la autonomía <strong>de</strong> estos sistemas es gran<strong>de</strong>.<br />

Desventajas:<br />

• Hay una menor seguridad en cuanto al control <strong>de</strong> acceso a los <strong>datos</strong>: control <strong>de</strong> replicas<br />

y errores que puedan producirse en la red.<br />

• Mayor complejidad en el diseño e implementación <strong>de</strong>l sistema. A<strong>de</strong>más si la replicación<br />

<strong>de</strong> <strong>datos</strong> no se hace <strong>de</strong> forma a<strong>de</strong>cuada, las ventajas se pue<strong>de</strong>n transformar en<br />

<strong>de</strong>sventajas.<br />

• Excesivos costes en el intento <strong>de</strong> conseguir la transparencia mencionada anteriormente.<br />

• Falta <strong>de</strong> estándares y <strong>de</strong> experiencia, una vez más en estos <strong>mo<strong>de</strong>los</strong> <strong>avanzados</strong> <strong>de</strong> BD.<br />

• No se pue<strong>de</strong> garantizar al 100 % el rendimiento y la fiabilidad.<br />

21


Base <strong>de</strong> Datos Distribuidas<br />

Conclusiones<br />

Las <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong> son cada vez más usadas por las empresas y suponen una<br />

ventaja competitiva frente a los sistemas centralizados, siempre y cuando la empresa en cuestión<br />

tenga necesidad <strong>de</strong> usar una <strong>base</strong> <strong>de</strong> <strong>datos</strong> <strong>de</strong> este tipo. Lo más habitual es disponer <strong>de</strong> varias<br />

se<strong>de</strong>s y tener que manejar información común, para lo cual las <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong> <strong>distribuidas</strong> son<br />

especialmente útiles.<br />

Es una tecnología que ya lleva años en rodaje por lo que tiene la madurez suficiente como<br />

para ser usada con garantías, no obstante, <strong>de</strong>bido a la gran <strong>de</strong>pen<strong>de</strong>ncia que estas <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong><br />

tienen <strong>de</strong> las telecomunicaciones, en España nos encontramos muchos problemas para conseguir<br />

el rendimiento oportuno <strong>de</strong> las mismas.<br />

Bibliografía<br />

• Distributed Data<strong><strong>base</strong>s</strong>, School of Science & Technology, Bell College (Hamilton)<br />

• Silberschatz, Korth, y Sudarshan, Fundamentos <strong>de</strong> Bases <strong>de</strong> Datos, 4ª ed. Mc Graw<br />

Hill<br />

• CONNOLLY, Thomas M. y BEGG, Carolyn E., Sistemas <strong>de</strong> <strong><strong>base</strong>s</strong> <strong>de</strong> <strong>datos</strong>:<br />

diseño, implementación y gestión. Pearson - Addison Wesley, 4ª edición.<br />

• Armes A. Elmasri y Shamkant B. Navathe, Fundamentos <strong>de</strong> Sistemas <strong>de</strong> Bases <strong>de</strong><br />

Datos. 3ª ed. Addison Wesley.<br />

• http://www.fing.edu.uy/inco/cursos/interop/interPresencial/transparencias/queries.pdf<br />

• http://www.mitecnologico.com/Main/OptimizacionDeConsultasDistribuidas<br />

• http://sistemas-distribuidos-unerg.blogspot.com/2007/12/<strong><strong>base</strong>s</strong>-<strong>de</strong>-<strong>datos</strong>-<br />

<strong>distribuidas</strong>.html<br />

• http://catarina.udlap.mx/u_dl_a/tales/documentos/msp/alvarez_c_g/capitulo1.pdf<br />

22

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!