Apuntes de Bases de Datos Distribuidas

60
Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Transcript of Apuntes de Bases de Datos Distribuidas

Page 1: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Page 2: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

1. Fundamentos Bases de Datos Distribuidas 1.1. Conceptos Básicos 1.2. Objetivos Bases de Datos Distribuidas 1.3. Disciplinas Estudio Bases de Datos Distribuidas 1.4. Arquitectura Bases de Datos Distribuidas

2. Diseño de bases de datos distribuidas

2.1. Consideraciones Diseño Bases de Datos Distribuidas 2.2. Diccionario de Datos 2.3. Niveles de Transparencia

2.3.1. Transparencia de Localización 2.3.2. Transparencia de Fragmentación 2.3.3. Transparencia de Replica

2.4. Fragmentación de Datos 2.4.1. Fragmentación Horizontal 2.4.2. Fragmentación Vertical 2.4.3. Fragmentación Hibrida

2.5. Distribución de Datos 2.5.1. Algoritmos Distribución Datos No Replicados 2.5.2. Algoritmos Distribución Datos Replicados

3. Procesamiento de consultas distribuidas

3.1. Metodología Procesamiento Consultas Distribuidas 3.2. Estrategias Procesamiento Consultas Distribuidas

3.2.1. Arboles de Consultas 3.2.2. Transformaciones Equivalentes Consultas Distribuidas 3.2.3. Métodos Ejecución del Join

3.3. Optimización de Consultas Distribuidas 3.3.1. Optimización Global Consultas Distribuidas 3.3.2. Optimización Local Consultas Distribuidas

4. Manejo de transacciones

4.1. Transacciones Conceptos 4.1.1. Estructura de Transacciones 4.1.2. Ejecución Transacciones Centralizada Distribuida 4.1.3. Estructura de transacciones

4.2. Control de Concurrencia 4.2.1. Serialización de Transacciones 4.2.2. Algoritmos de Control de Concurrencia

4.2.2.1. Basados en Bloqueo. 4.2.2.2. Basados en Estampas de Tiempo 4.2.2.3. Pruebas Validación Optimistas

4.2.3. Disciplinas del Interbloqueo prevención detección eliminación y recuperación 4.3. Confiabilidad

4.3.1. Conceptos Básicos de Confiabilidad 4.3.2. Protocolos Redo Undo 4.3.3. Puntos de Verificación checkpoints 4.3.4. Protocolo 2PC de Confiabilidad Distribuida

Page 3: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

1 Fundamentos Bases de Datos Distribuidas

1.1Conceptos Básicos

Un sistema de administración de bases de datos distribuida (DDBMS) rige el almacenamiento y procesamiento de datos lógicamente relacionados a través de un sistema de computadoras interconectadas, donde tanto los datos como las funciones de procesamiento se distribuyen entre varios sitios. Para entender cómo y por qué el DDBMS es diferente del DBMS, es necesario examinar brevemente los cambios en el ambiente de base de datos. Durante los años 70’s, las corporaciones ejercieron sistemas de administración de base de datos centralizados para satisfacer sus necesidades de información estructuradas. Las necesidades de información estructurada son, por lo tanto, bien atendidas por los sistemas centralizados. Básicamente, el uso de una base de datos centralizada requería que los datos corporativos se guardaran en un solo sitio central. El acceso a los datos se proporcionaba mediante terminales no inteligentes. El método centralizado funcionaba bien para satisfacer las necesidades de información estructurada de las corporaciones, pero se quedaba corto cuando los eventos siempre en movimiento requerían tiempos de respuesta y accesos a la información más rápidos. La lenta progresión desde la solicitud de información hasta su aprobación, y desde el especialista hasta el usuario, simplemente no era útil para los tomadores de decisiones en un ambiente dinámico. Lo que se requería era un acceso rápido, no estructurado a la base de datos utilizando consultas ad hoc para generar información al momento. Los sistemas de administración de base de datos basados en el modelo relacional, podrían crear el ambiente en el cual las necesidades de información no estructuradas serian satisfechas mediante consultas ad hoc. Los usuarios finales podrían accesar a los datos cuando lo requirieran. También existieron otros tipos de modelos como: base de datos de red o base de datos jerárquico. Los años 80’s dieron lugar a una serie de cambios tecnológicos y sociales que afectaron el desarrollo y el diseño de las bases de datos tales como:

• Los negocios se volvieron más geográficamente descentralizados. • La competencia se globalizo. • Las demandas de los clientes favorecieron el estilo de administración

descentralizado. • Los rápidos cambios tecnológicos crearon computadoras de bajo costo, y un

número cada vez mayor de corporaciones adoptaron las redes LAN como base para sus soluciones.

Estos factores crearon un ambiente de negocios dinámico en el cual las compañías tuvieron que responder con rapidez a las presiones competitivas y tecnológicas. Conforme las grandes unidades de negocios se reestructuraron para formar operaciones más simples, dispersas y de reacción rápida, dos requerimientos de base de datos se volvieron obvios:

• El acceso rápido a los datos se volvió crucial para la toma de decisiones dinámicas

Page 4: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

• La descentralización de las estructuras de administración basadas en la descentralización de unidades de negocios hicieron de las bases de datos descentralizadas ubicadas en lugares múltiples y de acceso múltiple, una necesidad.

Durante los años 90’s todos los factores anteriores se vieron influenciados fuertemente por:

• La creciente aceptación de internet y, en particular la red mundial (www), como plataforma para el acceso y distribución de los datos.

• El creciente enfoque en el análisis de los datos que condujo al manejo y almacenamiento de los datos. Aunque el almacén de datos en general no es una base de datos distribuida, depende de técnicas – tales como la replicación de datos y consultas distribuidas – que facilitan la extracción e integración de sus datos.

El impacto más importante que promovió el éxito de las bases de datos distribuidas fue el uso de internet y la solución a los problemas de ancho de banda, de cualquier manera, las bases de datos distribuidas existen hoy en día. Computación Distribuida

Los sistemas de bases de datos distribuidas son un caso particular de los sistemas de cómputo distribuido en los cuales un conjunto de elementos de procesamiento autónomos (no necesariamente homogéneos) se interconectan por una red de comunicaciones y cooperan entre ellos para realizar sus tareas asignadas. Históricamente, el cómputo distribuido se ha estudiado desde muchos puntos de vista. Así, es común encontrar en la literatura un gran número de términos que se han usado para identificarlo. Entre los términos más comunes que se utilizan para referirse al cómputo distribuido podemos encontrar: funciones distribuidas, procesamiento distribuido de datos, multiprocesadores, multicomputadoras, procesamiento satelital, procesamiento tipo "backend", computadoras dedicadas y de propósito específico, sistemas de tiempo compartido, sistemas funcionalmente modulares. Existen muchos componentes a distribuir para realizar una tarea. En computación distribuida los elementos que se pueden distribuir son: • Control. Las actividades relacionadas con el manejo o administración del sistema. • Datos. La información que maneja el sistema. • Funciones. Las actividades que cada elemento del sistema realiza. •Procesamiento lógico. Las tareas específicas involucradas en una actividad de procesamiento de información. (Bolivia, 2005, pág. 5)

Eliminado:

Page 5: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Figura 1.1. Motivación de los sistemas de bases de datos distribuidos.

Sistemas de bases de datos distribuidas

Una base de datos distribuida (BDD) es un conjunto de múltiples bases de datos lógicamente relacionadas las cuales se encuentran distribuidas entre diferentes sitios interconectados por una red de comunicaciones (ver Figura 1.1). (Bolivia, 2005, pág. 5) Un sistema de bases de datos distribuidos (SBDD) es un sistema en el cual múltiples sitios de bases de datos están ligados por un sistema de comunicaciones, de tal forma que, un usuario en cualquier sitio puede accesar los datos en cualquier parte de la red exactamente como si los datos estuvieran almacenados en su sitio propio. (Bolivia, 2005, pág. 5) Un sistema de manejo de bases de datos distribuidas (SMBDD) es aquel que se encarga del manejo de la BDD y proporciona un mecanismo de acceso que hace que la distribución sea transparente a los usuarios. El término transparente significa que la aplicación trabajaría, desde un punto de vista lógico, como si un solo SMBD se ejecutara en una sola máquina, y administrara esos datos. (Bolivia, 2005, pág. 5) Un sistema de base de datos distribuida (SBDD) es entonces el resultado de la integración de una base de datos distribuida con un sistema para su manejo. Dada la definición anterior, es claro que algunos sistemas no se pueden considerar como SBDD. Por ejemplo, un sistema de tiempo compartido no incluye necesariamente un sistema de manejo de bases de datos y, en caso de que lo haga, éste es controlado y administrado por una sola computadora. (Bolivia, 2005, pág. 6) Un sistema de multiprocesamiento puede administrar una base de datos pero lo hace usualmente a través de un solo sistema de manejo de base de datos; los procesadores se utilizan para distribuir la carga de trabajo del sistema completo o incluso del propio SMBD pero actuando sobre una sola base de datos. Finalmente, una base de datos la cual reside en un solo sitio de una red de computadoras y que es accesada por todos los nodos de la red no es una base de datos distribuida (Figura 1.2). Este caso se trata de una base de datos cuyo control y administración está centralizado en un solo nodo pero se permite el acceso a ella a través de la red de computadoras. (Bolivia, 2005, pág. 6) El medio ambiente típico de un SMBDD consiste de un conjunto de sitios o nodos, los cuales tiene un sistema de procesamiento de datos completo que incluye una base de datos local, un sistema de manejo de bases de datos y facilidades de comunicaciones. Si los diferentes sitios pueden estar geográficamente dispersos, entonces, ellos están interconectados por una red de tipo WAN. Por otro lado, si los sitios están localizados en diferentes edificios o departamentos de una misma organización pero geográficamente en la misma ubicación, entonces, están conectados por una red local (LAN) (Figura 1.3). (Bolivia, 2005, pág. 6)

Page 6: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Figura 1.2. Un sistema centralizado sobre una red.

Figura 1.3. Un medio ambiente distribuido para bases de datos.

Page 7: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

1.2 Objetivos Bases de Datos Distribuidas

Principio Fundamental: “Ante el usuario, un sistema distribuido debe lucir exactamente igual que un sistema que no es distribuido”

• En otras palabras, los usuarios de un sistema distribuido deben ser capaces de comportarse exactamente como si no fuera distribuido.

• Todos los problemas de los sistemas distribuidos son o deberían ser, problemas internos o en el nivel de implementación, y no externos o en el nivel de usuario.

El principio fundamental nos conduce a 12 reglas u objetivos: 1.- Autonomía local. Los sitios en un sistema distribuido deben ser autónomos.

• La autonomía local significa que todas las operaciones en un sitio dado están controladas por ese sitio; ningún sitio X debe depender de algún otro sitio para su operación satisfactoria.

• La seguridad, integridad y representación de almacenamiento de los datos locales permanecen bajo el control y jurisdicción del sitio local.

2.- No dependencia de un sitio central. La autonomía local implica que todos los sitios deben ser tratados como iguales.

• Por lo tanto, no debe haber particularmente ninguna dependencia de un sitio “maestro” central para algún servicio central, tal que todo el sistema dependa de ese sitio central.

• Razones por las cuales no debería haber un sitio central: • El sitio central puede ser un cuello de botella • El sistema sería vulnerable; es decir, si el sitio central falla, también fallará

todo el sistema 3.- Operación continúa. Una ventaja de los sistemas distribuidos es que deben proporcionar mayor confiabilidad y mayor disponibilidad.

• Confiabilidad. La probabilidad de que el sistema esté listo y funcionando en cualquier momento dado. Los SD no son una propuesta de todo o nada; pueden continuar operando cuando hay alguna falla en algún componente independiente.

• Disponibilidad. La probabilidad de que el sistema esté listo y funcionando continuamente a lo largo de un período especificado.

4.- Independencia de ubicación. Conocida también como transparencia de ubicación.

• Los usuarios no tienen que saber dónde están almacenados físicamente los datos, sino que deben ser capaces de comportarse como si todos los datos estuvieran almacenados en su propio sitio local.

• Esto simplifica los programas de los usuarios. En particular, permite que los datos emigren de un sitio a otro sin invalidar ninguno de estos programas o actividades.

5.- Independencia de fragmentación. Un sistema soporta la fragmentación de datos cuando puede ser dividida en partes o fragmentos, para efectos de almacenamiento físico.

• La fragmentación es necesaria por razones de rendimiento: los datos pueden estar almacenados en la ubicación donde son usados más

Page 8: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

frecuentemente para que la mayoría de las operaciones sean locales y se reduzca el tráfico en la red.

• Los usuarios deben comportarse como si los datos en realidad estuvieran sin fragmentación alguna.

6.- Independencia de replicación… 1. Pueden significar una mejor disponibilidad (un objeto replicado permanece

disponible para su procesamiento, mientras esté disponible al menos una copia).

Por supuesto, la principal desventaja de las réplicas es que al actualizarlas es necesario actualizar todas: el problema de la propagación de la actualización. 7.- Procesamiento de consultas distribuidas. La optimización es importante en un sistema distribuido que en uno centralizado, incluso mucho más.

• El punto básico es que en una consulta que involucra a varios sitios, habrá muchas formas posibles de mover los datos en el sistema para satisfacer la solicitud, y es crucialmente importante que se encuentre una estrategia eficiente.

8.- Administración de transacciones distribuidas…

• Puede involucrar actualizaciones en muchos sitios y se debe de cuidar que la transacción no caiga en un bloqueo mortal (basado en el bloqueo).

• Para el control de la recuperación, es necesario asegurarse que una transacción dada sea atómica en el ambiente distribuido, el sistema debe por lo tanto asegurarse de que la transacción sea confirmada o deshecha (se puede utilizar el protocolo de confirmación de dos fases).

9.- Independencia de hardware. Soporte para un gran número de máquinas diferentes. Poder integrar todos los datos de todos estos sistemas y presentar al usuario una “imagen del sistema único”. 10.- Independencia de sistema operativo. Obviamente es necesario no sólo tener la posibilidad de ejecutar el mismo DBMS en diferentes plataformas de hardware, sino también ejecutarlo en diferentes plataformas de sistema operativo. 11.- Independencia de red.

• Si el sistema va a tener la posibilidad de soportar muchos sitios distintos es obviamente necesario tener la posibilidad de soportar también una variedad de redes de comunicación distintas.

12.- Independencia de DBMS. Lo que se necesita es que todos los ejemplares de DBMS en sitios diferentes soporten la misma interfaz.

• Aunque no tienen que ser necesariamente copias del mismo software DBMS. • En otras palabras, sería posible que el sistema distribuido fuera heterogéneo, al

menos en cierto grado. • Sería muy bueno si diferentes DBMS pudieran participar de alguna forma en un

sistema distribuido.

Page 9: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

1.3 Disciplinas de Estudio de Bases de Datos Distribuidas Son las aplicaciones más usuales son para la gestión de empresas e instituciones públicas. También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental. Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios países. Por ejemplo en España, los datos personales se encuentran protegidos por la Ley Orgánica de Protección de Datos de Carácter Personal (LOPD).

1.4 Arquitectura Bases de Datos Distribuidas

La arquitectura define la estructura de un sistema. Al definir la arquitectura se deben

identificar los componentes de un sistema, las funciones que realiza cada uno de las

componentes y las interrelaciones e interacciones entre cada componente.

Arquitectura de un sistema de bases de datos distribuidas

La mayoría de los sistemas de manejo de bases de datos disponibles actualmente están

basadas en la arquitectura ANSI-SPARC la cual divide a un sistema en tres niveles: interno,

conceptual y externo.

La vista conceptual, conocida también como vista lógica global, representa la visión de

la comunidad de usuarios de los datos en la base de datos. No toma en cuenta la forma en que las aplicaciones individuales observan los datos o como éstos son almacenados.

La vista conceptual está basada en el esquema conceptual y su construcción se hace en

la primera fase del diseño de una base de datos.

Los usuarios, incluyendo a los programadores de aplicaciones, observan los datos a través

de un esquema externo definido a nivel externo. La vista externa proporciona una

ventana a la vista conceptual lo cual permite a los usuarios observar únicamente los datos de interés y los aísla de otros datos en la base de datos. Puede existir cualquier número de

vistas externas y ellos pueden ser completamente independientes o traslaparse entre sí. El esquema conceptual se mapea a un esquema interno a nivel interno, el cual es el nivel

de descripción más bajo de los datos en una base de datos. Este proporciona una interfaz

al sistema de archivos del sistema operativo el cual es el responsable del acceso a la base

de datos. El nivel interno tiene que ver con la especificación de qué elementos serán indexados, qué técnica de organización de archivos utilizar y como los datos se agrupan

en el disco mediante "clusters" para mejorar su acceso.

Page 10: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Figura 1.4 Arquitectura ANSI/SPARC de una base de datos.

Figura 1.5 Vista conceptual de las relaciones E, S, J y G.

Figura 1.6 Definición de una vista interna a partir de la relación S.

Page 11: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Figura 1.7 Dos ejemplos de vistas externas.

Desafortunadamente, no existe un equivalente de una arquitectura estándar para sistemas de manejo de bases de datos distribuidas. La tecnología y prototipos de SMBDD

se han desarrollado más o menos en forma independiente uno de otro y cada sistema ha adoptado su propia arquitectura.

Para definir un esquema de estandarización en bases de datos distribuidas se debe definir un modelo de referencia el cual sería un marco de trabajo conceptual cuyo propósito es

dividir el trabajo de estandarización en piezas manejables y mostrar a un nivel general

como esas piezas se relacionan unas con otras. Para definir ese modelo de referencia se

puede seguir uno de los siguientes tres enfoques:

Basado en componentes. Se definen los componentes del sistema junto con las relaciones

entre ellas. Así, un SMBD consiste de un número de componentes, cada uno de los cuales

proporciona alguna funcionalidad.

Basado en funciones. Se identifican las diferentes clases de usuarios junto con la

funcionalidad que el sistema ofrecerá para cada clase. La especificación del sistema en

esta categoría típicamente determina una estructura jerárquica para las clases de usuarios. La ventaja de este enfoque funcional es la claridad con la cual se especifican los

objetivos del sistema. Sin embargo, este enfoque no proporciona una forma de alcanzar

los objetivos.

Basado en datos. Se identifican los diferentes tipos de descripción de datos y se especifica

un marco de trabajo arquitectural el cual define las unidades funcionales que realizarán

y/o usarán los datos de acuerdo con las diferentes vistas. La ventaja de este enfoque es la importancia que asigna al manejo de datos. Este es un enfoque significativo para los

SMBD dado que su propósito principal es manejar datos. Sin embargo, la desventaja de este enfoque es que es prácticamente imposible especificar un modelo arquitectural sin

especificar los modelos para cada una de sus unidades funcionales. Este es el enfoque

seguido por el modelo ANSI/SPARC.

Page 12: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Unidad 2 Diseño de bases de datos distribuidas

El diseño de un sistema de base de datos distribuido implica la toma de decisiones sobre la ubicación de los programas que accederán a la base de datos y sobre los propios datos que constituyen esta última, a lo largo de los diferentes puestos que configuren una red. La ubicación de los programas, a priori, no debería suponer un excesivo problema dado que se puede tener una copia de ellos en cada máquina de la red (de hecho, en este documento se asumirá que así es). Sin embargo, cuál es la mejor opción para colocar los datos: en una gran máquina que albergue a todos ellos, encargada de responder a todas las peticiones del resto de las estaciones – sistema de base de datos centralizado –, o podríamos pensar en repartir las relaciones, las tablas, por toda la red. En el supuesto que nos decidiéramos por esta segunda opción, ¿qué criterios se deberían seguir para llevar a cabo tal distribución?, ¿Realmente este enfoque ofrecerá un mayor rendimiento que el caso centralizado?, ¿Podría optarse por alguna otra alternativa?. En los párrafos sucesivos se tratará de responder a estas cuestiones. Tradicionalmente se ha clasificado la organización de los sistemas de bases de datos distribuidos sobre tres dimensiones: el nivel de compartición, las características de acceso a los datos y el nivel de conocimiento de esas características de acceso (vea la figura 2.1). El nivel de compartición presenta tres alternativas: inexistencia, es decir, cada aplicación y sus datos se ejecutan en una PC con ausencia total de comunicación con otros programas u otros datos; se comparten sólo los datos y no los programas, en tal caso existe una réplica de las aplicaciones en cada máquina y los datos viajan por la red; y, se reparten datos y programas, dado un programa ubicado en un determinado sitio, éste puede solicitar un servicio a otro programa localizado en un segundo lugar, el cual podrá acceder a los datos situados en un tercer emplazamiento. Como se comentó líneas atrás, en este caso se optará por el punto intermedio de compartición. (Diseño de Bases de Datos Distribuidos)

Figura 2.1 Enfoque de la distribución.

Respecto a las características de acceso a los datos existen dos alternativas principalmente: el modo de acceso a los datos que solicitan los usuarios puede ser estático, es decir, no cambiará a lo largo del tiempo, o bien, dinámico. El lector podrá comprender fácilmente la dificultad de encontrar sistemas distribuidos reales que puedan clasificarse como estáticos. Sin embargo, lo realmente importante radica, estableciendo

Page 13: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

el dinamismo como base, cómo de dinámico es, cuántas variaciones sufre a lo largo del tiempo. Esta dimensión establece la relación entre el diseño de bases de datos distribuidas y el procesamiento de consultas. (Diseño de Bases de Datos Distribuidos) La tercera clasificación es el nivel de conocimiento de las características de acceso. Una posibilidad es, evidentemente, que los diseñadores carezcan de información alguna sobre cómo los usuarios acceden a la base de datos. Es una posibilidad teórica, pero sería muy laborioso abordar el diseño de la base de datos con tal ausencia de información. Lo más práctico sería conocer con detenimiento la forma de acceso de los usuarios o, en el caso de su imposibilidad, conformarnos con una información parcial de ésta. (Diseño de Bases de Datos Distribuidos) El problema del diseño de bases de datos distribuidas podría enfocarse a través de esta trama de opciones. En todos los casos, excepto aquel en el que no existe compartición, aparecerán una serie de nuevos problemas que son irrelevantes en el caso centralizado. (Diseño de Bases de Datos Distribuidos) A la hora de abordar el diseño de una base de datos distribuida podremos optar principalmente por dos tipos de estrategias: la estrategia ascendente y la estrategia descendente. Ambos tipos no son excluyentes, y no resultaría extraño a la hora de abordar un trabajo real de diseño de una base de datos que se pudiesen emplear en diferentes etapas del proyecto una u otra estrategia. La estrategia ascendente podría aplicarse en aquel caso donde haya que proceder a un diseño a partir de un número de pequeñas bases de datos existentes, con el fin de integrarlas en una sola. En este caso se partiría de los esquemas conceptuales locales y se trabajaría para llegar a conseguir el esquema conceptual global. Aunque este caso se pueda presentar con facilidad en la vida real, se prefiere pensar en el caso donde se parte de cero y se avanza en el desarrollo del trabajo siguiendo la estrategia descendente. La estrategia descendente (vea la figura 2.2) debería resultar familiar a la persona que posea conocimientos sobre el diseño de bases de datos, exceptuando la fase del diseño de la distribución. Pese a todo, se resumirán brevemente las etapas por las que se transcurre. (Diseño de Bases de Datos Distribuidos)

Page 14: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Figura 2.2 Estrategia descendente.

Todo comienza con un análisis de los requisitos que definirán el entorno del sistema en aras a obtener tanto los datos como las necesidades de procesamiento de todos los posibles usuarios del banco de datos. Igualmente, se deberán fijar los requisitos del sistema, los objetivos que debe cumplir respecto a unos grados de rendimiento, seguridad, disponibilidad y flexibilidad, sin olvidar el importante aspecto económico. Como puede observarse, los resultados de este último paso sirven de entrada para dos actividades que

Page 15: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

se realizan de forma paralela. El diseño de las vistas trata de definir las interfaces para el usuario final y, por otro lado, el diseño conceptual se encarga de examinar la empresa para determinar los tipos de entidades y establecer la relación entre ellas. Existe un vínculo entre el diseño de las vistas y el diseño conceptual. El diseño conceptual puede interpretarse como la integración de las vistas del usuario, este aspecto es de vital importancia ya que el modelo conceptual debería soportar no sólo las aplicaciones existentes, sino que debería estar preparado para futuras aplicaciones. En el diseño conceptual y de las vistas del usuario se especificarán las entidades de datos y se determinarán las aplicaciones que funcionarán sobre la base de datos, así mismo, se recopilarán datos estadísticos o estimaciones sobre la actividad de estas aplicaciones. Dichas estimaciones deberían girar en torno a la frecuencia de acceso, por parte de una aplicación, a las distintas relaciones de las que hace uso, podría afinarse más anotando los atributos de la relación a la que accede. Desarrollado el trabajo hasta aquí, se puede abordar la confección del esquema conceptual global. Este esquema y la información relativa al acceso a los datos sirven de entrada al paso distintivo: el diseño de la distribución. El objetivo de esta etapa consiste en diseñar los esquemas conceptuales locales que se distribuirán a lo largo de todos los puestos del sistema distribuido. Sería posible tratar cada entidad como una unidad de distribución; en el caso del modelo relacional, cada entidad se corresponde con una relación. Resulta bastante frecuente dividir cada relación en subrelaciones menores denominadas fragmentos que luego se ubican en uno u otro sitio. De ahí, que el proceso del diseño de la distribución conste de dos actividades fundamentales: la fragmentación y la asignación. El último paso del diseño de la distribución es el diseño físico, el cual proyecta los esquemas conceptuales locales sobre los dispositivos de almacenamiento físico disponibles en los distintos sitios. Las entradas para este paso son los esquemas conceptuales locales y la información de acceso a los fragmentos. Por último, se sabe que la actividad de desarrollo y diseño es un tipo de proceso que necesita de una monitorización y un ajuste periódicos, para que si se llegan a producir desviaciones, se pueda retornar a alguna de las fases anteriores. (Diseño de Bases de Datos Distribuidos) 2.1 Consideraciones para el Diseño Bases de Datos Distribuidas Un sistema de administración de base de datos distribuida rige el almacenamiento y procesamiento de datos lógicamente relacionados a través de sistemas de computadoras interconectadas en las cuales, tanto las funciones de datos como de procesamiento, se distribuyen entre varios sitios. Un DBMS debe contar por lo menos con las funciones siguientes para ser considerado como distribuido:

• Interface de la aplicación para interactuar con el usuario final o con programas de aplicación y con otros DBMS dentro de la base de datos distribuida.

• Transformación para determinar que componentes de solicitud de datos se distribuyen y cuales son locales.

• Optimización de consultas para encontrar la mejor estrategia de acceso (¿Cuáles fragmentos deben ser accesados por la consulta y como, si las hay, se deben sincronizar las actualización es de los datos?)

• Mapeo para determinar la ubicación de los datos de fragmentos locales y remotos.

• Interface de E/S para leer o escribir datos de en medios de almacenamientos locales permanentes.

• Formateo para preparar los datos para su presentación al usuario final o un programa de aplicación.

Page 16: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

• Seguridad para proporcionar privacidad tanto en bases de datos locales como en remotas.

• Respaldo y recuperación para garantizar la disponibilidad y recuperabilidad de la base de datos en caso de una falla.

• Administración de base de datos para el administrador de la base de datos. • Control de concurrencia para manejar el acceso simultaneo a los datos y para

garantizar su consistencia a través de los fragmentos en el DDBMS. • Manejo de transacciones para garantizar que los datos pasen de un estado

consistente a otro. Esta actividad incluye la sincronización de transacciones locales y remotas, lo mismo que transacciones a través de segmentos múltiples distribuidos.

2.2 Diccionario de Datos

Un diccionario de datos es un conjunto de metadatos que contiene las características lógicas de los datos que se van a utilizar en el sistema que se programa, incluyendo nombre, descripción, alias, contenido y organización. (Wikipedia) Identifica los procesos donde se emplean los datos y los sitios donde se necesita el acceso inmediato a la información, se desarrolla durante el análisis de flujo de datos y auxilia a los analistas que participan en la determinación de los requerimientos del sistema, su contenido también se emplea durante el diseño. (Wikipedia) En un diccionario de datos se encuentra la lista de todos los elementos que forman parte del flujo de datos de todo el sistema. Los elementos más importantes son flujos de datos, almacenes de datos y procesos. El diccionario de datos guarda los detalles y descripción de todos estos elementos. (Wikipedia) 2.3 Niveles de Transparencia

El propósito de establecer una arquitectura de un sistema de bases de datos distribuidas es ofrecer un nivel de transparencia adecuado para el manejo de la

información. La transparencia se puede entender como la separación de la semántica de alto nivel de un sistema de los aspectos de bajo nivel relacionados a la implementación

del mismo. Un nivel de transparencia adecuado permite ocultar los detalles de

implementación a las capas de alto nivel de un sistema y a otros usuarios.

En sistemas de bases de datos distribuidos el propósito fundamental de la transparencia es

proporcionar independencia de datos en el ambiente distribuido. Se pueden encontrar diferentes aspectos relacionados con la transparencia. Por ejemplo, puede existir

transparencia en el manejo de la red de comunicación, transparencia en el manejo de

copias repetidas o transparencia en la distribución o fragmentación de la información.

La independencia de datos es la inmunidad de las aplicaciones de usuario a los cambios

en la definición y/u organización de los datos y viceversa. La independencia de datos se

puede dar en dos aspectos: lógica y física.

Independencia lógica de datos. Se refiere a la inmunidad de las aplicaciones de usuario a

los cambios en la estructura lógica de la base de datos. Esto permite que un cambio en la

definición de un esquema no afecte a las aplicaciones de usuario. Por ejemplo, el

Page 17: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

agregar un nuevo atributo a una relación, la creación de una nueva relación, el

reordenamiento lógico de algunos atributos.

Independencia física de datos. Se refiere al ocultamiento de los detalles sobre las

estructuras de almacenamiento a las aplicaciones de usuario. Esto es, la descripción física

de datos puede cambiar sin afectar a las aplicaciones de usuario. Por ejemplo, los datos pueden ser movidos de un disco a otro, o la organización de los datos puede cambiar.

La transparencia al nivel de red se refiere a que los datos en un SBDD se accesan sobre

una red de computadoras, sin embargo, las aplicaciones no deben notar su existencia. La

transparencia al nivel de red conlleva a dos cosas:

Ejemplo Las entidades a ser modeladas son ingenieros y proyectos. Para cada ingeniero,

se desea conocer su número de empleado (ENO), su nombre (ENOMBRE), el puesto

ocupado en la compañía (TITULO), el salario (SAL), la identificación de los nombres de proyectos en los cuales está trabajando (JNO), la responsabilidad que tiene dentro del

proyecto (PUESTO) y la duración de su responsabilidad en meses (DUR). Similarmente, para cada proyecto se desea conocer el número de proyecto (JNO), el nombre del proyecto

(JNOMBRE), el presupuesto asignado al proyecto (PRESUPUESTO) y el lugar en donde se

desarrolla el proyecto (LUGAR).

Un ingeniero puede participar en más de un proyecto pero su salario corresponde

únicamente al puesto que ocupa en la compañía. Así, después de aplicar normalización

se obtienen las relaciones E ?para ingenieros, J ?para proyectos, S ?para los salarios

asignados a los puestos y G ?para los ingenieros asignados a cada proyecto.

Page 18: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Page 19: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Bases de datos de una empresa con cuatro relaciones:

E (ingenieros)

ENO ENOMBRE TITULO E1 Juan Rodríguez Ingeniero Eléctrico E2 Miguel Sánchez Analista de Sistemas E3 Armando Legarreta Ingeniero Mecánico E4 Beatriz Molleda Programador E5 Jorge Castañeda Analista de Sistemas E6 Luis Chávez Ingeniero Eléctrico E7 Roberto Dávila Ingeniero Mecánico E8 Julia Jiménez Analista de Sistemas

G (ingenieros asignados a proyecto)

ENO JNO PUESTO DUR E1 J1 Administrador 12 E2 J1 Analista 24 E2 J2 Analista 6 E3 J3 Consultor 10 E3 J4 Ingeniero 48 E4 J2 Programador 18 E5 J2 Administrador 24

J (proyectos)

JNO JNOMBRE PRESUPUESTO LUGAR J1 Instrumentaci

ón 150000 Monterre

y J2 Desarrollo de

bases de datos

135000 México

J3 CAD/CAM 250000 Puebla J4 Mantenimient

o 310000 México

J5 CAD/CAM 500000 Monterrey

S (salarios asignados al puesto)

TITULO SALARIO Ingeniero Eléctrico 40000

Analista de Sistemas 34000 2Ingeniero Mecánico 27000

Programador 24000

Page 20: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Si se quisiera obtener todos los empleados y sus salarios en la corporación quienes han

trabajado más de 12 meses se haría la consulta siguiente en SQL:

SELECT ENOMBRE, SALARIO FROM E, G, S WHERE G.DUR > 12 AND E.ENO = G.ENO AND E.TILE = S.TITLE Se debe tener en cuenta que en cada sitio de la corporación puede haber esquemas

diferentes o repetidos.

Figura 2.3 Diferentes sitios de una corporación.

En el primer nivel se soporta la transparencia de red. En el segundo nivel se permite la

transparencia de replicación de datos. En el tercer nivel se permite la transparencia de la fragmentación. Finalmente, en el último nivel se permite la transparencia de acceso (por

medio de lenguaje de manipulación de datos). La responsabilidad sobre el manejo de

transparencia debe estar compartida tanto por el sistema operativo, el sistema de manejo

de bases de datos y el lenguaje de acceso a la base de datos distribuida. Entre estos tres módulos se deben resolver los aspectos sobre el procesamiento distribuido de consultas y

sobre el manejo de nombres de objetos distribuidos.

Page 21: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Figura 2.4 Organización en capas de los niveles de transparencia.

Page 22: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Características de la Transparencia

Un sistema de base de datos distribuida requiere características funcionales que puedan ser agrupadas y descritas como características de transparencia. Las características de transparencia de DDBMS tiene la propiedad común de permitir que el usuario sienta que es el único que esta utilizando la base de datos. En otras palabras, el usuario cree que el o ella esta trabajando con un DBMS centralizado; todas las complejidades de una base de datos distribuida están escondidas, o son transparentes, para el usuario. (Coronel & Rob, 2004, pág. 498) Las características de transparencia del DDBMS son:

• Transparencia de distribución, la cual permite que una base de datos distribuida sea tratada como una sola base de datos lógica. Si un DDBMS exhibe transparencia de distribución, el usuario no necesita saber:

o Que los datos están en particiones o Que los datos pueden ser replicados en varios sitios o La ubicación de los datos (Coronel & Rob, 2004, pág. 498)

• Transparencia de transacción, la cual permite que una transacción actualice datos en varios sitios de la red. La transparencia de transacción garantiza que la transacción será completada en su totalidad o abortada, con lo cual se mantiene la integridad de la base de datos. (Coronel & Rob, 2004, pág. 498)

• Transparencia de falla, la cual permite que el sistema continúa operando en el caso de una falla de nodo. Las funciones que se perdieron a causa de la falla serán recobradas por otro nodo de la red. (Coronel & Rob, 2004, pág. 498)

• Transparencia de desempeño, la cual permite que el sistema funcione como si fuera un DBMS centralizado. El sistema no sufrirá ninguna degradación de desempeño por su uso en una red o por diferencia de plataforma de la red. También garantiza que el sistema encontrara la ruta de acceso mas optima a los datos remotos. (Coronel & Rob, 2004, pág. 498)

• Transparencia de heterogeneidad, la cual permite la integración de varios DBMS locales diferentes conforme a un esquema común, global. El DDBMS es responsable de transformar las solicitudes de datos del esquema global en es quema de DDBMS local. (Coronel & Rob, 2004, pág. 498)

2.3.1 Transparencia de Localización (de ubicación) Existe cuando el usuario o programador debe especificar el nombre de los objetos de la base de datos pero no su ubicación. (Coronel & Rob, 2004, pág. 499) Transparencia de ubicación local Existe cuando el usuario o programador debe especificar tanto los nombres como las ubicaciones de los fragmentos. (Coronel & Rob, 2004, pág. 499) 2.3.2 Transparencia de Fragmentación Es el mayor nivel de transparencia. El usuario o programador no necesita saber que una base de datos esta en particiones. Por consiguiente, ni los nombres ni la ubicación de los fragmentos se especifican antes de acceder a los datos. (Coronel & Rob, 2004, pág. 499)

Page 23: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

2.3.3 Transparencia de Replica

Consiste en que si existen replicas de objetos de la base de datos, su existencia debe ser controlada por el sistema no por el usuario.

SI LA SENTENCIA SQL REQUIERE:

NOMBRE DEL FRAGMENTO

NOMBRE DE LA UBICACIÓN

EL DBMS SOPORTA NIVEL DE TRANSPARENCIA

DE DISTRIBUCIÓN

Si Si Mapeo Local Bajo

Si No Transparencia de ubicación Medio

No No Transparencia de fragmentación Alto

PRACTICA DE LABORATORIO No.1

Para ilustrar el uso de varios niveles de transparencia suponga que se tiene una tabla T_EMPLEADO que contiene los atributos EMP_CLAVE, EMP_APAT, EMP_AMAT, EMP_NOM, EMP_FNAC, EMP_FING y PUE_CLAVE. Los datos EMPLEADO están distribuidos en 3 lugares: New York, Atlanta y Miami. La tabla está dividida por ubicación, es decir, todos los datos del empleado de Nueva York están guardados en el fragmento E1, los datos de los empleados de Atlanta en el E2 y los de Miami en el E3.

T_EMPLEADO TC_PUESTO EMP_CLAVE varchar(5) PK PUE_CLAVE varchar(2) PK PUE_CLAVE varchar(2) FK PUE_DESC varchar(50) EMP_APAT varchar(50) EMP_AMAT varchar(50) EMP_NOM varchar(50) EMP_FNAC datetime EMP_FING datetime

DBMS distribuido Tabla EMPLEADO

E1 E2 E3

New York Atlanta Miami

Figura 2.5 Ubicaciones de los fragmentos Ahora suponga que el usuario desea poner en lista todos los empleados con fecha de nacimiento anterior al primero de Enero de 1940. Para enfocarse en los temas de transparencia, también suponga que la tabla EMPLEADO esta fragmentada y que cada fragmento es único (la condición de fragmento único indica que todas las filas son únicas, sin hacer caso de que un fragmento este localizado en ellas). Por último, suponga que ninguna parte de la base de datos esta replicada en algún otro sitio de la red.

INSTANCIA ADMINISTRADOR PASSWORD

• DESKTOP\SVR_NEWYORK sa newyork • DESKTOP\SVR_ATLANTA sa atlanta • DESKTOP\SVR_MIAMI sa Miami • DESKTOP\SVR_RECHUM sa rechum

Según el nivel de la transparencia de distribución, pueden examinarse tres casos de consulta:

Fragmento

Ubicación

Page 24: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

CASO 1: LA BASE DE DATOS SOPORTA TRANSPARENCIA DE FRAGMENTACIÓN La consulta se ajusta al formato de consulta de base de datos no distribuida; es decir, no especifica nombres o ubicaciones de fragmento. Previamente a esta instrucción SELECT simple, el DBA debió de generar la vista dividida para el acceso a datos, linkeando los servidores necesarios, para ello el administrador de la Base de Datos será configurado con servidores vinculados. Esto se hace con el procedimiento sp_addlinkedserver, para emplear dicho procedimiento se debe tener en cuenta la sintaxis del mismo:

sp_addlinkedserver [ @server = ] 'server' [ , [ @srvproduct = ] 'product_name' ] [ , [ @provider = ] 'provider_name' ] [ , [ @datasrc = ] 'data_source' ] [ , [ @location = ] ' location' ] [ , [ @provstr = ] 'provider_string' ] [ , [ @catalog = ] 'catalog' ]

[ @server = ] 'server' . Es el nombre local del servidor vinculado que se va a crear, es decir el alias con el que nombraremos al servidor. server es de tipo sysname y no tiene ningún valor predeterminado. Con múltiples instancias de SQL Server, server puede ser servername\instancename. Entonces, al servidor vinculado podrá hacerse referencia como el origen de datos de SELECT *FROM [servername\instancename.]pubs.dbo.authors. Si no se especifica data_source, el servidor es el nombre real de la instancia.

[ @srvproduct = ] 'product_name' . Es el nombre de producto del origen de datos OLE DB que se va a agregar como servidor vinculado. product_name es de tipo nvarchar(128) y su valor predeterminado es NULL. Si es SQL Server, no es necesario especificar provider_name, data_source, location, provider_string y catalog.

[ @provider = ] 'provider_name' . Es el identificador de programación único (PROGID) del proveedor OLE DB correspondiente a este origen de datos. provider_name debe ser único para el proveedor OLE DB especificado que se ha instalado en el equipo actual. provider_name es de tipo nvarchar(128) y su valor predeterminado es NULL. Se espera que el proveedor OLE DB se registre con el PROGID proporcionado en el registro.

[ @datasrc = ] 'data_source'. Es el nombre del origen de datos según lo interpreta el proveedor OLE DB. data_source es de tipo nvarchar(4000) y su valor predeterminado es NULL. data_source se pasa como la propiedad DBPROP_INIT_DATASOURCE para inicializar el proveedor OLE DB. Cuando se crea el servidor vinculado para el proveedor OLE DB de SQL Server, data_source puede especificarse en el formato nombreServidor\nombreInstancia, que puede utilizarse para conectarse a una instancia específica de SQL Server que se ejecute en el equipo especificado. nombreServidor es el nombre del equipo en el que se ejecuta SQL Server y nombreInstancia es el nombre de la instancia de SQL Server específica a la que se conectará el usuario.

[ @location = ] ' location' . Es la ubicación de la base de datos según la interpreta el proveedor OLE DB. location es de tipo nvarchar(4000) y su valor predeterminado es NULL. location se pasa como la propiedad DBPROP_INIT_LOCATION para inicializar el proveedor OLE DB.

Page 25: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

[ @provstr = ] 'provider_string' . Es la cadena de conexión específica del proveedor OLE DB que identifica un origen de datos único. provider_string es de tipo nvarchar(4000) y su valor predeterminado es NULL. provstr se pasa como la propiedad DBPROP_INIT_PROVIDERSTRING para inicializar el proveedor OLE DB. Cuando se crea el servidor vinculado para el proveedor OLE DB de SQL Server, la instancia puede especificarse mediante la palabra clave SERVER como, por ejemplo, SERVER=nombreServidor\nombreInstancia para especificar una instancia específica de SQL Server. nombreServidor es el nombre del equipo en el que se ejecuta SQL Server y nombreInstancia es el nombre de la instancia de SQL Server específica a la que se conectará el usuario.

[ @catalog = ] 'catalog' . Es el catálogo que va a utilizarse cuando se establezca una conexión con el proveedor OLE DB. catalog es de tipo sysname y su valor predeterminado es NULL. catalog se pasa como la propiedad DBPROP_INIT_CATALOG para inicializar el proveedor OLE DB.

SQL Server 2005 En el analizador de consultas de DESKTOP\SVR_NEWYORK se ejecutará de la siguiente forma: sp_addlinkedserver 'DESKTOP\SVR_MIAMI','','SQLOLEDB ', 'DESKTOP\SVR_MIAMI', '','User ID=sa; Password=miami' ,'BD_MIAMI' sp_addlinkedserver 'DESKTOP\SVR_ATLANTA', '', 'SQLOLEDB', 'DESKTOP\SVR_ATLANTA ', '', 'User ID=sa; Password=atlanta', 'BD_ATLANTA'

Page 26: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Así mismo en DESKTOP\SVR_ATLANTA la sintaxis será la siguiente: sp_addlinkedserver 'DESKTOP\SVR_NEWYORK', '', 'SQLO LEDB', 'DESKTOP\SVR_NEWYORK', '', 'User ID=sa; Password=newyo rk', 'BD_NEWYORK' sp_addlinkedserver 'DESKTOP\MIAMI', '', 'SQLOLEDB', 'DESKTOP\SVR_MIAMI', '', 'User ID=sa; Password=miami', 'BD_MIAMI'

Page 27: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Así mismo en DESKTOP\SVR_MIAMI la sintaxis será la siguiente: sp_addlinkedserver 'DESKTOP\SVR_NEWYORK','','SQLOLE DB',

'DESKTOP\SVR_NEWYORK','', 'User ID=sa; Password=newyork', 'BD_NE WYORK'

sp_addlinkedserver 'DESKTOP\SVR_ATLANTA', '', 'SQLO LEDB', 'DESKTOP\SVR_ATLANTA', '', 'User ID=sa; Password=atlanta', 'BD_ATLANTA'

Para conocer los servidores disponibles, que se han agregado, ejecute sp_helpserver en cada una de las instancias instaladas. En cualquiera de las instancias ejecute la consulta sp_helpserver deberá verse de esta forma:

Page 28: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Para eliminar los servidores vinculados o disponibles, que se han agregado, ejecute sp_dropserver para cada instancias que desee eliminar. En cualquiera de las instancias ejecute la consulta sp_dropserver deberá verse de esta forma:

Ahora bien, si al ejecutar una consulta distribuida obtuviéramos un mensaje de error referente a las consultas Ad Hoc como el siguiente: Mens. 15281, Nivel 16, Estado 1, Línea 3 SQL Server bloqueó el acceso a STATEMENT 'OpenRowse t/OpenDatasource' del componente 'Ad Hoc Distributed Queries' porque este componente está de sactivado como parte de la configuración de seguridad de este servidor. Un administrador del sistema puede habilitar el uso de 'Ad Hoc Distributed Queries' mediante sp_configure. Par a obtener más información sobre cómo habilitar 'Ad Hoc Distributed Queries', vea el tema sobre la configuración de superficie en los Libros en pantalla de SQL Server.

Quiere decir que debemos reconfigurar el servidor para que soporte dichas consultas mediante los siguientes comandos: En el analizador de consultas de DESKTOP\SVR_NEWYORK se ejecutará de la siguiente forma: sp_configure 'show advanced options' ,1 reconfigure with override go sp_configure 'Ad Hoc Distributed Queries' ,1 reconfigure with override go Así mismo en DESKTOP\MIAMI , en DESKTOP\SVR_ATLANTA y DESKTOP\SVR_RECHUM

Page 29: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Cuando un usuario inicia la sesión en el servidor local y ejecuta una consulta distribuida que obtiene acceso a una tabla del servidor vinculado, el servidor local debe iniciar la sesión en el servidor vinculado en nombre del usuario para obtener acceso a esa tabla. Mediante el procedimiento sp_addlinkedsrvlogin especificaremos las credenciales de inicio de sesión que utiliza el servidor local para iniciar sesión en el servidor vinculado.

Al ejecutar sp_addlinkedserver, se crea automáticamente una asignación predeterminada entre todos los inicios de sesión del servidor local y los inicios de sesión remotos del servidor vinculado. La asignación predeterminada indica que SQL Server utiliza las credenciales de usuario del inicio de sesión local al conectarse al servidor vinculado en nombre del inicio de sesión.

En el analizador de consultas de DESKTOP\SVR_NEWYORK se ejecutará de la siguiente forma: EXEC sp_addlinkedsrvlogin 'DESKTOP\SVR_MIAMI','false','sa','sa','miami' EXEC sp_addlinkedsrvlogin 'DESKTOP\SVR_ATLANTA','false','sa','sa', 'atlanta' Así mismo en DESKTOP\MIAMI y en DESKTOP\SVR_ATLANTA

Page 30: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

SQL Server 2000 En el analizador de consultas de DESKTOP\SVR_NEWYORK se ejecutará de la siguiente forma: EXEC sp_addlinkedserver 'DESKTOP\ SVR_MIAMI', '' , 'SQLOLEDB' , 'DESKTOP\ SVR_MIAMI' , '' , '' , 'BD_MIAMI' EXEC sp_addlinkedserver 'DESKTOP\SVR_ATLANTA' , '' , 'SQLOLEDB' , 'DESKTOP\SVR_ATLANTA' , '' , '' , 'BD_ATLANTA' EXEC sp_addlinkedsrvlogin 'DESKTOP\SVR_MIAMI' , 'false' , 'sa' , 'sa' , 'miami' EXEC sp_addlinkedsrvlogin 'DESKTOP\SVR_ATLANTA' , 'false' , 'sa' , 'sa' , 'atlanta'

Así mismo en DESKTOP\SVR_ATLANTA la sintaxis será la siguiente: EXEC sp_addlinkedserver 'DESKTOP\SVR_NEWYORK', '' , 'SQLOLEDB' , 'DESKTOP\SVR_NEWYORK', '' , '' , 'BD_NEWYORK' EXEC sp_addlinkedserver 'DESKTOP\SVR_MIAMI' , '' , 'SQLOLEDB', 'DESKTOP\SVR_MIAMI' , '' , '' , 'BD_MIAMI' EXEC sp_addlinkedsrvlogin 'DESKTOP\ SVR_MIAMI' , 'false' , 'sa' , 'sa' , 'miami' EXEC sp_addlinkedsrvlogin 'DESKTOP\SVR_NEWYORK', 'false' , 'sa' , 'sa' , 'newyork'

Page 31: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Así mismo en DESKTOP\MIAMI la sintaxis será la siguiente: EXEC sp_addlinkedserver 'DESKTOP\SVR_NEWYORK', '' , 'SQLOLEDB' , 'DESKTOP\SVR_NEWYORK', '' , '' , 'BD_NEWYORK' EXEC sp_addlinkedserver 'DESKTOP\SVR_ATLANTA' , '' , 'SQLOLEDB', 'DESKTOP\SVR_ATLANTA' , '' , '' , 'BD_ATLANTA' EXEC sp_addlinkedsrvlogin 'DESKTOP\SVR_NEWYORK', 'false' , 'sa' , 'sa' , 'newyork' EXEC sp_addlinkedsrvlogin 'DESKTOP\SVR_ATLANTA' , 'false' , 'sa' , 'sa' , 'atlanta'

Para conocer los servidores disponibles, que se han agregado, ejecute sp_helpserver en cada una de las instancias instaladas. En cualquiera de las instancias ejecute la consulta sp_helpserver deberá verse de esta forma:

Page 32: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Para verificar que efectivamente se vinculo el servidor y se registro de forma correcta al usuario ‘sa’ procederemos a ejecutar una consulta SELECT simple en el analizador de consultas de DESKTOP\SVR_NEWYORK la cual permita extraer información del servidor vinculado: SELECT * FROM [DESKTOP\SVR_MIAMI].BD_MIAMI.dbo.T_EMPLEADO

Ahora, es importante conocer la manera de poder eliminar un registro de un usuario seguidamente revertir el proceso de vincular un servidor, esto se puede lograr utilizando los procedimientos almacenados sp_droplinkedsrvlogin y sp_dropserver, en ese mismo orden. Para ejemplificar esto, utilizaremos el analizador de consultas de DESKTOP\SVR_NEWYORK. EXEC sp_droplinkedsrvlogin 'DESKTOP\SVR_MIAMI' , 'sa' EXEC sp_droplinkedsrvlogin 'DESKTOP\SVR_ATLANTA' , 'sa' EXEC sp_dropserver 'DESKTOP\SVR_MIAMI' EXEC sp_dropserver 'DESKTOP\SVR_ATLANTA'

Page 33: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Luego de lo anterior nuestro servidor esta capacitado para realizar las consultas distribuidas requeridas sobre los diversos servidores.

Ahora bien, para poder realizar la transparencia de fragmentación es necesaria la creación de vistas distribuidas, estas se realizarían con la siguiente sintaxis en el servidor de DESKTOP\SVR_NEWYORK, y posteriormente hacer lo correspondiente para los servidores de DESKTOP\SVR_ATLANTA y DESKTOP\SVR_MIAMI:

De esta forma la instrucción SELECT final del usuario seria una consulta simple como la siguiente: SELECT * FROM dbo.V_EMPLEADO WHERE EMP_APAT LIKE 'K%'

Page 34: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Creacion de UPDATE, DELETE e INSERT Distribuidos UPDATE OPENDATASOURCE ( 'SQLOLEDB' , 'Data Source= LAPTOP\SVR_MIAMI; User ID = sa; password=miami' ). BD_MIAMI. dbo . TC_PUESTO SET PUE_DESC ='SOPORTE TÉCNICO' WHERE PUE_CLAVE LIKE 'ST'

INSERT INTO dbo . Table_1 -MIGRAR INFORMACION DE TABLA A TABLA SELECT UNO FROM OPENDATASOURCE ( 'SQLOLEDB' , 'Data Source= LAPTOP\SVR_ATLANTA; User ID = sa; password=atlanta' ). BD_atlanta . dbo . Table_1 INSERT –INSERTAR DATOS EN UNA TABLA OPENDATASOURCE ( 'SQLOLEDB' , 'Data Source= evolution-v2.\SVR_ATLANTA; User ID = sa; password=atlanta' ). BD_ATLANTA. dbo . TC_PUESTO VALUES( 'DOS' ) DELETE OPENDATASOURCE ( 'SQLOLEDB' , 'Data Source= LAPTOP\SVR_ATLANTA; User ID = sa; password=atlanta' ). BD_ATLANTA. dbo . Table_1

CASO 2: LA BASE DE DATOS SOPORTA TRANSPARENCIA DE UBICACIÓN En la consulta deben especificarse los nombres de fragmento, más no su ubicación. En este ejemplo obtendremos información de la tabla T_EMPLEADO ubicadas en los servidores SVR_MIAMI Y SVR_ATLANRA desde un equipo remoto en este caso seria SVR_NEWYORK : SELECT EMP_CLAVE,EMP_APAT,EMP_AMAT,EMP_NOM,EMP_FNAC,EMP_FING,PUE_CLAVE FROM dbo.T_EMPLEADO UNION SELECT EMP_CLAVE,EMP_APAT,EMP_AMAT,EMP_NOM,EMP_FNAC,EMP_FING,PUE_CLAVE FROM [DESKTOP\SVR_ATLANTA].BD_ATLANTA.dbo.T_EMPLEADO UNION SELECT EMP_CLAVE,EMP_APAT,EMP_AMAT,EMP_NOM,EMP_FNAC,EMP_FING,PUE_CLAVE FROM [DESKTOP\SVR_MIAMI].BD_MIAMI.dbo.T_EMPLEADO Nota: Hay que tener en cuenta que sin la especificación correcta del esquema, en este caso dbo, al que pertenece la tabla no se podrá tener acceso a ella como en versiones pasadas de SQL.

Page 35: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Page 36: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

CASO 3: LA BASE DE DATOS SOPORTA TRANSPARENCIA DE UBICACIÓN LOCAL En la consulta deben especificarse los nombres de fragmento, más no su ubicación.

En este primer ejemplo se obtienen datos de las instancias de servidor de SVR_ATLANTA y SVR_MIAMI desde el servidor de SVR_NEWYORK mediante el siguiente código: SELECT * FROM T_EMPLEADO UNION SELECT * FROM OPENDATASOURCE(

'SQLOLEDB', 'Data Source= DESKTOP\SVR_ATLANTA; User ID=sa; Password=atlanta' ).BD_ATLANTA.dbo.T_EMPLEADO

UNION SELECT * FROM OPENDATASOURCE(

'SQLOLEDB', 'Data Source= DESKTOP\SVR_MIAMI; User ID=sa; Password=miami' ).BD_MIAMI.dbo.T_EMPLEADO

La instrucción UNION aplicaría con diferentes servidores de SQL Server 2005, para este ejemplo puede ejecutar la consulta directamente sobre SQL Server 2005. De clic en el botón de “Consulta de motor de base de datos” al lado de “Nueva consulta” y pegue el código anterior. Previamente configurado sp_configure

Page 37: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

PRACTICA DE LABORATORIO No. 2 Esta práctica consistirá en aplicar los conceptos de heterogeneidad de base de datos distribuidas, vinculando servidores de diversas plataformas y realizando consultas distribuidas sobre ambas. Escenario: Suponga usted que el servidor SVR_ATLANTA ha quedado momentáneamente fuera de servicio, el ingeniero en Sistemas decide que los empleados que se den de alta durante el tiempo que el servidor no funciona se capturarán en una base de datos temporal en Access para luego ser exportados al servidor. Base de datos Access 2007 Ubicación del archivo: C:\ Nombre: BD_TEMP Tablas: T_EMPLEADO Campos en T_EMPLEADO: EMP_CLAVE (Texto, 5) PK,

EMP_APAT (Texto, 50), EMP_AMAT (Texto, 50), EMP_NOM (Texto, 50), EMP_FNAC (Fecha/Hora), EMP_FING (Fecha/Hora), PUE_CLAVE (Texto, 2) PK

Capture los siguientes datos en la tabla T_EMPLEADO: EMP_CLAVE EMP_APAT EMP_AMAT EMP_NOM EMP_FNAC EMP_FING PUE_CLAVE 018 Gonzalez Escolar Maria 09/11/1987 15/12/2008 CP 019 Pinilla Gallego Pilar 11/04/1980 15/12/2008 DS 020 Rivas Acevedo Humberto 19/05/1972 15/12/2008 DS Nota: Una de las razones principales por las cuales se realiza una comprobación antes de la mezcla de los datos, es que los capturistas desconocen la última clave ingresada en la tabla de empleados, llevando ellos solamente un consecutivo, por otro lado dado que esto es un trabajo emergente se omite un catalogo de empleados, aunque si se toma como un campo clave primario, por los detalles anteriores se deben hacer una serie de comprobaciones en ambas tablas.

a) Realice una consulta que muestre los datos desde BD_TEMP en el analizador de SQL en SVR_ATLANTA.

SELECT * FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0' , 'C:\BD_TEMP.accdb' ; 'admin' ; '' , T_EMPLEADO)

Page 38: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

b) Realice una consulta que verifique que los datos a ingresar sean consistentes con la base de datos de ATLANTA.

/**Script para seleccionar datos desde C:\BD_TEMP.a ccdb y comparar las claves con las existentes en T_EMPLEADOS b) Realice una consulta que verifique que los datos a ingresar no están duplicados en BD_ATLANTA**/ /** PRIMER COMPROBACION (DUPLICIDAD) 1: Convierte a tipo de datos INT los tres caract eres que siguen a AT en la clave de un empleado p.e . AT001=1**/ /**2: Hace el mismo tipo de conversion que 1: pero trabaja con todos los caracteres de la cadena de access p.e. 018=18**/ /** SEGUNDA COMPROBACION (CATALOGO) 3: Selecciona las claves de puesto que no coinci dan con el catalogo de puestos**/ /** TERCER COMPROBACION (FECHAS) 4: Obtiene las edades de los empleados a la fech a del ingreso las ordena y en base a la menor esper a que sean mayores de 18**/ DECLARE @MENSAJE VARCHAR( 100 ) SET @MENSAJE='' IF ( SELECT TOP 1 CONVERT( INT , SUBSTRING( EMP_CLAVE, 3, 3)) AS CLAVE FROM T_EMPLEADO ORDER BY CLAVE DESC) /**1**/ >= ( SELECT TOP 1 CONVERT( INT , SUBSTRING( EMP_CLAVE, 1, 3)) AS CLAVE FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0' , 'C:\BD_TEMP.accdb' ; 'admin' ; '' , T_EMPLEADO) ORDER BY CLAVE DESC) /**2**/ SET @MENSAJE='CLAVES DUPLICADAS,' IF EXISTS ( SELECT PUE_CLAVE FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0' , 'C:\BD_TEMP.accdb' ; 'admin' ; '' , T_EMPLEADO) WHERE PUE_CLAVE NOT IN ( SELECT PUE_CLAVE FROM TC_PUESTO) /** 3**/ ) SET @MENSAJE=@MENSAJE + 'CLAVES DE PUESTOS,' IF ( SELECT TOP 1 DATEDIFF( YEAR, EMP_FNAC, EMP_FING) AS ANIOS FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0' , 'C:\BD_TEMP.accdb' ; 'admin' ; '' , T_EMPLEADO) ORDER BY ANIOS ASC) /**4**/ <18 SET @MENSAJE=@MENSAJE + 'EDADES DE EMPLEADOS,' IF @MENSAJE='' PRINT 'TODAS LAS CARACTERISTICAS DE LA TABLA DE ACCESS FU ERON SATISFACTORIAMENTE VERIFICADAS, PUEDE PROCEDER A IMPORTAR LOS DATOS' ELSE BEGIN IF SUBSTRING( @MENSAJE, LEN( @MENSAJE), 1)= ',' SET @MENSAJE=SUBSTRING( @MENSAJE, 1, LEN( @MENSAJE)- 1) PRINT 'VERIFIQUE LOS ERRORES EN: ' + @MENSAJE + ' ANTES DE IMPORTAR LOS DATOS' END

Page 39: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

c) Realice una consulta para enviar los datos desde BD_TEMP a BD_ATLANTA en SVR_ATLANTA. /**Script para seleccionar datos desde C:\BD_TEMP.a ccdb c) Realice una consulta para enviar los datos desde BD_TEMP a BD_ATLANTA en SVR_ATLANTA**/ BEGIN TRAN T1 INSERT INTO T_EMPLEADO ( EMP_CLAVE, EMP_APAT, EMP_AMAT, EMP_NOM, EMP_FNAC, EMP_FING, PUE_CLAVE) SELECT 'AT' + EMP_CLAVE, EMP_APAT, EMP_AMAT, EMP_NOM, EMP_FNAC, EMP_FING, PUE_CLAVE FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0' , 'C:\BD_TEMP.accdb' ; 'admin' ; '' , T_EMPLEADO) SELECT * FROM T_EMPLEADO ROLLBACK COMMIT TRAN T1

Vista final de la tabla T_EMPLEADO EN SVR_ATLANTA

Page 40: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Page 41: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

2.4 Fragmentación de Datos La fragmentación de los datos permite dividir un objeto en dos o más segmentos o fragmentos. El objeto podría ser una base de datos de usuario, una base de datos de sistema o una tabla. Cada fragmento puede guardarse en cualquier sitio en una red de computadoras. La información de la fragmentación de los datos se guarda en un catalogo de datos distribuidos (DDC), desde donde es accesara por el procesador de transacciones para procesar las solicitudes de los usuarios. Las estrategias de fragmentación de los datos como se analizan aquí, están basadas a nivel de tabla y consisten en dividir una tabla en fragmentos lógicos. Podemos hablar de tres estrategias de fragmentación de datos: horizontal, vertical y mezclada (Se debe tener en cuenta que una tabla fragmentada siempre puede recrearse con sus partes fragmentadas mediante una combinación de uniones y articulaciones).

La fragmentación horizontal se refiere a la división de una relación en subconjunto (fragmento) de tuplas (filas). Cada fragmento se guarda en un nodo diferente, y cada uno de ellos tiene filas únicas. Sin embargo, todas las filas únicas tienen los mismos atributos (columnas). En suma, cada fragmento equivale a una sentencia SELECT, con una combinación de uniones y articulaciones. La fragmentación vertical se refiere a la división de una relación en subconjuntos de atributo (columna). Cada conjunto (fragmento) se guarda en un nodo diferente, y cada fragmento tiene columnas únicas, con la excepción de la columna clave, la cual es común a todos los fragmentos. Esto es el equivalente de la sentencia PROJECT. La fragmentación mezclada se refiere a una combinación de estrategias horizontales y verticales. En otras palabras, una tabla puede dividirse en varios subconjuntos horizontales (filas), y cada una tiene un subconjunto de los atributos (columnas). Para ilustrar las estrategias de fragmentación, se utilizara la tabla CLIENTE de la compañía XYZ, ilustrada a continuación, esta tabla contiene los atributos CLI_NUM, CLI_NOM, CLI_DIR, CLI_UBI, CLI_LIM,CLI_BAL, CLI_RAT, CLI_DUE

CLI_NUM

CLI_NOM CLI_DIR CLI_UBI CLI_LIM CLI_BAL CLI_RAT CLI_DUE

10 Sinex,Inc. 12 Main St. NY $3500.00 $2700.00 3 $1245.00

11 Martin Corp. 321 Sunset Blvd. MI $6000.00 $1200.00 1 $0.00

12 Mynux Corp. 910 Eagle St. NY $4000.00 $3500.00 3 $3400.00

13 BTBC, Inc. Rue du Monde MI $6000.00 $5890.00 3 $1090.00

14 Victory, Inc. 123 Maple St. MI $1200.00 $550.00 1 $0.00

15 NBCC Corp 909 High Ave. AT $2000.00 $350.00 2 $50.00

2.4.1 Fragmentación Horizontal Suponga que la gerencia corporativa de la XYZ Company requiere información sobre sus clientes en los tres estados, pero las ubicaciones de la compañía en cada estado (NY, MI y AT) solamente requieren datos con respecto a clientes locales. Con base en esos requerimientos, se decide distribuir los datos por estado. Por consiguiente, se definen los fragmentos horizontales de acuerdo con la estructura mostrada en la tabla siguiente:

Comentario [W1]: Cuando aludimos a un Nombre propio hacemos la descomposición del mismo, en este caso los clientes que maneja la empresa son otras empresas por lo tanto el campo no se descompone en mas.

Page 42: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

NOMBRE DEL

FRAGMENTO UBICACIÓN CONDICION NOMBRE DEL

NODO NUMEROS DE

CLIENTE NUMERO DE

CUARTOS

CLI_H1 New York CUS_STATE=’NY’ NYR 10,12 2

CLI_H2 Atlanta CUS_STATE=’AT’ ATL 15 1

CLI_H3 Miami CUS_STATE=’MI’ MIA 11,13,14 3

Cada fragmento horizontal puede tener un número diferente de filas, pero cada uno de ellos DEBE tener los mismos atributos. Los fragmentos resultantes producen las tres tablas que a continuación se muestran:

Nombre del fragmento: CLI_H1 Ubicación: New York Nodo: NYR CLI_N

UM CLI_NOM CLI_DIR CLI_UBI CLI_LIM CLI_BAL CLI_RAT CLI_DUE

10 Sinex,Inc. 12 Main St. NY $3500.00 $2700.00 3 $1245.00

12 Mynux Corp. 910 Eagle St. NY $4000.00 $3500.00 3 $3400.00

Nombre del fragmento: CLI_H2 Ubicación: Atlanta Nodo: ATL CLI_N

UM CLI_NOM CLI_DIR CLI_UBI CLI_LIM CLI_BAL CLI_RAT CLI_DUE

15 NBCC Corp 909 High Ave. AT $2000.00 $350.00 2 $50.00

Nombre del fragmento: CLI_H3 Ubicación: Miami Nodo: MIA CLI_N

UM CLI_NOM CLI_DIR CLI_UBI CLI_LIM CLI_BAL CLI_RAT CLI_DUE

11 Martin Corp. 321 Sunset Blvd. MI $6000.00 $1200.00 1 $0.00

13 BTBC, Inc. Rue du Monde MI $6000.00 $5890.00 3 $1090.00

14 Victory, Inc. 123 Maple St. MI $1200.00 $550.00 1 $0.00

2.4.2 Fragmentación Vertical También puede dividirse la relación CLIENTE en fragmentos verticales compuestos de un conjunto de atributos. Por ejemplo, suponga que la compañía está dividida en dos departamentos, el de servicio y el de colecciones. Cada departamento está ubicado en un edificio distinto, y cada uno tiene interés solamente en unos cuantos de los atributos de la tabla CLIENTE. En este caso, los fragmentos se definen como se muestra a continuación:

NOMBRE DEL FRAGMENTO

UBICACIÓN NOMBRE DEL NODO

NOMBRES DE ATRIBUTO

CLI_V1 Edif. de servicio SVC CLI_NUM, CLI_NOM, CLI_DIR, CLI_UBI

CLI_V2 Edif. de colección ARC CLI_NUM, CLI_LIM, CLI_BAL, CLI_RAT, CLI_DUE

Cada fragmento vertical debe tener el mismo número de filas, pero la inclusión de los diferentes atributos depende de la columna clave. Los resultados de la fragmentación vertical se muestran a continuación, observe que el atributo clave (CLI_NUM) es común a ambos fragmentos CLI_V1 y CLI_V2.

Nombre del fragmento: CLI_V1

Ubicación: Edif. de servicio

Nodo: SVC

CLI_NUM CLI_NOM CLI_DIR CLI_UBI

Page 43: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

10 Sinex,Inc. 12 Main St. TN

11 Martin Corp. 321 Sunset Blvd.

FL

12 Mynux Corp. 910 Eagle St. TN

13 BTBC, Inc. Rue du Monde FL

14 Victory, Inc. 123 Maple St. FL

15 NBCC Corp 909 High Ave. GA

Nombre del fragmento: CLI_V2

Ubicación: Edif. de colección Nodo: ARC

CLI_NUM CLI_LIM CLI_BAL CLI_RAT CLI_DUE

10 $3500.00 $2700.00 3 $1245.00

11 $6000.00 $1200.00 1 $0.00

12 $4000.00 $3500.00 3 $3400.00

13 $6000.00 $5890.00 3 $1090.00

14 $1200.00 $550.00 1 $0.00

15 $2000.00 $350.00 2 $50.00

2.4.3 Fragmentación Hibrida (de Mezcla) La estructura de la XYZ Company requiere que los datos CLIENTE se fragmenten horizontalmente para acomodar las diferentes ubicaciones de la compañía; dentro de las ubicaciones, los datos deben ser fragmentados verticalmente para acomodar los diferentes departamentos (servicio y colección). En suma la tabla CLIENTE requiere una fragmentación mezclada. La fragmentación mezclada requiere un procedimiento de dos pasos. Primero, se introduce la fragmentación horizontal por cada sitio, con base en la ubicación dentro de un estado (CLI_UBI). La fragmentación horizontal produce los subconjuntos de tuplas cliente (fragmentos horizontales) localizados en cada sitio. Como los departamentos están localizados en edificios diferentes, se utiliza una fragmentación vertical dentro de cada fragmento horizontal para dividir los atributos, con lo cual se satisfacen las necesidades de información de cada departamento en cada subsitio. La fragmentación mezclada da los resultados ilustrados en la tabla siguiente:

NOMBRE DEL FRAGMENTO UBICACIÓN

CRITERIOS HORIZONTALES

NOMBRE DEL NODO

FILAS RESULTANTES EN EL SITIO

CRITERIOS VERTICALES Y ATRIBUTOS EN CADA FRAGMENTO

CLI_M1 NY-Servicio CLI_STATE=’NY’ NYR-S 10,12 CLI_NUM, CLI_NOM, CLI_DIR, CLI_UBI

CLI_M2 NY-Colección CLI_STATE=’NY’ NYR-C 10,12 CLI_NUM,CLI_LIM, CLI_BAL,CLI_RAT, CLI_DUE

CLI_M3 AT-Servicio CLI_STATE=’AT’ ATL-S 15 CLI_NUM, CLI_NOM, CLI_DIR, CLI_UBI

CLI_M4 AT-Colección CLI_STATE=’AT’ ATL-C 15 CLI_NUM,CLI_LIM, CLI_BAL,CLI_RAT, CLI_DUE

CLI_M5 MI-Servicio CLI_STATE=’MI’ MIA-S 11,13,14 CLI_NUM, CLI_NOM, CLI_DIR, CLI_UBI

CLI_M6 MI-Colección CLI_STATE=’MI’ MIA-C 11,13,14 CLI_NUM,CLI_LIM, CLI_BAL,CLI_RAT, CLI_DUE

Cada fragmento mostrado en la tabla anterior contiene datos de clientes por estado y, dentro de cada estado por ubicación de departamento, para adaptarse a los

Page 44: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

requerimientos de datos de cada departamento. Las tablas correspondientes a los fragmentos de mezcla se muestran a continuación: Nombre del fragmento: CLI_M1

Ubicación: NY-Servicio

Nodo: NYR-S

CLI_NUM CLI_NOM CLI_DIR CLI_UBI

10 Sinex,Inc. 12 Main St. NY

12 Mynux Corp. 910 Eagle St. NY

Nombre del fragmento: CLI_M2

Ubicación: NY-Colección Nodo: NYR-C

CLI_NUM CLI_LIM CLI_BAL CLI_RAT CLI_DUE

10 $3500.00 $2700.00 3 $1245.00

12 $4000.00 $3500.00 3 $3400.00

Nombre del fragmento: CLI_M3

Ubicación: AT-Servicio

Nodo: ATL-S

CLI_NUM CLI_NOM CLI_DIR CLI_UBI

15 NBCC Corp 909 High Ave. AT

Nombre del fragmento: CLI_M4

Ubicación: AT-Colección Nodo: ATL-C

CLI_NUM CLI_LIM CLI_BAL CLI_RAT CLI_DUE

15 $2000.00 $350.00 2 $50.00

Nombre del fragmento: CLI_M5

Ubicación: MI-Servicio

Nodo: MIA-S

CLI_NUM CLI_NOM CLI_DIR CLI_UBI

11 Martin Corp. 321 Sunset Blvd.

MI

13 BTBC, Inc. Rue du Monde MI

14 Victory, Inc. 123 Maple St. MI

Nombre del fragmento: CLI_M6

Ubicación: MI-Colección Nodo: MIA-C

CLI_NUM CLI_LIM CLI_BAL CLI_RAT CLI_DUE

11 $6000.00 $1200.00 1 $0.00

13 $6000.00 $5890.00 3 $1090.00

14 $1200.00 $550.00 1 $0.00

2.5 Distribución de Datos

Los datos son útiles solo cuando llegan a los usuarios correctos en el momento adecuado. El DBA es responsable de que los datos sean distribuidos a las personas apropiadas en el momento apropiado y en el formato correcto. Las tareas de uso y distribución de los datos del DBA pueden requerir mucho tiempo, en particular si la capacidad de entrega de los datos está basada en un ambiente típico de programación de aplicaciones, donde los usuarios dependen de programadores que suministran los programas para acceder a los datos guardados en la base de datos. Aunque la internet y

Page 45: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

sus extensiones intranet y extranet han abierto las bases de datos a los usuarios corporativos, su utilización también ha creado nuevos retos para el DBA. La actual filosofía de distribución de datos permite que los usuarios autorizados accedan a la base de datos. Una forma de realizar esta tarea es facilitar el uso de una nueva generación de herramientas de consulta más complejas y los nuevos programas frontales de web internet. Estos permiten que el DBA enseñe a los usuarios a producir la información requerida sin tener que depender de los programadores de aplicaciones. Naturalmente, el DBA debe asegurarse de que se sigan los procedimientos y estándares apropiados. Esta filosofía de distribución es común hoy en día, y es probable que llegue a ser más común conforme la tecnología de base de datos avanza. Un ambiente como ese es más flexible para el usuario. Esta claro, que si se permite que los usuarios se vuelvan relativamente autosuficientes en la adquisición y uso de los datos, este será más eficiente en el proceso de toma de decisiones. Sin embargo, esta “democracia de datos” también produce algunos efectos colaterales problemáticos. Al permitir que los usuarios micro manejen sus subconjuntos de datos, podría dañarse sin querer la conexión entre los usuarios la función de la administración de datos. El trabajo del DBA en estas circunstancias podría llegar a ser lo suficientemente complicado como para comprometer la eficiencia de la función de la administración de datos. La duplicación de datos podría florecer otra vez si no se realizan verificaciones a nivel organizacional para garantizar la singularidad de los elementos de datos. Así pues, los usuarios que no entiendan a cabalidad la naturaleza y fuentes de los datos podrían utilizar inapropiadamente los elementos de datos. Rol técnico del DBA

El rol técnico del DBA requiere un amplio entendimiento de las funciones del DBMS, la configuración, los lenguajes de programación, el modelado de datos y metodologías de diseño y otros temas relacionados con el DBM. Por ejemplo, las actividades técnicas del DBA incluyen la selección, instalación, operación, mantenimiento y actualización del DBMS y software utilitario, así como el diseño, desarrollo, ejecución y mantenimiento de los programas de aplicación que interactúan con la base de datos. Muchas de las actividades técnicas del DBA son una extensión lógica de sus actividades administrativas. Por ejemplo, el DBA se encarga de la seguridad e integridad, el respaldo y recuperación, el entrenamiento y soporte de la base de datos. Por lo tanto, el rol doble del DBA podría ser conceptualizado como una capsula cuyo núcleo técnico esta cubierto por una corteza claramente administrativa. Los aspectos técnicos del trabajo del DBA están enraizados en las siguientes áreas de operación:

• Evaluación, selección e instalación del DBMS y utilerías • Diseño y ejecución de bases de datos y aplicaciones • Pruebas y evaluaciones de bases de datos y aplicaciones • Operación del DBMS, utilerías y aplicaciones • Entrenamiento y soporte de los usuarios • Mantenimiento del DBMS, utilerías y aplicaciones

Niveles de distribución de los datos y procesos Los sistemas de base de datos actuales se clasifican con base en como la distribución de los procesos y datos son soportados. Por ejemplo, un DBMS puede guardar datos en un

Page 46: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

solo sitio (DB centralizada) o en múltiples sitios (DB distribuida) y puede soportar procesamientos de datos en un solo sitio o en varios. En la siguiente tabla se muestra una clasificación de los sistemas de base de datos de acuerdo con la distribución de los datos y con los procesos. DATOS EN UN SOLO SITIO DATOS EN SITIOS MULTIPLES Proceso en un solo sitio DBMS anfitrión mainframes No aplicable (requiere

procesos múltiples) Proceso en múltiples sitios Servidor de archivos DBMS

Cliente/servidor (DBMS de LAN)

DDBMS Cliente/servidor totalmente distribuido

2.5.1 Algoritmos Distribución Datos No Replicados Debido al uso que se da a las redes de computadoras en la actualidad incluyendo Internet, cada vez es más factible implementar Sistemas de Bases de Datos Distribuidas, sin embargo, esta tecnología lleva a los desarrolladores a enfrentar un problema, la carencia de metodologías y herramientas de apoyo para su diseño que permitan decidir la ubicación de los datos en cada uno de los diferentes sitios que componen la red de computadoras. Este problema se conoce como Diseño de la Distribución y nace de la necesidad de especificar las unidades de almacenamiento adecuadas, ya sea fragmentos verticales, horizontales o mixtos, junto con su ubicación dentro de la aplicación. El Modelo FURD, ha sido desarrollado para resolver el problema del diseño de las Bases de Datos Distribuidas, el cual esta divido en dos etapas o fases: la fragmentación y la ubicación de fragmentos. Estas fases ya se concentran en el Modelo FURD. Una vez que se resuelve el Modelo FURD se puede dar solución al problema del diseño. Sin embargo la dificultad radica precisamente en la forma de resolverlo, pues es un problema de optimización muy complejo que a medida que va creciendo su tamaño, se va haciendo más difícil la forma de resolverse.

ModeladoFURD.pdf

2.5.2 Algoritmos Distribución Datos Replicados Al tratarse de algoritmos de distribución replicados o no replicados la definición de nuestro problema y variables será diferente, es decir el problema se restringirá de otra manera como se explica en el documento ModeladoFURD.pdf. Estas restricciones son: 1ª Restricción. Cada atributo se almacena solamente en un solo sitio (Para bases de datos distribuidas no replicadas)

2ª Restricción. Cada atributo m se ubica en un sitio i que al menos ejecute una consulta que involucre al atributo (Para bases de datos distribuidas replicadas)

Page 47: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

3. Procesamiento de consultas distribuidas

Para adentrarse en este tema es recomendable tener conocimientos básicos de algebra relacional.

El éxito creciente de la tecnología de bases de datos relacionales en el procesamiento de

datos se debe, en parte, a la disponibilidad de lenguajes no procedurales los cuales

pueden mejorar significativamente el desarrollo de aplicaciones y la productividad del

usuario final. Ocultando los detalles de bajo nivel acerca de la localización física de datos,

los lenguajes de bases de datos relacionales permiten la expresión de consultas complejas

en una forma concisa y simple. Particularmente, para construir la respuesta a una

consulta, el usuario no tiene que especificar de manera precisa el procedimiento que se

debe seguir. Este procedimiento es llevado a cabo por un módulo del DBMS llamado el

procesador de consultas (query processor).

Una base de datos relacional consiste en muchas piezas, pero en su corazón están dos

componentes importantes: el motor de almacenaje y el procesador de consultas. El motor

de almacenaje escribe y lee datos del disco. Maneja los expedientes, concurrencia de los

controles, y mantiene ficheros de diario. El procesador de consultas acepta sintaxis de

SQL, selecciona un plan para ejecutar la sintaxis, y después ejecuta el plan elegido. El

usuario o el programa obran recíprocamente con el procesador de consultas, y el

procesador de consultas obra recíprocamente con el motor de almacenaje. El

procesador de consultas aísla al usuario de los detalles de la ejecución: el usuario

especifica el resultado y el procesador de consultas determina como se obtiene ese

resultado.

Dado que la ejecución de consultas es un aspecto crítico en el rendimiento de un DBMS,

el procesamiento de consultas ha recibido una gran atención tanto para bases de datos

centralizadas como distribuidas. Sin embargo, el procesamiento de consultas es mucho

más difícil en ambientes distribuidos que en centralizados, ya que existe un gran número

de parámetros que afectan el rendimiento de las consultas distribuidas.

El problema de procesamiento de consultas

La función principal de un procesador de consultas relacionales es transformar una

consulta en una especificación de alto nivel, típicamente en cálculo relacional, a una

consulta equivalente en una especificación de bajo nivel, típicamente alguna variación

del álgebra relacional (ver Figura 3.1). La consulta de bajo nivel implementada es de

Page 48: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

hecho la estrategia de ejecución para la consulta. La transformación debe ser correcta y

eficiente. Es correcta si la consulta de bajo nivel tiene la misma semántica que la consulta

original, esto es, si ambas consultas producen el mismo resultado. El mapeo bien definido

que se conoce entre el cálculo relacional y el álgebra relacional hace que la validez de

la transformación sea fácil de verificar. Sin embargo, producir una estrategia de ejecución

eficiente es mucho más complicado. Una consulta en el cálculo relacional puede tener

muchas transformaciones correctas y equivalentes en el álgebra relacional. Ya que cada

estrategia de ejecución equivalente puede conducir a consumos de recursos de

cómputo muy diferentes, la dificultad más importante es seleccionar la estrategia de

ejecución que minimiza el consumo de recursos.

Figura 3.1. Procesamiento de consultas.

Considere el siguiente subconjunto del esquema de la base de datos que se vio en el tema 2.3:

E (ENO, ENOMBRE, TITULO)

G (ENO, JNO, RESPONSABLE, JORNADA)

Con la siguiente consulta de usuario:

"Encuentre todos los nombres de empleados que manejan un proyecto"

La expresión de la consulta en SQL se puede ver como

SELECT ENOMBRE

FROM E, G

WHERE E.ENO = G.ENO AND RESPONSABLE = "ADMINISTRADOR"

Page 49: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Dos consultas equivalentes en el álgebra relacional que son transformaciones correctas de la consulta en SQL son:

y

Como es intuitivamente obvio, la segunda estrategia que evita calcular el producto cartesiano entre E y G, consume mucho menos recursos que la primera y, por lo tanto, es mejor.

En un contexto centralizado, las estrategias de ejecución de consultas pueden ser bien expresadas como una extensión del álgebra relacional. Sin embargo, en sistemas distribuidos, el álgebra relacional no es suficiente para expresar la ejecución de estrategias. Debe ser complementada con operaciones para el intercambio de datos entre nodos diferentes. Además de elegir el orden de las operaciones del álgebra relacional, el procesador de consultas distribuidas debe seleccionar también los mejores sitios para procesar datos y posiblemente la forma en que ellos tienen que ser transformados.

Ejemplo 3.1: Considere la siguiente consulta del ejemplo anterior:

Supongamos que E y G están fragmentadas horizontalmente como sigue:

• E1 = σ ENO ≤ "E3" (E)

• E2 = σ ENO > "E3" (E)

• G1 = σ ENO ≤ "E3" (G)

• G2 = σ ENO > "E3" (G)

Los fragmentos E1, E2, G1 y G2 están almacenados en los nodos 1, 2, 3 y 4,

respectivamente, y el resultado se quiere en el nodo 5. En la Figura 3.2 se presentan dos

estrategias distribuidas de ejecución diferentes para la misma consulta (se ha ignorado el

operador de proyección por simplicidad del ejemplo). La estrategia A explota el hecho

de que las relaciones E y G están fragmentadas de la misma manera y ejecuta la

operación de selección y junta en paralelo. La estrategia B centraliza todos los datos en el

nodo resultante antes de procesar la consulta.

Para evaluar el consumo de recursos, se usará un modelo de costo simple:

• Suponga que el costo de acceso a un tuplo (tupacc) es 1 unidad, y la

transferencia de un tuplo (tuptrans) tiene un costo de 10 unidades.

• Suponga que E y G tienen 400 y 1000 tuplos, respectivamente, y que existen 20

administradores en la relación G.

Page 50: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

• También, suponga que los datos están uniformemente distribuidos entre los nodos.

• Finalmente, suponga que las relaciones G y E están agrupadas localmente en los

atributos RESP y ENO, respectivamente, de manera que, hay un acceso directo a

los tuplos de G y E, respectivamente.

El costo de la estrategia A se puede derivar como sigue:

No. Proceso Cálculo Costo (unidades)

1 Producir G1’ seleccionando G1 tuplas * tupacc=10*1 10

2 Producir G2’ seleccionando G2

tuplas * tupacc=10*1 10

3 Transferir G1’ al nodo E1 tuplas * tuptrans= 10*10 100 4 Transferir G2’ al nodo E2 tuplas * tuptrans= 10*10 100

5 Juntar G1’ y E1 para obtener E1’

(tuplas E1 * tuplas G1’) * tupacc=10*10*1 100

6 Juntar G2’ y E2 para obtener E2’

(tuplas E2 * tuplas G2’) * tupacc=10*10*1 100

7 Transferir E1’ al nodo resultante tuplas * 10=10 * 10 100

8 Transferir E2’ al nodo resultante tuplas * 10=10 * 10 100

620

Page 51: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

El costo de la estrategia B se puede derivar como sigue:

La estrategia A es mejor por un factor de 37, lo cual es significativo. La diferencia sería

aún mayor si se hubiera asumido un costo de comunicación mayor y/o un grado de

fragmentación mayor.

Objetivos de la optimización de consultas

Como se estableció antes, el objetivo del procesamiento de consultas en un ambiente

distribuido es transformar una consulta sobre una base de datos distribuida en una

especificación de alto nivel a una estrategia de ejecución eficiente expresada en un

lenguaje de bajo nivel sobre bases de datos locales.

Así, el problema de optimización de consultas es minimizar una función de costo tal que

Page 52: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Función de costo total = costo de I/O + costo de CPU + costo de comunicación

Los diferentes factores pueden tener pesos diferentes dependiendo del ambiente

distribuido en el que se trabaje. Por ejemplo, en las redes de área amplia (WAN),

normalmente el costo de comunicación domina dado que hay una velocidad de

comunicación relativamente baja, los canales están saturados y el trabajo adicional

requerido por los protocolos de comunicación es considerable. Así, los algoritmos

diseñados para trabajar en una WAN, por lo general, ignoran los costos de CPU y de I/O.

En redes de área local (LAN) el costo de comunicación no es tan dominante, así que se

consideran los tres factores con pesos variables.

Caracterización de los procesadores de consultas

Es difícil evaluar y comparar procesadores de consultas para sistemas centralizados y

distribuidos dado que ellos difieren en muchos aspectos. En esta sección se enumeran

algunas características importantes de los procesadores de consultas que pueden ser

usados como base para su comparación.

Tipo de optimización

El problema de optimización de consultas es altamente demandante en tiempo de

ejecución y, en el caso general, es un problema de la clase NP. Así existen dos

estrategias para su solución: búsqueda exhaustiva o el uso de heurísticas. Los algoritmos

de búsqueda exhaustiva tienen una complejidad combinatoria en el número de relaciones

de la consulta. Obtienen la transformación óptima, pero sólo se aplican a consultas

simples dado su tiempo de ejecución.

Por otro lado, los algoritmos heurísticos obtienen solo aproximaciones a la transformación

óptima pero lo hacen en un tiempo de ejecución razonable. Las heurísticas más directas a

aplicar son el agrupamiento de expresiones comunes para evitar el cálculo repetido de las

mismas, aplicar primero las operaciones de selección y proyección, reemplazar una junta

por una serie de semijuntas y reordenar operaciones para reducir el tamaño de las

relaciones intermedias.

Granularidad de la optimización

Existen dos alternativas: considerar sólo una consulta a la vez o tratar de optimizar

múltiples consultas. La primera alternativa no considera el uso de resultados comunes

intermedios. En el segundo caso puede obtener transformaciones eficientes si las

Page 53: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

consultas son similares. Sin embargo, el espacio de decisión es mucho más amplio lo que

afecta grandemente el tiempo de ejecución de la optimización.

Tiempo de optimización

Una consulta puede ser optimizada en tiempos diferentes con relación a tiempo de

ejecución de la consulta. La optimización se puede realizar de manera estática antes de

ejecutar la consulta o de forma dinámica durante la ejecución de la consulta. La

optimización estática se hace en tiempo de compilación de la consulta. Así, el costo de la

optimización puede ser amortizada sobre múltiples ejecuciones de la misma consulta.

Durante la optimización de consultas dinámica la elección de la mejor operación siguiente

se puede hacer basado en el conocimiento exacto de los resultados de las operaciones

anteriores. Por tanto, se requiere tener estadísticas acerca del tamaño de los resultados

intermedios para aplicar esta estrategia.

Un tercer enfoque, conocido como híbrido, utiliza básicamente un enfoque estático, pero

se puede aplicar un enfoque dinámico cuando los tamaños de las relaciones estimados

están alejados de los tamaños actuales.

Estadísticas

La efectividad de una optimización recae en las estadísticas de la base de datos. La

optimización dinámica de consultas requiere de estadísticas para elegir las operaciones

que deben realizarse primero. La optimización estática es aún más demandante ya que el

tamaño de las relaciones intermedias también debe ser estimado basándose en

estadísticas. En bases de datos distribuidas las estadísticas para optimización de

consultas típicamente se relacionan a los fragmentos; la cardinalidad y el tamaño de los

fragmentos son importantes así como el número de valores diferentes de los atributos.

Para minimizar la probabilidad de error, estadísticas más detalladas tales como

histogramas de valores de atributos se usan pagando un costo mayor por su manejo.

Nodos de Decisión

Cuando se utiliza la optimización estática, un solo nodo o varios de ellos pueden participar

en la selección de la estrategia a ser aplicada para ejecutar la consulta. La mayoría de los

sistemas utilizan un enfoque centralizado para la toma de decisiones en el cual un solo

lugar decide la estrategia a ejecutar. Sin embargo, el proceso de decisión puede ser

distribuido entre varios nodos los cuales participan en la elaboración de la mejor

Page 54: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

estrategia. El enfoque centralizado es simple, pero requiere tener conocimiento de la base

de datos distribuida completa. El enfoque distribuido requiere solo de información local.

Existen enfoques híbridos en donde un nodo determina una calendarización global de las

operaciones de la estrategia y cada nodo optimiza las subconsultas locales.

Topología de la Red

Como se mencionó al principio, el tipo de red puede impactar severamente la función

objetivo a optimizar para elegir la estrategia de ejecución. Por ejemplo, en redes de tipo

WAN se sabe que en la función de costo el factor debido a las comunicaciones es

dominante. Por lo tanto, se trata de crear una calendarización global basada en el costo

de comunicación. A partir de ahí, se generan calendarizaciones locales de acuerdo a una

optimización de consultas centralizada. En redes de tipo LAN el costo de comunicación no

es tan dominante. Sin embargo, se puede tomar ventaja de la comunicación "broadcast"

que existe comúnmente en este tipo de redes para optimizar el procesamiento de las

operaciones junta. Por otra parte, se han desarrollado algoritmos especiales para

topologías específicas, como por ejemplo, la topología de estrella. 3.1. Metodología Procesamiento Consultas Distribuidas El problema de procesamiento de consultas se puede descomponer en varios subproblems que corresponden a diferentes niveles. En la Figura 4.4, se presenta un esquema por niveles genérico para el procesamiento de consultas. Para simplificar la discusión, suponga que se tiene un procesador de consultas estático semicentralizado en donde no se tienen fragmentos replicados. Cuatro capas principales están involucradas en mapear una consulta a una base de datos distribuida en una secuencia optimizada de operaciones locales, cada una de ellas actuando en una base de datos local. Las cuatro capas principales son: descomposición de consultas, localización de datos, optimización global de consultas y optimización local de consultas. Las primeras tres se realizan en un nodo central usando información global. La cuarta capa se realiza en cada nodo local.

Page 55: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Figura 4.4. Arquitectura en capas del procesamiento de consultas. Descomposición de consultas La primera capa descompone una consulta en el cálculo relacional en una consulta en el álgebra relacional que opera sobre relaciones globales. Consiste de cuatro partes:

1. Normalización. Involucra la manipulación de los cuantificadores de la consulta y de los calificadores de la misma mediante la aplicación de la prioridad de los operadores lógicos.

2. Análisis. Se detecta y rechazan consultas semánticamente incorrectas. 3. Simplificación. Elimina predicados redundantes. 4. Reestructuración. Mediante reglas de transformación una consulta en el cálculo

relacional se transforma a una en el álgebra relacional. Se sabe que puede existir más de una transformación. Por tanto, el enfoque seguido usualmente es empezar con una consulta algebraica y aplicar transformaciones para mejorarla.

Localización de Datos La entrada a esta capa es una consulta algebraica definida sobre relaciones distribuidas. El objetivo de esta capa es localizar los datos de la consulta usando la información sobre la distribución de datos. Esta capa determina cuales fragmentos están involucrados en la consulta y transforma la consulta distribuida en una consulta sobre fragmentos. Optimización Global de Consultas Dada una consulta algebraica sobre fragmentos, el objetivo de esta capa es hallar una estrategia de ejecución para la consulta cercana a la óptima. La estrategia de ejecución para una consulta distribuida puede ser descrita con los operadores del álgebra relacional y con primitivas de comunicación para transferir datos entre nodos. Para encontrar una buena transformación se consideran las características de los fragmentos, tales como, sus cardinalidades. Un aspecto importante de la optimización de consultas es el ordenamiento de juntas, dado que algunas permutaciones de juntas dentro de la consulta pueden conducir a un mejoramiento de varios órdenes de magnitud. La salida de la capa de optimización global es una consulta algebraica optimizada con operación de comunicación incluidas sobre los fragmentos. Optimización Local de Consultas El trabajo de la última capa se efectúa en todos los nodos con fragmentos involucrados en la consulta. Cada subconsulta que se ejecuta en un nodo, llamada consulta local, es optimizada usando el esquema local del nodo. Hasta este momento, se pueden eligen los algoritmos para realizar las operaciones relacionales. La optimización local utiliza los algoritmos de sistemas centralizados.

Page 56: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

4.6 Descomposición de consultas Como se dijo en la sección anterior la descomposición de consultas consiste de cuatro pasos: normalización, análisis, simplificación y reestructuración. En esta sección se abundará más sobre cada uno de los pasos. 4.6.1 Normalización La consulta de entrada puede ser arbitrariamente compleja dependiendo de las facilidades provistas por el lenguaje. El objetivo de la normalización es transformar una consulta a una forma normalizada para facilitar su procesamiento posterior. La normalización consiste de dos partes: El análisis léxico y sintáctico. En esta parte se verifica la validez de la expresión que da origen a la consulta. Se verifica que las relaciones y atributos invocados en la consulta estén acordes con la definición en la base de datos. Por ejemplo, se verifica el tipo de los operandos cuando se hace la calificación. 4.6.2 Análisis El análisis de consultas permite rechazar consultas normalizadas para los cuales no se requiere mayor procesamiento. Una consulta se puede rechazar si alguno de sus atributos o nombres de relación no están definidas en el esquema global. También se puede rechazar si las operaciones que se aplican a los atributos no son del tipo adecuado. Se puede hacer también un análisis semántico. La consulta se puede rechazar si las componentes no contribuyen de ninguna forma a la generación del resultado. Dentro del cálculo relacional no es posible determinar la correctitud semántica de una consulta general. Sin embargo, es posible hacerlo para una clase importante de consultas relacionales, aquellas que no contienen disyunciones y negaciones. El análisis anterior se basa en la representación de la consulta como una gráfica, llamada la gráfica de la consulta o la gráfica de conectividad. En una gráfica de consulta, un nodo indica la relación resultante, y cualquier otro nodo representa la relación operante. Un arco entre dos nodos que no son resultados representa una junta, mientras que un arco cuyo nodo destino es una relación resultante representa una proyección. Más aún, un nodo no resultado puede ser etiquetado por un predicado de selección o auto-junta. Una subgráfica importante de la gráfica de conectividad es la gráfica de juntas, en la cual únicamente se consideran las juntas. La gráfica de juntas es particularmente importante durante la fase de optimización. SIMPLIFICACION La consulta en forma normal conjuntiva puede contener predicados redundantes. Una evaluación directa de la consulta con redundancia puede llevarnos a realizar trabajo duplicado. REESTRUCTURACION El último paso en la descomposición de consultas reescribe la consulta en el álgebra relacional. Esto se hace típicamente en los siguientes paso:

1. Una transformación directa del cálculo relacional en el álgebra relacional 2. Una reestructuración de la consulta en el álgebra relacional para mejorar la

eficiencia Por claridad es costumbre representar la consulta en el álgebra relacional por un árbol del álgebra relacional, el cual es un árbol en donde una hoja representa a una relación almacenada en la base de datos y un nodo no hoja es una relación intermedia producida por una operación del álgebra relacional. La transformación de una consulta en el cálculo relacional en un árbol del álgebra relacional se puede hacer como sigue. Primero, se crea una hoja diferente para cada variable de tuplo diferente. En SQL, las hojas están disponibles de forma inmediata en la cláusula FROM. Segundo, el nodo raíz se crea como una operación de proyección

Page 57: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

involucrando a los atributos resultantes. Estos se encuentran en la cláusula SELECT de una consulta en SQL. Tercero, la calificación (WHERE) de una consulta se traduce a una secuencia apropiada de operaciones relacionales (select, join, union, etc.) yendo de las hojas a la raíz. La secuencia se puede dar directamente por el orden de aparición de los predicados y operadores.

3.2. Estrategias Procesamiento Consultas Distribuidas

Reducción para fragmentación horizontal primaria

La fragmentación horizontal distribuye una relación basada en predicados de selección. El ejemplo siguiente será usado a lo largo de esta sección.

Ejemplo 4.9. La relación E(ENO, ENOMBRE, TITULO) puede ser dividida en tres fragmentos horizontales E1, E2 y E3, definidos como sigue:

E1 = s ENO £ "E3" (E)

E2 = s "E3" < ENO £ "E6" (E)

E3 = s ENO > "E6" (E)

El programa de localización para fragmentación horizontal es la unión de los fragmentos. Aquí se tiene que:

E = E1 È E2 È E13

La relación G puede ser dividida en dos fragmentos horizontales G1 y G2 definidos como sigue:

G1 = s ENO £ "E3" (G)

G2 = s ENO > "E3" (G)

El programa de localización para G es la unión de los fragmentos. Aquí se tiene que:

G = G1 È G2

El árbol genérico se presenta en la Figura 4.10.

Page 58: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

Figura 4.10. Arbol genérico para el ejemplo 4.9.

La fragmentación vertical distribuye una relación de acuerdo a los atributos de proyección. Dado que el operador de reconstrucción para la fragmentación vertical es la junta, el programa de localización para una relación fragmentada verticalmente consiste de la junta de los fragmentos sobre el atributo común. Ejemplo 4.12. Considere la relación E dividida en dos fragmentos verticales donde el atributo ENO sirve como atributo común. E1 = P ENO,ENOMBRE (E) E2 = P ENO,TITULO (E) El programa de localización es E = E1 > < E2 ¨ La reducción de consultas sobre fragmentos verticales se hace determinando relaciones intermedias inútiles y eliminando los subárboles que las producen. Las proyecciones sobre fragmentos verticales que no tienen atributos en común con los atributos de proyección (excepto la llave de la relación) producen relaciones inútiles aunque probablemente no vacías. Dada una relación R definida sobre los atributos A = { A1, A2, ..., An }, la cual se fragmenta verticalmente como Ri = P A� (R), donde A� Í A, la regla para determinar relaciones intermedias inútiles se puede formular como sigue: Regla 3: P D,K (R) es inútil si el conjunto de atributos de proyección D no está en A�. Ejemplo 4.13. Considere de nuevo la relación E dividida en fragmentos verticales como en el Ejemplo 4.12. Considere también la siguiente consulta en SQL: SELECT ENAME

Page 59: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

FROM E E1 = P ENO,ENOMBRE (E) E2 = P ENO,TITULO (E) La consulta genérica equivalente se presenta en la Figura 4.13a. Conmutando la proyección con la junta, se puede ver que la proyección sobre E2 es inútil dado que ENOMBRE no está en E2. Por lo tanto, la proyección necesita aplicarse únicamente a E1, como se presenta en la Figura 4.13b.

3.2.1. Arboles de Consultas

3.2.2. Transformaciones Equivalentes Consultas Distribuidas

3.2.3. Métodos Ejecución del Join

3.3. Optimización de Consultas Distribuidas

3.3.1. Optimización Global Consultas Distribuidas

3.3.2. Optimización Local Consultas Distribuidas

4. Manejo de transacciones Las transacciones de base de datos reflejan transacciones reales promovidas por eventos como la compra de un producto, la inscripción a un curso o la realización de un depósito en una cuenta de cheques.

4.1. Transacciones Conceptos

Page 60: Apuntes de Bases de Datos Distribuidas

Manual para la materia de Bases de Datos Distribuidas. Elaborado por Lic. Julio Ismael González Téllez

4.1.1. Estructura de Transacciones 4.1.2. Ejecución Transacciones Centralizada Distribuida 4.1.3. Estructura de transacciones 4.2. Control de Concurrencia 4.2.1. Serialización de Transacciones 4.2.2. Algoritmos de Control de Concurrencia 4.2.2.1. Basados en Bloqueo. 4.2.2.2. Basados en Estampas de Tiempo 4.2.3. Pruebas Validación Optimistas 4.2.4. Disciplinas del Interbloqueo prevención detección eliminación y recuperación

4.3. Confiabilidad 4.3.1. Conceptos Básicos de Confiabilidad 4.3.2. Protocolos Redo Undo 4.3.3. Puntos de Verificación checkpoints 4.3.4. Protocolo 2PC de Confiabilidad Distribuida