manejo de fragmentación y replicación transparente en

135
INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS ESTADO DE MÉXICO MANEJO DE FRAGMENTACIÓN Y REPLICACIÓN . TRANSPARENTE EN BASES DE DATOS RELACIONALES DISTRIBUIDAS TESIS PARA OPTAR EL GRADO DE MAESTRO EN CIENCIAS COMPUTACIONALES PRESENTA FRANCISCO JAVIER FLAMENCO SANDOVAL Asesor: Dr. JUAN FRANCISCO CORONA B. Comité de Tesis: Dr. JESÚS SÁNCHEZ VELÁZQUEZ MC. FRANCISCO CAMARGO SANTACRUZ Jurado: Dr. JESÚS SÁNCHEZ VELÁZQUEZ Presidente MC. FRANCISCO CAMARGO SANTACRUZ Secretario Dr. JUAN FRANCISCO CORONA BURGUEÑO Vocal Atizapán de Zaragoza, Edo. Méx., Diciembre de 1996

Upload: others

Post on 11-Nov-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Manejo de fragmentación y replicación transparente en

INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS ESTADO DE MÉXICO

MANEJO DE FRAGMENTACIÓN Y REPLICACIÓN . TRANSPARENTE EN BASES DE DATOS

RELACIONALES DISTRIBUIDAS

TESIS PARA OPTAR EL GRADO DE MAESTRO EN CIENCIAS COMPUTACIONALES

PRESENTA

FRANCISCO JAVIER FLAMENCO SANDOVAL

Asesor: Dr. JUAN FRANCISCO CORONA B.

Comité de Tesis: Dr. JESÚS SÁNCHEZ VELÁZQUEZ MC. FRANCISCO CAMARGO SANTACRUZ

Jurado: Dr. JESÚS SÁNCHEZ VELÁZQUEZ Presidente MC. FRANCISCO CAMARGO SANTACRUZ Secretario Dr. JUAN FRANCISCO CORONA BURGUEÑO Vocal

Atizapán de Zaragoza, Edo. Méx., Diciembre de 1996

Page 2: Manejo de fragmentación y replicación transparente en

~INl!DiC!c. IOif riij~~úll.S> ........................................................................................................................... 9

~ ilNlffiO!t>~CC.!ÓINl ............................................................................................................................... 10

2 CONIDTO ijflNlf!K<úíJL ................................................................................................................... 13

2.1 LOS SISTEMAS DISTRIBUIDOS ...................................................................... 13 2.1.2 Generalidades .......................................................................................... 14 2.1.3 Objetivos en el Diseño de Sistemas Distribuidos .............. 15 2.1.4 El Subsistema de Comunicación .................................................. 16

2.1.4.l Parámetros de Desempeño ....................................................... 16 2.1.4.2 Requerimientos de Desempeño ............................................... 17 2.1.4.3 Requerimientos de Confiabilidad ............................................ 17 2.1.4.4 Tipos de Redes .............................................................................. 17 2.1.4.5 Los Paquetes .................................................................................. 18 2.1.4.6 El Trabajo entre Redes ............................................................... 18

2.1.5 Comunicación entre Procesos ....................................................... 18 2.1.5.1 El Paradigma Cliente Servidor ................................................. 19 2.1.5.2 Llamadas a Procedimientos Remotos ..................................... 19

2.1.6 La Coordinación entre Procesos ................................................ 19

2.1.7 Transacciones ........................................................................................ 20 2.1.8 Tolerancia a Fallas .............................................................................. 21

2.2 LOS SISTEMAS MANEJADORES DE BASES DE DATOS ...................... 21 2.2.1 Objetivos .................................................................................................... 22

2.2.2 Abstracción de Datos ......................................................................... 22

2.2.3 Modelos de Datos ................................................................................. 23 2.2.3.1 Modelos Lógicos de Datos Basados en Objetos ................... 23 2.2.3.2 Modelos Lógicos de Datos Basados en Registros ................ 23 2.2.3.3 Modelos Físicos de Datos ........................................................... 24

2.2.4 Instancias y Esquemas ...................................................................... 24

2.2.5 Independencia de Datos ................................................................. 24 2.2.6 Lenguajes de Definición de Datos ............................................ 25

2.2. 7 Lenguajes de Manipulación de Datos ..................................... 25 2.2.8 Manejadores de Bases de Datos ................................................. 25

.3 l05 515TCMA5 f ílM fl MfU1tJO Dt !NfOW<MílCIÓN bk!5DC rlNALE.5 DC l05 '°' J dlJ L05 so· 1 .................................................................................................................... 26

3.1 SISTEMAS BASADOS EN ARCHIVOS .................... : ....................................... 26 3.2 BASES DE DATOS JERÁRQUICAS Y DE RED ........................................... 26 3.3 LAS BASES DE DATOS RELACIONALES ..................................................... 27

4

Page 3: Manejo de fragmentación y replicación transparente en

Ftl<IINII

3.4 MODELOS DE BASES DE DATOS DISTRIBUIDAS Y EXTENDIDAS ............................................................................................................. 28

3.5 BASES DE DATOS ORIENTADAS A OBJETOS ......................................... 29

3.6 HIPERTEXT0 .............................................................................................................. 29

3. 7 BASES DE DATOS INTELIGENTES ............................................................... 29

3.8 TRABAJOS PARA ENCAUSAR LA INVESTIGACIÓN DE SISTEMAS MANEJADORES DE BASES DE DATOS EN LOS 90's ....................................................................................................................... 30

3.8.l Manifiesto de los Sistemas de Bases de Datos de la Tercera Generación ................................................................. 30

3.8.2 Manifiesto de los Sistemas de Bases de Datos Orientados a Objetos ........................................................................ .32

3.8.3 El Grupo de Trabajo de la National Science Foundation ............................................................................................. 32

~ l05 SI.STU1úllS MANrJ~bO~f.5 IM:: ~~5r.5 bf b~T05 DI.SnUlf''JlbOS ....................... .34

4.1 VENTAJAS Y DESVENTAJAS .............................................................................. .34

4.2 ARQUITECTURA DE UNA BASE DE DATOS DISTRIBUIDA ............................................................................................................ 3 5

4.2.1 Arquitectura de un Sistema Manejador de Bases Datos Distribuidas ................................................................................... 39

4.2.2 Arquitectura de los Sistemas Multi Base de Datos ......... 42

4.2.3 El Directorio Global... .......................................................................... 43

4.3 TRANSPARENCIA ..................................................................................................... 44

4.3.l Transparencia de Red ........................................................................ 45

4.3.2 Transparencia de Replicación ....................................................... 45 4.3.3 Transparencia de Fragmentación ............................................... 45

4.4 DISEÑO DE BASES DE DATOS DISTRIBUIDAS ..................................... 45

4.4. l El Diseño Ascendente y Descendente del Esquema Global ......................................................................................... 46

4.4.2 Diseño de Fragmentación ................................................................ 47

4.4.3 Diseño de Localización de Fragmentos .................................. 48

4.5 PASO DE CONSULTAS GLOBALES A CONSULTAS EN FRAGMENTOS ........................................................................................................... 48

4.6 ESTRATEGIAS DE ACCES0 ................................................................................ 56

4.6.l Modelado de Consultas para su Análisis ................................ 57

4.6.2 Modelado para Optimar Consultas ...................................... : ..... 61 4. 7 ADMINISTRACIÓN DE TRANSACCIONES ................................................. 63

4.7.l Objetivos en la Administración de Transacciones ........... 64

5

Page 4: Manejo de fragmentación y replicación transparente en

YIÍQINl1

4. 7.2 Las Transacciones Distribuidas ................................................... 65

4.8 CONTROL DE CONCURRENCIAS ................................................................... 69

4.8.1 Candados a dos Fases ......................................................................... 70 4.8.2 Detección y Prevención de Abrazos Mortales ..................... 71

4.8.3 Estampillas de Tiempo ....................................................................... 71

4.8.4 Método Optimista para el Control de Concurrencias .... 72

4. 9 ADMINISTRACIÓN ................................................................................................ 72

4.9.1 Catálogo ..................................................................................................... 73 4.9.1.1 Contenido de los Catálogos ...................................................... 73 4.9.1.2 Distribución de los Catálogos ................................................... 73 4.9.1.3 Nombre de Objetos y Administración

Autónoma ....................................................................................... 74 4.10 CONCLUSIONES DEL CAPÍTULO 4 ................................................ 74

5 ~lc:W(~rAJM!lc~TrAl5 fdlJfüí~ (Ou'!J-SiTOC\\JJm \\JJ~ 5!S>UT1\rill í\\tfll~lCJIAJ!DJO~ IO)IE DrAISilr.5 ble brAIT05 bl5Tr<.l~lb0 .............................................................................................................. 11

5.1 LA ARQUITECTURA CLIENTE SERVIDOR ................................................. 77 5.2 LENGUAJES TRANSACCIONALES ................................................................... 80

5.2.1 El Nombre de los Objetos en Transact-SQL.. ....................... 80

5.2.2 Lenguaje de Definición de Datos ................................................. 80

5.2.3 Lenguaje de Manipulación de Datos .......................................... 81

5.2.4 Lenguaje de Control... ........................................................................ 82

5.2.5 Instrucciones para el Control de Flujo ................................... 83

5.2.6 Declaración de Variables .................................................................. 84

5.2. 7 Procedimientos Almacenados ........................................................ 84

5.2.8 Disparadores (TRIGGERS) ............................................................. 86

5.2.9 Manejo de Transacciones ................................................................. 87

5.3 HERRAMIENTAS PARA EL TRABAJO DISTRIBUID0 ........................... 88

5.3.1 Protocolo de Compromiso a Dos Fases ................................... 88

5.3.2 Manipulación de Datos Distribuidos ........................................ 89

5.3.3 Servicios de Replicación de Datos .............................................. 90

5.3.4 Open Server ............................................................................................. 91

5.3.5 Replication Server ............................................................................. : .. 93

5.3.6 Navigation Server ................................................................................. 94

5.4 CONCLUSIONES DEL CAPÍTULO 5 .................................................. 95

<í. fW<ODlleruÍTICdlJ f dü~~ ILl btSJ~~~(OIL10 lDJIE ~~ lli\ÓICl~lO ICl!E r~~~MfNT 61(1ÓN T f{ff'UCdll<C.!Ó~ TIK<~N~r ~~f~T!E'. ............................................................. 9 7

6 .1 NIVELES DE TRANSPARENCIA EN LA DISTRIBUCIÓN ................... 97

6

Page 5: Manejo de fragmentación y replicación transparente en

t'IÍQINII

6.1.l Transparencia en Aplicaciones Simples de Sólo Lectura ............................................................................................ 97

6.1.2 Transparencia en Aplicaciones Complejas de Sólo Lectura ............................................................................................ 99

6.1.3 Transparencia en Aplicaciones que Modifican Datos .... 100

6.2 MODIFICACIONES EN EL LENGUAJE DE DEFINICIÓN DE DATOS ................................................................................................................. 102

6.2. l Definición ~e Bases de Datos Fragmentada con Enfoque Descendente ........................................................................... 102

6.2.2 Definición de Bases de Datos Fragmentada con Enfoque Ascendente ............................................................................. .-.103

6.3 MECANISMOS PARA LECTURA Y ESCRITURA EN FRAGMENTOS REPUCADOS ............................................................................ 105

6.3. l Copias Sincrónicas: se lee una copia, se actualizan todas .................................................................................... 105

6.3.2 Copias Sincrónicas: lectura y actualización basadas en quórum ............................................................................. 106

6.3.3 Copias Sincrónicas: actualización de una o todas las copias, dependiendo del tipo y montq de la operación ................................................................................................... 106

6.3.4 Copias Asincrónicas: primaria actualizable, secundarias de lectura; datos no voluminosos .................. 107

6.3.5 Copias Asincrónicas: todas actualizables ............................... 107

6.3.6 Copias Asincrónicas: primarias actualizables secundarias de lectura; datos voluminosos ......................... 107

6.4 CONCLUSIONES DEL CAPÍTULO 6 .................................................. 107

71 lM~r.lflJo f illi\W'l!crí\[IN!r~c~ó~ ffj¡[c 'lllNI rUOINlffO~ ~lO!g}ríll ffj¡[é rD>tSif!K\ilD~(!Ó~ ............ 109

7.1 DISEÑO DEL SISTEMA ......................................................................................... 109

7.1.l Instrucciones a Procesar ................................................................ 110

7.1.2 Catálogo de Datos ............................................................................... 112

7.1.3 Bases de Datos para Implementar Ejemplos ...................... 114 ·

7.2 DISEÑO E IMPLEMENTACIÓN DE MECANISMOS PARA EL MONITOR GLOBAL DE DISTRIBUCIÓN ............................................. 115

7.2.l Componentes del Monitor Global de Transacciones ...... 115

7.2.2 Receptor de Transacciones Globales ........................................ 116

7.2.3 Analizador de Semántica de Transacciones Globales .... 118

7.2.4 Manejador del Lenguaje de Definición de Datos ............. 119

7

Page 6: Manejo de fragmentación y replicación transparente en

rtíQIHtl

7.2.5 Módulo de Descomposición de Transacciones ................. 120

7 .2.6 Optimizador de Consultas .............................................................. 121

7.2. 7 Calendarizador de Transacciones Globales .......................... 121

7.2.8 Despachador Global... ......................................................................... 122

7.3 RUTINAS EMPLEADAS EN LA IMPLEMENTACIÓN .............................. 122

7.3.1 Definiciones y Encabezados ............................................................ 122

7.3.2 Conexiones al Monitor Global y a Nodos ............................... 124 7.3.3 Consultas a Servidores SQL. .......................................................... 124

7.3.4 Modificacio~es en el Leguaje de Definición de Datos .... 125 7.3.5 Protocolo de Compromiso a Dos Fases ................................... 126

7.3.6 Lecturas y Escrituras Distribuidas ............................................ 127

7.4 EVALUACION DEL SISTEMA ............................................................. 129 7.5 COMPARACIÓN CON OTRAS FORMAS DE DISTRIBUIR

LOS DATOS .................................................................................. 130 7.6 PROPUESTAS PARA FUTURAS INVESTIGACIONES ...................... 131 7.7 CONCLUSIONES DEL CAPÍTULO 7 ............................................... 131

6 {01Nltl~5~ÓINl .................................................................................................................................... 133

si iylili:)l!(()qjlf(,~u,[h1! .................................................................................................................................. 13s

\\Ji~ .05ill~(~O [íllt. '.1>1(~11.«l~J ...................................................................................................................... l 3 7

8

Page 7: Manejo de fragmentación y replicación transparente en

Fig. 4.1

Fig. 4.2 Fig. 4.3 Fig. 4.4 Fig. 4.5

Fig. 4.6 Fig. 4.7 Fig. 4.8 Fig. 4.9 Fig. 4.10 Fig. 4.11 Fig. 4.12 Fig. 4.13 Fig. 4.14 Fig. 4.15 Fig. 4.16 Fig. 4.17 Fig. 4.18 Fig. 4.19 Fig. 5.1 Fig. 6.1 Fig. 6.2 Fig. 6.3

Fig. 7.1 Fig. 7.2 Fig. 7.3 Fig. 7.4

Fig. 7.5 Fig. 7.6

Fig. 7.7 Fig. 7.8

YA<UNII

Alternativas de Implementación en Sistema Manejador de Bases de Datos Distribuidas.............................................................................................................. 36 Arquitectura Referencial para una Base de Datos Distribuidas............................. 37 Fragmentos e Imágenes Físicas para una Relación Global................................... 38 Arquitectura de Esquemas para una un Base de Datos Distribuida.................... 39 Esquema Funcional de un Sistema Manejador de Bases de Datos Distribuido............................................................................................................... 40 Componentes de un Sistema Manejador de Bases de Datos Distribuido........... 41 Arquitectura de Sistemas Multi Base de Datos con ECG....................................... 42 Arquitectura de Sistemas Mulli Base de Datos sin ECG (Litwin. 1998) ................... 43 Componentes de un Sistema Multi Base de Datos................................................... 44 Direcciones en el Diseño de la Distribución............................................................... 46 Árbol de Operaciones..................................................................................................... 50 Join no Distribuido............................................................................................................ 63 Join Distribuido.................................................................................................................. 63 Uniones paciales.............................................................................................................. 63 Comunicación en el Protocolo de Compromiso a Dos Fases............................... 67 Transacciones Distribuidas con Estructura Centralizada ......................................... 68 Transacciones Distribuidas con Estruchxa Jeráquica ............................................. 68 Transacciones Distribuidas con Estructura Linear ...................................................... 68 Transacciones Distribuidas con Estructura Distribuida .............................................. 68 Funciones de Comunicación Cliente - Servidor en Sybase .................................... 79 Aplicación de sólo Lectura en diferentes Niveles de Transparencia................... 98 Aplicación SUPOFPART con Diferentes niveles de Transparencia................................... 99 Aplicación de Modificación de Datos con Diferentes Niveles de Distribución Transparente................................................................................................... 101 Componentes del Sistema............................................................................................. 109 Catálogo Global de la Base de Datos........................................................................ 112 Ejemplo para mostrar la Implementación.................................................................. 115 Propuesta para la Implementación de un Monitor Global de Transacciones................................................................................................ 116 Receptor de Transacciones........................................................................................... 117 Receptor. Analizador de Semántica de Solicitudes Globales, Manejador de LOO y Catálogo Global....................................................................... 118 Componentes Relacionados con el Calendorizador de Transacciones............ 121 Esquema de la Programación del Monitor Global de Distribución...................... 123

9

Page 8: Manejo de fragmentación y replicación transparente en

El progreso que ha presentado la tecnología de redes en los últimos años. al igual que la

comercialización de bases de datos de tipo relacional ha sido dramático. La combinación de

ambas tecnologías. y el avance en las investigaciones sobre sistemas distribuidos han dado

origen a las Bases de Datos Relacionales Distribuidas. caracterizadas por dos propiedades

principales [Belford.1982):

• La creación de subconjuntos de bases de datos en varias computadoras. que pueden

encontrarse. o no. en lugares geográficamente lejanos. Con la capacidad de accesar y

manipular todos los subconjuntos.

• Las computadoras están enlazadas por una red. Todos los datos son administrados por un

solo Sistema Manejador de Bases de Datos, y los usuarios del sistema no tienen porque

percatarse de la distribución del sistema.

Ya desde 1988 Stonebraker [Stonebraker. 1988) anunciaba que las bases de datos

centralizadas se.rían obsoletas dentro de l O años. sin embargo en la actualidad aún son

populares y se emplean tanto en pequeñas como en grandes empresas.

El paso de Sistemas Manejadores de Bases de Datos Centralizados a Sistemas Manejadores de

Bases de Datos Distribuidas (SMBDD) en su forma comercial ha sido lento y parcial. Dos de las

principales causas de este retardo han sido la deficiencia en las líneas de comunicación y la

falta de transparencia en fragmentación. replicación y localización de los datos. La falta de

transparencia en sistemas comerciales deja en manos del usuario una serie de decisiones

complejas. que de no ser tomadas adecuadamente implican reingeniería y costos

adicionales.

Tanto la aparición de nuevas tecnologías de redes más confiables. como la de productos que

permiten mayor transparencia en el uso de replicas y de fragmentación, auguran una pronta

implementación masiva de SMBDD a muy corto plazo.

Este trabajo cubre los siguientes objetivos:

• Presentar algunos conceptos y técnicas especificas que las investigaciones en el área de

Sistemas Distribuidos han aportado para el desarrollo de SMBDDs.

• Hacer un análisis del estado del arte en materia de Manejadores de Bases de Datos.

10

Page 9: Manejo de fragmentación y replicación transparente en

• Presentar los diseños clásicos de Sistemas Manejadores de Bases de Datos Distribuidas y

proponer la manera como debe ser implementados. en futuras investigaciones.

• Implementar una parte del prototipo de tal forma que se provea fragmentación y

replicación transparente.

Para lograr los objetivos se han desarrollado los siguientes capítulos:

Capítulo 2. Este capítulo se divide en dos partes. la primera se dedica a los Sistemas

Distribuidos y la Segunda a los Sistemas Manejadores de Bases de Datos. En la primera parte se

hace una presentación general de los conceptos relevantes en las áreas de Sistemas

Distribuidos: visión general del área. el subsistema de comunicación. características con que

debe contar un sistema de esta clase y algunas técnicas de comunicación entre procesos. La

segunda parte, dedicada a los Sistemas Manejadores de Bases de Datos. menciona sus

objetivos. define sus características y se mencionan los principales modelos.

Capítulo 3. Considera los principales rumbos que ha tomado el manejo de información en las

últimas tres décadas y las líneas de investigación que se trabajan en la actualidad. En este

capítulo se pueden encontrar algunas referencias para ubicar el contexto de las

investigaciones en el área de Bases de Datos.

Capítulo 4. El capítulo, es una descripción de los modelos clásicos de SMBDDs. Los conceptos

principales en el área de SMBDD son desarrollados en 9 temas: ventajas y desventajas.

arquitectura. transparencia. diseño, consultas. acceso. administración de transacciones.

control de concurrencias y administración del sistema.

Capítulo 5. Este capítulo se divide en tres partes principales. La primera se refiere a la

arquitectura cliente servidor en los Sistemas Manejadores de Bases de Datos (SMBD). La

segunda presenta la forma en que trabajan los servidores SQL. Por último se describen algunas

herramientas que suelen proveerse con los servidores SQL para permitir la distribución del

sistema.

Capítulo 6. Marca tres aspectos que debe cubrir la transparencia de fragmentación y

replicación en un SMBDD: Transpaencia para el programador de las apUcaciones.

transparencia en el lenguaje de definición de datos y transparencia en los mecanismos de

lectura y escritura.

11

Page 10: Manejo de fragmentación y replicación transparente en

Capítulo 7. Trata sobre el diseño e implementación de un módulo de replicación y

fragmentación transparente. que cubre la problemática planteada en el capítulo 6. Primero

se expone el diseño del sistema y se presentan algunas tablas que sirven de ejemplo para

entender su funcionamiento. Posteriormente se describe cada uno de los componentes del

sistema y por último se presentan algunas de las rutinas que sirvieron para la implementación

de un prototipo de sistema distribuido.

Capítulo 8. Presenta resultados y conclusiones de esta investigación.

12

Page 11: Manejo de fragmentación y replicación transparente en

los servicios de información que proporcionan las computadoras. nacieron en forma

centralizada. es decir. en un principio las computadoras trabajaban para un sólo usuario.

Posteriormente se inició el trabajo con tiempo compartido y después el trabajo con pequeñas

redes. de tal forma que. en poco tiempo se han transformado en sistemas distribuidos. En este

marco los sistemas distribuidos han sido de gan interés ya que se conforman por un conjunto

de computadoras. frecuentemente heterogéneas. que se comunican a través de una red y

cooperan para realizar un trabajo común [Coulouris 1994). Estos sistemas permiten compartir

recursos e información en áreas extensas conjuntando el poder de varias computadoras para

adquirir. de esta forma. mayor capacidad de procesamiento. los Sistemas Distribuidos brindan

características como escalabilidad. autonomia. transparencia y tolerancia a follas.

Por otra parte. el procesamiento de datos estructurados. en la actualidad se realiza a través

de colecciones de datos relacionados y un conjunto de programas para acceder a esos

datos. El objetivo primordial de un Sistema Manejador de Bases de Datos (SMBD) es

proporcionar un. entorno que sea a la vez conveniente y eficiente para ser utilizado al extraer

y almacenar información de la base de datos [Korth. Silberschatz 1993). La importancia de la

información en la mayoría de las organizaciones y por tanto el valor de la base de datos. ha

llevado al desarrollo de una gran cantidad de conceptos y técnicas para la gestión eficiente

de la información. Los dos temas a tratar en este capítulo son los Sistemas Distribuidos y los

Sistemas Manejadores de Bases de Datos.

2.1 LOS SISTEMAS DISTRIBUIDOS

los sistemas distribuidos permiten compartir recursos e información en áreas extensas. de modo

que se pueden utilizar varias computadoras pequeñas para resolver grandes problemas.

Desde hace más de 20 años. los investigadores en el área de Sistemas Distribuidos han

propuesto toda clase de técnicas para diseñar software distribuido. Soluciones satisfactorias

han surgido en muchas áreas. estándares han sido establecidos y en la actualidad los sistemas

distribuidos son ampliamente usados en escuelas. fábricas y empresas [Sánchez. 1995).

A continuación se presentan algunos aspectos que han influido en la investigación y desarrollo

de Sistemas de Bases de Datos Distribuidas.

13

Page 12: Manejo de fragmentación y replicación transparente en

2.1.2 Generalidades

"Un sistema distribuido consiste en una colección de computadoras autónomas unidas por

una red computacional y equipado con software de sistema distribuido. El software de

sistema distribuido le permite a las computadoras coordinar sus actividades y compartir sus

recursos de hardware. software y datos. Los usuarios de un sistema distribuido bien diseñado

deben percibir una facilidad única e integrada de cómputo a pesar de que ésta sea

implementada por muchas computadoras en diferentes lugares" [Couloris 1994).

Podemos señalar como características ideales de un sistema distribuido. las siguientes:

• Se usa un sistema de comunicación

• Ausencia de un estado global perceptible por un observador

• Sincronización del trabajo

• Los recursos se compaten

• Permiten Apertura. Capacidad de comunicación con otros equipos de diferente

arquitectura y ofrecidos por diferentes proveedores.

• Facilitan la Concurrencia.

• Proporcionan· Escalabilidad. Aumentan la capacidad de los equipos y permite añadir

nuevas computadoras al sistema sin necesidad de modificar su estructura.

• Toleran Fallas: Permiten que el sistema siga funcionando a pesar de que una computadora

no funcione o un periférico se dañe.

• Se dan en un ambiente transparente. El usuario no requiere conocer detalles sobre la

distribución del sistema.

Los primeros intentos de desarrollo de esta tecnología inicia a finales de los 70's con sistemas

de archivos distribuidos (Xerox DFSJ. y el uso de pilas de procesadores para una red de

computadoras (Cambridge Distributed Computing System). Con la llegada de las estaciones

de trabajo y minicomputadores se logran mejores interfaces gráficas y nuevos desarrollos de

software. Sin embargo, la falta de conectividad no les permite un trabajo realmente

cooperativo.

Entre los mejores trabajos de interconectividad para equipos personales encontramos los

realizados en el Centro de Investigación de Xerox Palo Alto de 1971 a 1980. los cuales

incluyen:

• El desarrollo de un servidor de archivos e impresoras para estaciones de trabajo personal.

• La primer red local de alta velocidad (La red Ethernet).

• Varios Sistemas Distribuidos de tipo experimental.

14

Page 13: Manejo de fragmentación y replicación transparente en

Desde la década de los ochentas a la fecha, la investigación y el desarrollo de sistemas

distribuidos se ha incrementado a un ritmo acelerado generando productos como Accent.

Mach, Amoeba. Argus. V-system y Chorus.

2.1.3 Objetivos en el Diseño de Sistemas Distribuidos

Para lograr las características deseables de un sistema distribuido de tal forma que faciliten la

interacción entre las personas. computadoras y programas relacionadas con él. es necesario

considerar:

la resolución de nombres. Los nombres que se asignan a los recursos u objetos de un sistema

distribuido para ofrecer sus servicios en forma transparente. deben tener un significado global

que sea independiente de la localidad. y deben ser soportados por un sistema de

interpretación de nombres que permita a los programas accesar los recursos adecuados. Uno

meta del diseño es establecer un esquema de nombres escalables con traducción eficiente y

alto grado de desempeño.

la comunlcacló·n. El desempeño y lo disponibilidad de las técnicas de comunicación usadas

paro la implementación del sistema distribuido son críticos en el funcionamiento del mismo. En

este aspecto. la meta a alcanza es hacer óptima la implementación de las comunicaciones

en el sistema. mediante un modelo de progamación de alto nivel para su uso.

Estructura del Software. La apertura se alcanzo gracias al diseño y construcción de

componentes de software con interfaces bien definidas. La abstracción de datos es una

técnica de diseño importante para los sistemas dislribuidos. Los servicios pueden ser vistos

como los administradores de objetos de un tipo de datos; la interfaz a un servicio puede ser

vista como un conjunto de operaciones. En este caso. lo meta es estructurar un sistema en el

que se puedan introducir nuevos servicios. para trabajar en conjunto con los ya existentes. sin

duplicar elementos de los servicios establecidos.

Carga de Trabajo por Nodo. Uno de las metas en el diseño es repartir los procesos para que las

comunicaciones y el procesamiento se realicen en forma óptima.

Mantenimiento de la consistencia. Existen varios problemas relacionados con la consistencia

que surgen al trabajar con sistemas distribuidos. El mantenimiento de la consistencia puede

ser costoso y lo meta del diseño es el equilibrio entre consistencia y costo razonable.

15

Page 14: Manejo de fragmentación y replicación transparente en

2.1.4 El Subsistema de Comunicación

En esta sección veremos en una forma general el subsistema de comunicación. Este

subsistema se conforma por varios componentes de hardware (interfaces. ruteadores.

switches ... ) y software (protocolos y manejadores de comunicación). Todos estos

componentes forman la red de comunicaciones.

2.1.4.1 Parámetros de Desempeño

Entre los parámetros que afectan el desempeño de la red tenemos aquellos relacionados con

la velocidad con la que un mensaje es transmitido entre dos computadoras conectadas a

través de la red. Estos parámetros son la latencia y la tasa de transferencia de datos punto a

punto.

latencia. Es el tiempo requerido para transmitir un mensaje vacío entre dos computadoras.

Esta medida involucra tanto al acceso del transmisor y del receptor a la red. como a la red

misma. La latencia se determina principalmente por el modo de trabajo del software y rutinas

de retardo para el acceso.

la tasa de transferencia de datos punto a punto es la velocidad a la cual los datos pueden ser

transmitidos entre dos computadoras en la red, una vez que la transmisión fue iniciada. La

tasa de trasferencia esta determinada principalmente por las características físicas de la red y

se mide en bits por segundo.

Siguiendo estas definiciones. el tiempo requerido por una red para transmitir un mensaje entre

dos computadoras es:

Tiempo de transferencia de mensaje= latencia + longilud / tasa de lransferencia de dalos (2. 1 )

El ancho de banda de una red es una medida que nos indica el total del volumen de tráfico

que puede ser enviado a través de la red en un tiempo dado. En muchas tecnologías se

utiliza toda la capacidad de transmisión para enviar cualquier mensaje y el ancho de banda

es igual a la tasa de transferencia de datos. Pero en la mayoría de las redes amplias se

pueden mandar varios mensajes a través de varios canales a la vez. El desempeño de la red

se deteriora en condiciones de tráfico. cuando hay muchos mensajes en la red al mismo

tiempo. El tráfico. la latencia. la tasa de transferencia y el ancho de banda de una red

dependen de la tecnología de red empleada.

16

Page 15: Manejo de fragmentación y replicación transparente en

2.1.4.2 Requerimientos de Desempeño

Los accesos tanto a los discos. como a la red son muy lentos en comparación con la

velocidad de procesamiento del CPU. Es por esto que normalmente el procesador puede

trabajar con varias tareas a la vez. mientras espera la llegada de nuevos mensajes o

respuestas. Es deseable que los accesos a la red sean proporcionales a los de un disco. lo cual

no siempre es posible debido a la limitación en el ancho de banda de las redes y tasa de

transferencia. aunado a la sobrecarga que acompaña a los mensajes en la red. Actualmente

los disco trabajan con un tiempo de acceso de entre 1 O y 20 milisegundos, por lo que una

petición de lectura no puede ser menor a este tiempo teniendo latencias de 5 milisegundos y

tasas de 200 kb/s que incluyan información para la transmisión de los mensajes.

2.1.4.3 Requerimientos de Confiabilidad

El sistema distribuido en sí. debe ser confiable a pesar de que la red tenga problemas. El

sistema puede requerir comunicación confiable. o bien. implementar mecanismos que

detecten fallas y corrijan el problema mediante software.

2.1.4.4 Tipos de Redes

Las redes pueden ser divididas en dos grandes clases:

Redes de Área Local: conduce mensajes a una velocidad relativamente alta entre cualquiera

de las computadoras conectadas a un medio de comunicación común. como fibra óptica o

cable coaxial. localizadas en el mismo edificio o campus. El medio provee conexión directa

entre todas las máquinas por lo que no se requiere asignar rutas a los mensajes. En este tipo

de redes la latencia es baja a excepción de las ocasiones en que el tráfico es muy grande.

En la actualidad la tasa de transferencia de las redes de área local se encuentra entre 0.2 y

100 mega bits por segundo.

Redes de Álea Amplia. Conduce los mensajes a una velocidad baja (la latencia típica está en

el rango de 0.1 y 0.5 segundos con una tasa de transferencia de 20 a 500 kbits por segundo).

En este caso los mensajes se intercambian entre computadoras separadas por grandes

distancias. Cada computadora suele llamarse host y se pueden localizar en diferentes

ciudades. países o continentes. El medio de comunicación está formado por un conjunto de

circuitos de enlaces y ruteadores que manejan la red. La operación de ruteo consiste en

enviar los mensajes hacia los nodos indicados. y el tiempo total de transmisión para un

mensaje. depende de la ruta seguida.

17

Page 16: Manejo de fragmentación y replicación transparente en

la latencia y tasa de transferencia con la que trabajan actualmente las redes de área amplia

no ha cumplido satisfactoriamente los requerimientos de los sistemas distribuidos. pero se

espera un incremento de los mismos con el cambio de las redes actuales a redes ISDN

(lntegrated Sevices Digital Network) y B-ISDN que cubren velocidades desde 64 kilobits por

segundo hasta 150 megabits por segundo.

2.1.4.5 Los Paquetes

En la mayoría de las aplicaciones. las transmisiones se realizan utilizando los mensajes como

unidad de transmisión. los mensajes son unidades de longitud arbitraria. sin embargo, para

viajar por la red deben ser divididos en paquetes. la forma simple de un paquete es una

secuencia de elementos de datos en formato binario de longitud restringida, unida a

información referente a la forma de manejar el paquete como la dirección de origen y la

dirección destino.

2.1.4.6 Trabajo entre Redes

Una característica propia de los sistemas distribuidos es la apertura. la apertura debe permitir

el empleo de diferentes tipos de redes. que formen una red integrada. a pesar de contener

dispositivos diseñados por diferentes proveedores y computadoras con arquitectura

heterogénea. Con este tipo de trabajo un sistema distribuido se puede extender a un gran

número de computadoras. la forma de unir las diversas redes es mediante ruteadores y

gateways (computadoras de propósito general que controlan y dirigen el tráfico de la red). y

añadiendo protocolos que soportan el direccionamiento y transmisión a través de una gran

red virtual.

2.1.5 Comunicación entre Procesos

Para que un proceso pueda enviar mensajes a otro. se deben poner los dalos en un formato

común para cualquier tipo de máquina. El proceso que envía los datos los debe reunir para

que se manden por bloque o paquetes. Es necesario que se consideren .las funciones de

enviar mensaje y recibir mensaje. Además es necesario saber si estas funciones han de

detener el proceso (ser bloqueante) o no (no bloqueantes). Se puede suponer que la red es

confiable. por lo cual al enviar un mensaje podemos tener la certeza de que va a llegar. o

bien, puede ser que la red sea no confiable. para lo que necesitaremos implementar

protocolos que permitan trabajar en caso de fallas.

18

Page 17: Manejo de fragmentación y replicación transparente en

2.1.5.1 El Paradigma Cliente Servidor

El empleo de un modelo de comunicación cliente servidor. requiere de un protocolo

petición-respuesta; estos protocolos soportan tres operaciones fundamentales:

• RealizarOperación (PuertoServidor; mensaje_de_petición; mensaje_de_respuesta). Esta

operación manda una petición al servidor y recibe su respuesta. Puede ser implementada

usando una operación de envío de mensaje y otra de recepción. Esta operación bloquea

al cliente que la ejecuta hasta recibir respuesta. pero se acostumbra a utilizar

temporizadores para evitar bloqueos indefinidos por fallas en la red.

• ObtenerPetición (PuertoServidor; Mensaje): Esta operación la realiza el servidor para recibir

peticiones de los clientes.

• EnviarRespuesta (PuertoCliente; Mensaje): Después de recibir una petición el servidor la

procesa y envía su respuesta al cliente con esta operación.

2.1.5.2 Llamadas a Procedimientos Remotos

Las RPC son formas de implementar protocolos de comunicación. El objetivo de estas

instrucciones es dar un nivel más alto a la semántica para comunicar a los procesos. Entre los

principales aspectos de la semántica de un RPC se encuentran:

• Un RPC tiene una sintaxis parecida a la de una llamada local de procedimiento. pero la

ejecución de este procedimiento es en otra computadora.

• Al definir un RPC se especifican parámetros de entrada y de salida. Los parámetros de

entrada son enviados al servidor. mandando los valores de los argumentos en el mensaje

de petición. Los parámetros de salida son enviados al cliente en respuesta a su petición y el

valor es guardado en la variable especificada por un parámetro.

• Un RPC no puede utilizar las variables globales del proceso origen. pues se ejecuta en un

ambiente diferente.

• Los argumentos de un RPC y los resultados no pueden incluir estructuras de datos que

contengan apuntadores a localidades de memoria.

2.1.6 La Coordinación entre Procesos

La noción de tiempo es difícil de trabajar en los sistemas. pues cada máquina tiene su propio

reloj físico. Generalmente se trabaja con relojes lógicos. los cuales se basan en relaciones

"que sucedió antes" para dar un orden a los eventos.

El uso de estampillas de tiempo es un método diseñado por Leslie Lamport [Lamport1978] con

el cual se permite establecer un orden de eventos gracias a una relación de precedencia. En

19

Page 18: Manejo de fragmentación y replicación transparente en

este caso el reloj lógico asigna un valor a cada evento que es considerado como la hora. o el

tiempo. en el cual dicho evento ocurrió. Las estampillas se pueden implementar de diferentes

formas. por ejemplo:

• Cada proceso Pi va a administrar un reloj local hi.

• Todos los mensajes emitidos por Pi son sellados por el valor del número del proceso y del

reloj local.

• El comportamiento de Pi. dado un reloj local hi es el siguiente:

a) Si Pi recibe un mensaje (mensaje, hora,. j) de Pj entonces hi <- max(hj,hi)+ 1

b) Si envía un mensaje (mensaje. hora1.i) entonces hi <- hi + 1 antes de enviar el mensaje

y se considera como la hora en que se envió el mensaje.

c} hi puede ser incrementado por eventos internos. pero no es necesario si sólo nos

interesa la comunicación.

Para lograr control de concurrencias se han implementado algoritmos de exclusión mutua y

de elección que pueden o no hacer uso de relojes físicos o lógicos. Existen tres maneras de

implementar el control de concurrencias en sistemas distribuidos: Candados. control optimista

y estampillas.

2.1. 7 Transacciones

Las transacciones en los sistemas distribuidos pueden involucrar más de dos computadoras y

pueden ser planas o anidadas. Un protocolo de acuerdo atómico es un procedimiento usado

para un grupo de servidores involucrados en una transacción distribuida. que permite que

todos los servidores realicen una misma transacción o que la transacción sea rechazada. El

protocolo de compromiso a dos fases es un ejemplo de implementar transacciones

distribuidas. También juegan un papel importante para este tipo de transacciones el control

de concurrencia y el orden que establecen los relojes lógicos.

Las transacciones con datos replicados deben proveer transparencia asegurando que cada

copia guarde un orden serial. Es decir. que a pesar de ejecutar transacciones concurrentes

cada copia de datos debe tener el mismo resultado que la ejecución serial (una tras otra) de

las transacciones. Una forma de lograr esto puede ser~I permitir leer datos de cualquier

copia. pero escribir en todas las replicas llllil~ión. sin embargo esto no siempre es

posible. Ot.Ot 30

-..... 20

Page 19: Manejo de fragmentación y replicación transparente en

2.1.8 Tolerancia a Fallas

Las operaciones que trabajan en línea requieren soportar las fallas del hardware: este es uno

de los objetivos de los sistemas distribuidos. La tolerancia a fallas abarca dos aspectos: la

descripción de las características de la falla y la forma de ocultar la falla. Existen varios tipos

de fallas en los sistemas distribuidos. entre ellas podemos citar las fallas de paro y las fallas

Bizantinas. Las primeras se dan cuando uno de los componentes del sistema deja de trabajar

y el segundo. cuando el funcionamiento de algunos componentes es contradictorio con los

demás. Para cubrir las fallas se puede hacer uso de una jerarquía o de trabajo en grupo.

Cada componente en un sistema de cómputo esta construido por una colección de

programas y equipo físico. algunos de los cuales pueden fallar. El diseñador del sistema debe

considerar tanto los puntos que pueden fallar. como la forma de cubrir esa falla. La

descripción de la forma en la que puede fallar un servicio es llamada su semántica de falla

(Coulouris 1994 p. 461]. El conocimiento de una semántica de falla permite diseñar otros

servicios capaces de cubrir las fallas.

Para cubrir las posibles fallas en un sistema se utilizan dos modelos. uno enfocado a una

organización jerárquica y otro basado en el grupo. El encubrimiento jerárquico se refiere a

que los servidores dependen de niveles de servicio. El servicio de más alto nivel debe cubrir las

fallas de los servidores de menor nivel. Por su parte. el encubrimiento de grupo considera que

si un servidor cae. el resto de los servidores del grupo pueden realizar su función.

Otro aspecto a considerar es la recuperación ante las fallas. En el punto 4.7.2 se expone

como funciona la tolerancia a fallas y la recuperación en los SMBDs.

2.2 LOS SISTEMAS MANEJADORES DE BASES DE DATOS

Un Sistema Manejador de Bases de Datos (SMBD) consiste en una colección de datos

interrelacionados y un conjunto de programas para utilizar esos datos. La colección de datos.

normalmente denominada base de datos. contiene información acerca de un asunto

determinado. El objetivo primordial de una SMBD es proporcionar un entorno que sea a la vez

conveniente y eficiente para ser utilizado al extraer y almacenar información de la base datos

[Korth. Silberschatz 1993].

Los SMBD surgen para administrar grandes bloques de información. la cual consta tanto de la

generación de una estructura para el almacenamiento. como de la provisión de mecanismos

21

Page 20: Manejo de fragmentación y replicación transparente en

para insertar. modificar o eliminar datos. Además. debe mantener seguridad en la

información almacenada. pese a caídas del sistema o intentos de acceso no autorizados.

2.2.l Objetivos

• Evitar redundancia e inconsistencia. A diferencia de la programación con archivos planos.

cuando se utiliza un SMBD los datos son almacenados en un sólo lugar. donde pueden ser

consultados o actualizados por cualquier programa o aplicación.

• Facilitar acceso a los datos. Un SMBD debe ser capaz de brindar en forma rápida y

eficiente consultas relacionad.as con los datos que posee a pesar de que la consulta

especifica no esté previamente diseñada. Es decir. permiten la recuperación sencilla de

datos para uso general.

• Relacionar diversos Datos. Dado que los datos se almacenan en un sólo lugar y con un

formato predefinido. es posible realizar relaciones entre ellos.

• Permitir Acceso Concurrente. El SMBD debe permitir a varios usuarios trabajar con datos

comunes y realizar actualizaciones que den una visión global consistente.

• Asegurar la integridad de los datos. La seguridad en el SMBD puede ser controlada en base

a los usuario~. permitiendo o negando información según la identidad del usuario.

• Crear un ambiente Seguro. Al diseñar una base de datos. el SMBD puede implementar

restricciones que aseguren la integridad de los datos según un diseño predeterminado y

flexible.

2.2.2 Abstracción de Datos

El SMBD debe ser capaz de proporcionar a los usuarios una visión abstracta de los datos. Es

decir. debe esconder ciertos detalles sobre el modo de almacenamiento y su mantenimiento.

Sin embargo. para que el sistema sea manejable. los datos se deben extraer eficientemente.

Para esconder la complejidad del sistema al usuario se utilizan diversos niveles de abstracción

que simplifican la interacción usuario - sistema.

La arquitectura para estandarización de SMBD ANSI/SPARC [Tsichritzis and Klug. 1978) se basa

en la organización de los datos y propone tres niveles para el tratamiento de los datos:

• Nivel Físico. Este nivel es el más bajo de abstracción y describe cómo se almacenan

realmente los datos. Aquí se describen en detalle las estructuras de datos complejas del

nivel bajo.

• Nivel Conceptual. Es el siguiente nivel de abstracción y describe qué datos son realmente

almacenados en la base de datos y las relaciones que existen entre ellos. Este nivel es

22

Page 21: Manejo de fragmentación y replicación transparente en

usado por los administradores de bases de datos. quienes deben decidir qué información

se va a guardar en la base de datos.

• Nivel de Visión. Es el nivel más alto de abstracción y describe sólo una parte de la base de

datos completa. disminuyendo la complejidad del nivel conceptual que debe abarcar a

toda la base de datos. Un SMBD debe poder proporcionar varias vistas para la misma base

de datos.

2.2.3 Modelos de Datos

Los modelos de datos se utilizan para poder describir la estructura de una base de datos. Estos

son una colección de herramientas conceptuales para: describir la estructura de los datos,

representar las relaciones existentes entre ellos, generar una semántica asociada a los datos y

formular restricciones de consistencia. Los diversos modelos de datos que se han propuesto se

dividen en tres grupos: modelos lógicos basados en objetos. modelos lógicos basados en

registros y modelos físicos de datos.

2.2.3.1 Modelos Lógicos de Datos Basados en Objetos

Se utiliza para describir datos a nivel conceptual y de visión. Se caracterizan por el hecho de

proporcionar una capacidad de estructuración bastante flexible y permiten especificar

restricciones de datos explícitamente. Entre estos modelos aparecen:

• El modelo entidad-relación.

• El modelo orientado a objetos.

• El modelo binario.

El modelo entidad-relación ha ganado aceptación en el diseño y se utiliza ampliamente en la

práctica, al igual que el modelo orientado a objetos. Este último incluye muchos de los

conceptos del modelo entidad-relación, pero representa tanto código ejecutable como

datos.

2.2.3.2 Modelos Lógicos de Datos Basados en Registros

Estos modelos son usados para describir datos en los modelos conceptual y físico. A diferencia

de los basados en objetos. se usan para especificar la estructura lógica global de la base de

datos y para proporcionar una descripción a un nivel más alto de la implantación.

En este caso la base de datos está estructurada en registros de formato fijo de varios tipos.

Cada tipo de registro define un número fijo de campos y cada campo normalmente es de

longitud fija.

23

Page 22: Manejo de fragmentación y replicación transparente en

los modelos de datos basados en registros no incluyen un mecanismo para la representación

directa de código en la base de datos. En cambio. hay lenguajes por separado que se

asocian con el modelo para expresar consultas y actualizaciones. los modelos de este tipo

más aceptados son:

• Relacional

• De red

• Jerárquico

A diferencia de los modelos de red y jerárquico. el modelo relacional no utiliza punteros o

enlaces para conectar los registros. lo cual permite definir una base matemática formal.

[Korth 1993)

2.2.3.3 Modelos Físicos de Datos

los modelos físicos de datos se usan para describir datos en el nivel más bajo. A diferencia de

los modelos lógicos. hay muy pocos modelos físicos en uso. Dos de los más conocidos son:

• Modelo Unificador

• Memoria de Elementos

2.2.4 Instancias y Esquemas

La colección de información almacenada en la base de datos. en un determinado momento

en el tiempo. se llama una instancia de la base de datos. El diseño global de la base de datos

se llama esquema de la base de datos. los esquemas se cambian con poca frecuencia.

2.2.5 Independencia de Datos

La capacidad de modificar una definición de un esquema en un nivel. sin afectar la

definición de un esquema en el nivel superior, se llama independencia de datos. La

independencia de datos se puede dar en dos niveles:

Independencia Física de Datos es la capacidad de modificar el esquema físico sin provocar

que se vuelvan a escribir los programas de aplicación. En algunas ocasiones son necesarias

las modificaciones en el nivel físico para mejorar el funcionamiento.

Independencia lógica de Datos es la capacidad de modificar el esquema conceptual sin

provocar que se vuelvan a escribir los programas de aplicación. las modificaciones en el

24

Page 23: Manejo de fragmentación y replicación transparente en

nivel conceptual son necesarias siempre que se altere la estructura lógica de la base de

datos.

2.2.6 Lenguaje de Definición de Datos

Un esquema de base de datos se especifica por medio de un conjunto de definiciones que se

expresan mediante un lenguaje llamado lenguaje de definición de datos (LDDJ. El resultado

de la ejecución de sentencias LDD es un conjunto de tablas. las cuales se almacenan en un

archivo especial llamado diccionario de datos.

2.2. 7 Lenguaje de Manipulación de Datos

Un lenguaje de manipulación de datos se conforma por el conjunto de instrucciones para

poder manipular los datos. es decir: recuperarlos, insertarlos. suprimirlos o modificarlos. En los

niveles más altos del diseño del lenguaje de manipulación de datos {LMDJ se busca facilidad

de uso. mientras que en los niveles más bajos el objetivo es lograr accesos eficientes. Un (LMD)

es una herramienta que capacita a los usuarios a acceder o manipular información según un

modelo adecuado. Si el LMD especifica qué datos obtener y cómo obtenerlos. hablamos de

un LMD procedural. Si sólo especifica qué datos obtener sin indicar cómo. hablamos de un

LMD no procedural.

Una consulta es una sentencia que solicita la recuperación de información. La parte de un

LMD que implica recuperación de información es llamada lenguaje de consulta.

2.2.8 Manejadores de Bases de Datos

Un manejador de base de datos es un módulo de programas que proporciona la interfaz

entre los datos de bajo nivel almacenados en la base de datos y los programas de aplicación

y consultas hechas al sistema. Su responsabilidad son las siguientes tareas:

• Interacción con el gestor de archivos.

• Implementación de la integridad.

• Implementación de la seguridad.

• Copias de respaldo y recuperación.

• Control de concurrencias.

25

Page 24: Manejo de fragmentación y replicación transparente en

J l05 5!5T!cr'M5 rú'J~(líJ !El NINJILJO [O)[ !INJW'Omú'JC!ÓINJ [C)r,5[)¡[ rirMl[[j¡ [O)[ l05 W'J L~

l05'°' J

Alan Simon [Simon 1995) afirma que el estudio de la historia de los sistemas de información.

desde el almacenamiento en archivos. hasta la época actual es importante. porque aún en la

actualidad se hace uso de estas técnicas. Es necesario conocer el modelo con el que se está

trabajando para poder interactuar con él o para migrarlo a un sistema más eficiente. Entre los

modelos a considerar señala: modelos anteriores a los SMBD. bases de datos jerárquicas y de

redes. el modelo relacional. las bases de datos distribuidas. bases de datos orientadas a

objetos. bases de datos inteligentes. el hipertexto e hipermedia y el lenguaje de las bases de

datos.

3.1 SISTEMAS BASADOS EN ARCHIVOS

Los primeros sistemas de información almacenaban los datos en archivos que trabajaban en

forma serial. Un archivo maestro se actualizaba con un archivo de transacciones, generando

un nuevo archivo maestro. El surgimiento de los discos que permitían acceso directo tanto

para lectura como para escritura permitieron la posibilidad de realizar las 1ransacciones

directamente sobre los archivos maestros sin necesidad de regenerarlos con procesos seriales.

Los principales problemas que genera este modelo es la repetición de datos en diferentes

archivos con frecuentes inconsistencias y dificultad para compartir datos.

3.2 BASES DE DATOS JERÁRQUICAS Y DE RED

En 1968 IBM crea el lnformation Management Syslem (IMSJ con un lenguaje para el manejo de

información Data Lenguage/1 (DL/1). El modelo jerárquico en general y DL/1 en específico se

implementa mediante estructuras de árboles. con apuntadores. Una de sus desventajas es

que su esquema no corresponde al mundo real. Las bases de datos jerárquicas proveen

apuntadores entre diferentes árboles de dalos. pero el procesamiento de dalos a través de

enlaces puede ser muy complicado. Sin embargo. el modelo permite: reducir los dalos

duplicados. asociar lógicamente los datos y crear modelos del sistema de información.

Al mismo tiempo General Electric crea el sistema lntegrated Data Store (IDSJ, el cual

corresponde a un modelo de base de datos de red. La comunidad de estándares pide que

se formalice el modelo de redes y la Conference on Data Systems Languages (CODASYL)

formó el Data Base Task Group (DBTGJ el cual publica un reporte en 1969 que se actualiza en

26

Page 25: Manejo de fragmentación y replicación transparente en

1971. Una de las mayores contribuciones del modelo del DBTG fue la introducción de un LDD

y LMD. como lenguajes formales para definir y manipular respectivamente el contenido de las

bases de datos.

En contraste con las bases de datos jerárquicas. las bases de datos de red no necesitan un

nodo raíz. pero la forma de unir los datos sigue siendo mediante el uso de apuntadores.

3.3 LAS BASES DE DATOS RELACIONALES

Desde junio de 1970. el Dr. E. F. Codd publicó un documento titulado "A Relational Model of

Data for Larga Shcred Date Banks" [Codd 1970] con el cual se inicia el trabajo con modelos

relacionales para bases de datos. Entre las características más importantes del modelo. Codd

señalaba:

• Describir los datos de forma natural, sin añadir estructures para su representación en la

computadora.

• Proveer une base matemática pera el tratamiento de derivación. redundancia y

consistencia de los datos.

• Proveer independencia de los datos con respecto e su representación física.

Los puntos anteriores pretendían ayudar al desarrollador e desligarse del problema de le

estructura física de los datos. para permitirle una forma más eficiente de crear. modificar.

eliminar y consultar la información a le que hacían referencia sus programas. El elemento

básico de esta teoría fue la relación. cuya estructura resultaba familiar al trcbajcrlc como

tabla, formada por columnas y renglones: con algunas restricciones para permitir el empleo

de operaciones relacionales cuyo resultado generaba nueves relaciones. Los operadores

relacionales contaban con ciertas características como conmutatividad. distributividad y

asociatividad.

A principio de los 80' s se empezaron a comercializar algunos productos inspirados en las bases

de datos relacionales por parte de IBM. Oracle Corporation. Relational Technology. Sybase y

otras compañías. confirmando que las bases de datos relacionales podían modelar el mundo

real.

Junto con el crecimiento de las bases de datos relacionales, inicia el crecimiento de las

computadoras personales con 4 tipos de programas de aplicación básicos: procesadores de

texto. hojas de cálculo. graficadores y manejadores de bases de datos. Algunos proveedores.

como Ashton-Tate. implementaron la teoria relacional de bases de datos a productos para

27

Page 26: Manejo de fragmentación y replicación transparente en

PC. con lo que se popularizó el uso de bases de datos relacionales para actividades sencillas

como impresión de etiquetas o reportes financieros. La facilidad con la que las tablas

relacionales podían ser definidas y manejadas. dotaban de gran poder a equipos pequeños.

De esta forma las bases de datos relacionales se han empleado tanto en PC's como en

minicomputadores y Main Frames desde finales de los 80' s hasta la presente década.

3.4 MODELOS DE BASES DE DATOS DISTRIBUIDAS Y EXTENDIDAS

Dado el creciente número de computadoras y la tendencia a descentralizar la información. el

modelo relacional requiere de cierto grado de distribución. El empleo de mayor número de

equipos que atienden a menos usuarios. trae como ventajas desarrollos más adaptados a los

requerimientos en menor tiempo y la capacidad de controlar en forma local los procesos que

corresponden a cada área. Todo esto. promovido por varios esfuerzos en el área de

investigación desde 1980.

Las bases de datos distribuidas son una colección de múltiples bases de datos que están

interrelacionada:. y distribuidas en una red de computadoras. Mientras que los Manejadores

de Bases de dat9s Distribuidas son programas a través de los cuales se manejan estas bases de

datos. procurando que este manejo sea generalmente transparente al usuario [Ózsu.

Valduriez 1991). Ceri y Pelagatti [Ceri. Pelagatti 1984) distinguen dos aspectos importantes que

debe considerar un sistema de este tipo:

• La distribución. que implica que los datos no residen en la misma computadora.

• Correlación lógica. es dec¡¡., que los datos tienen algunas propiedades que los unen. de tal

forma que se pueda distinguir una base de datos distribuida (BDD) de un conjunto de bases

de datos que residen en diferentes computadoras unidas por una red.

Por lo que definen a las bases de datos distribuidas de la siguiente forma: "Una base de datos

distribuida es una colección de datos, los cuales estás distribuidos sobre las diferentes

computadoras de una red de cómputo. Cada nodo de la red tiene capacidad de

procesamiento autónomo y puede ejecutar aplicaciones locales. Cada nodo también

participa en la ejecución de por lo menos una aplicación global. la cual requiere acc.esar

datos de varios nodos usando un subsistema de comunicación".

La replicación es un mecanismo con el cual se obtienen varias copias idénticas de

información en diferentes localidades con lo cual se logra mayor disponibilidad de datos.

posibilidades de procesamiento paralelo. tolerancia a fallas y autonomía. Por otra parte la

28

Page 27: Manejo de fragmentación y replicación transparente en

fragmentación reparte la información en varias localidades. con el objetivo de ahorrar

espacio de almacenamiento en cada localidad y brindar autonomía. Una BDD debe hacer

uso de ambas técnicas para eficientar sus procesos.

Otra área de investigación promovida desde 1980 ha sido la extensión del modelo relacional

de bases de datos en respuesta a movimientos para el modelado de semántica. cuyos

investigadores exploran caminos para captar más significados que los posibles con una

estructura de base de datos relacional. las bases de datos temporales. el modelo híbrido

relacional-orientado a objetos y otros modelos se basan en los modelos extendidos.

3.5 BASES DE DATOS ORIENTADAS A OBJETOS

El modelo relacional. al trabajar con renglones y columnas. hace difícil la implementación de

algunas aplicaciones como el diseño a través de computadora y el diseño de software

asistido por computadora. la investigación sobre las bases de datos orientadas a objetos

sigue dos caminos: uno que es independiente del modelo relacional y otro que las toma

como complemento del modelo relacional.

las bases de datos orientadas a objetos (BDOO) están construidas en base a los objetos. Tanto

las BDOO como los Manejadores de Bases de Datos Orientadas a Objetos (MBDOOJ son

relativamente nuevos comparados con las bases de datos relacionales por lo que existen aún

varias divergencias en su terminología. implementación y desarrollo.

3.6 HIPERTEXTO

Hace varios años, Apple inició los trabajos en un área conocida como hipertexto

comercializando un producto Macintosh conocido como HyperCard™. El hipertexto toma un

punto de entrada en una red de datos y a través de ese punto tiene acceso a varios puntos

de donde puede obtener. insertar. actualizar o borrar información. En un ambiente hipertexto

no se requiere de accesos mediante lenguajes de programación ni lMD para trabajar con los

datos. Simplemente se selecciona un aspecto desde el cual se pueden realizar otros accesos

de acuerdo a nuevas selecciones.

3.7 BASES DE DATOS INTELIGENTES

Las Bases de Datos Inteligentes surgen por la combinación de Sistemas Expertos y Bases de

Datos. Un tipo de Bases de Datos Inteligentes son las Bases de Datos Deductivas. las cuales se

caracterizan por extender el modelo relacional. las base de datos deductivas aumentan el

29

Page 28: Manejo de fragmentación y replicación transparente en

poder de las expresiones mediante lenguajes de consultas que permiten recursión. Otro

aspecto importante de las bases deductivas es su capacidad de integrar reglas en el uso de

las bases de datos y de deducir información nueva, en base a la información existente. Para

conocer más sobre estas bases. un buen inicio es [Ózsu. Valduriez 1991) en el punto 15.3.

3.8 TRABAJOS PARA ENCAUSAR LA INVESTIGACIÓN DE SISTEMAS

MANEJADORES DE BASES DE DATOS EN LOS 90's

En los últimos años se han realizado algunos esfuerzos para dirigir las investigaciones sobre

SMBD. este apartado nos indica algunos de ellos.

3.8.l Manifiesto de los Sistemas de Bases de Datos de la Tercera Generación

En julio de 1990. el Committee for Advanced DBMS Funtion publicó un documento para un

conferencia en Windermere. Inglaterra. titulado "1hird-Generalion Data Base System

Manifesto" [Stonebraker. Rowe 1990). En la conferencia los autores consideran que existen 2

generaciones en el desarrollo de bases de datos:

La primera generación que abarca las bases de datos jerárquica y de red. las cuales forman

los primeros sistemas que unifican la definición de datos y un lenguaje para la manipulación

de los mismos.

La segunda generación. formada por las bases de datos relacionales cuyo mayor logro es la

obtención de lenguajes no procedurales para la manipulación de datos y provee un

substancial grado de independencia de datos.

En el manifiesto los autores señalan que las bases de datos relacionales no se adaptan a

ciertas aplicaciones. como las que implican Diseño Asistido por Computadora. hipertexto y

multimedia por lo que se requiere de mejores SMBD. El manifiesto cubre lo siguiente:

Las Afirmaciones

Afirmación 1. Los SMBD de la tercera generación deben brindar servicios en tres áreas:

• Administración de Datos

• Administración de Objetos

• Administración de Conocimientos

30

Page 29: Manejo de fragmentación y replicación transparente en

Afirmación 2. los SMBD de la tercera generación deben retomar los SMBD de la

segunda generación. entendiendo que la mayor contribución del mundo relacional

(los accesos no procedurales y la independencia) no deben ser comprometidos por los

sistemas de tercera generación.

Afirmación 3. los SMBD de tercera generación deben ser abiertos a otros subsistemas.

las herramientas para tomar decisiones deben tener lenguajes de cuarta generación

(4Gls). operaciones con datos remotos y capacidad distribuida.

Proposiciones

Proposición 1.1 los SMBD de la tercera generación deben tener una estructura propia

completa. A corto plazo. las características generales de la orientación a objetos son

propuestas como una extensión de las SMBD de la segunda generación más que como

un reemplazo. Las caracteristicas de la orientación a objetos son f acilitadores de una

arquitectura totalmente nueva de SMBD. más que una extensión del actual modelo.

Proposición 1.2. la herencia es una buena idea.

Proposición 1.3. las funciones (métodos. procedimientos de bases de datos) y

encapsulado son buenas ideas.

Proposición 1.4. los identificadores únicos para los registros podrían ser opcionalmente

asignados por el SMBD.

Proposición 1.5. las reglas (disparadores) llegarán a ser una de las características más

importantes en los próximos sistemas. Ellas no deberían estar asociadas con una

función o un conjunto de funciones específicas.

Las siguientes proposiciones pretenden asegurar que se preserve la integridad de los SMBD's

de la segunda generación en base a la segunda afirmación:

Proposición 2. 1. la navegación hacia un dato deseado debe ser usada sólo como un

último recurso. En otras palabras. no se debe regresar al uso de apuntadores de las

bases de datos jerárquicas o de redes.

Proposición 2.2. Debe haber por lo menos dos implementaciones por colección. una

usando enumeración de miembros y otra usando el lenguaje de consulta para

especificar los miembros.

Proposición 2.3. Las vistas actualizables son esenciales.

31

Page 30: Manejo de fragmentación y replicación transparente en

Proposición 2.4 . Se debe separar el modelo físico de los niveles conceptual y de visto al

especificar las características de la tercera generación. (Evitar índices. cluster,

buffers ... ).

Las siguientes proposiciones se refieren a los sistemas abiertos.

Proposición 3. 1. La tercera generación debe ser de soportar varios lenguajes.

Proposición 3.2. Deben concordar el tipo de sistemas de la tercera generación y el

lenguaje que estos utilicen .. pero se debe evitar los errores de resistencia que causan

palabras de SQL.

Proposición 3.3. A pesar de presentar varios defectos. SQL tendrá un papel en el mundo

de la tercera generación.

Proposición 3.4. Las consultas expresadas en SQL y sus resultados deberán ser el nivel

más bajo de comunicación entre clientes y servidores.

3.8.2 Manifiesto de los Sistemas de Bases de Datos Orientados a Objetos

Varios meses ant~s del manifiesto. tratado en el punto anterior. se publicó otro documento por

otro grupo "The Object-Oriented Database System Manifesto." (Atkinson, Bancilhon 1989). Así

como el Manifiesto de los SMBD de la tercera generación fue una defensa de los sistemas

híbridos, este manifiesto busca un modelo orientado a objetos puros. Este documento

presenta 13 puntos para las bases de datos orientadas a objetos.

3.8.3 El Grupo de Trabajo de la National Science Foundation (NSF)

En febrero de 1990 la NSF forma un grupo para identificar los factores tecnológicos que

servirán como funciones de fuerza para los avances en la tecnología de bases de datos y las

necesarias investigaciones básicas correspondientes para esa tecnología. En este grupo

participan personas que trabajaron en el Manjfiesto de los SMBD de la tercera generación y

otros que trabajaron en el Manifiesto de las bases de datos orientadas a objetos.

Hubo tres principales conclusiones acerca del futuro de las bases de datos y la administración

de información [Silberschatz. Stonebraker 1990):

1) Muchos de los avances tecnológicos del principio del siglo XXI que sostendrán la industria y

los avances tecnológicos. dependerán de una tecnología radicalmente nueva de bases de

datos. que actualmente no está bien definida y que requiere de investigación intensiva.

32

Page 31: Manejo de fragmentación y replicación transparente en

2) La próxima generación de aplicaciones de bases de datos tendrá poco en común con las

aplicaciones de procesamiento de datos actual.

3) La cooperación entre diferentes organizaciones científicas. de ingeniería y comercio

requerirán bases de datos distribuidas heterogéneas a gran escala.

Dos áreas fueron particularmente identificadas como candidatas para investigación intensiva:

a) Las aplicaciones para los SMBD de la próxima generación.

b) Las bases de datos distribuidas heterogéneas.

En el área de aplicaciones para la próxima generación. el reporte del grupo de trabajo

identificó varios aspectos:

1 Opciones para almacenamiento masivo

2 Interdependencia de las aplicaciones

3 Minería de datos

4 Aplicaciones multimedia

5 Nuevas clases de datos

6 Reglas para procesamiento

7 Nuevos modelos de datos

8 Escalabilidad de los algoritmos para SMBD

9 Paralelismo

10 Medios alternos de almacenamiento

11 Transacciones de larga duración

12 Posibilidad de mantener diferentes versiones

La otra área de investigación recomendada fue la investigación de bases de datos

heterogéneas distribuidas.

33

Page 32: Manejo de fragmentación y replicación transparente en

En el punto 3.4 se definió lo que son los Sistemas Manejadores de Bases de Datos Distribuidas

(SMBDD). Ahora profundizaremos en su clasificación. arquitectura y diseño.

En 1987 C.J. Date publicó 12 reglas para las Bases de Datos Distribuidas. las cuales son:

1) Autonomía de localización:

localmente administrados; lo

los datos locales deben tener pertenencia local y ser

cual incluye funciones de seguridad. integridad y

almacenamiento. Las excepciones se dan con restricciones distribuidas en múltiples nodos y

cuando las transacciones deben ser administradas por nodos externos.

2) No confiar en un nodo central para ningún servicio en particular: al seguir esta regla se

evitan cuellos de botella y se permite la descentralización requerida.

3) Operación Continua: no debe haber interrupciones por añadir nodos o eliminar nodos en

un ambiente distribuido.

4) Independencia de Localización: ni los usuarios, ni las aplicaciones deben necesitar conocer

el lugar donde los datos están fisicamente almacenados.

5) lndependencja de Fragmentación: Los fragmentos deben ser almacenados y administrados

por el SMBDD sin necesidad de las indicaciones de un usuario o una aplicación.

6) Independencia de replicación.

7) Procesamiento distribuido de las consultas: El procesamiento de una consulta debe ser

procesado en modo distribuido.

8) Administración de transacciones distribuidas: El principio de transacción y de concurrencia

debe ser manejado en forma dislribuida.

9) Independencia de Hardware: El mismo SMBOD debe correr en diferentes máquinas y debe

participar de la misma forma en todo el sistema.

10) Independencia del sistema operalivo.

11) Independencia de red: Los nodos deben poder ser conectados sobre una amplia

variedad de redes y ambientes de comunicación.

12) lndependenda de SMBD: Debe ser posible para un SMBD local participar en un ambiente

SMBDD.

4.1 VENTAJAS Y DESVENTAJAS

Ceri y Pelaga11i [Ceri, Pelagatti 1984) señalan que existen varias razones para desarrollar bases

de datos distribuidas y listan las siguientes motivaciones principales:

34

Page 33: Manejo de fragmentación y replicación transparente en

• Razones económicas y organizacionales.- Esto se da tanto en empresas descentralizadas.

en las cuales se requiere la administración por entidad. como en lugares donde no se

quiere comprometer la inversión en un sólo equipo dedicado al procesamiento de toda la

información.

• Interconexión de las bases de datos existentes.- Las bases de datos distribuidas son una

solución natural cuando varias bases de datos ya existen en una organización y surge la

necesidad de realizar aplicaciones globales.

• Crecimiento Incremental.- Si una organización crece mediante la creación de nuevas

organizaciones relativamente _independientes. las bases de datos distribuidas son una

opción que permite brindar servicio a las nuevas unidades con un mínimo impacto en la

estructura existente.

• Disminuir la carga de las comunicaciones.- El hecho de que varias aplicaciones se realicen

en forma local y no en una máquina remota reduce el tráfico en la red; por lo que la

maximización del uso de aplicaciones locales es uno de los objetivos primordiales en el

diseño de bases de datos distribuidas.

• Consideraciones de rendimiento.

• Disponibilidad y confiabilidad.- Gracias a que las bases de datos distribuidas se diseñan con

cierto grado de redundancia. permiten que existan datos importantes en varios puntos del

sistema. más cerca de los usuarios y con posibilidad de accesar una copia en caso de que

uno de los nodos falle.

Por otra parte Ózsu y Valduriez [Ózsu. Valduriez 1991 J citan las siguientes ventajas y

desventajas:

Ventajas: Autonomía local, mejor rendimiento. mayor disponibilidad y confiabilidad. menor

costo. escalabilidad y facilidad para compartir recursos.

Desventajas: Falta de experiencia. complejidad. inversión en comunicaciones. conlrol

distribuido. dificultad para implementar seguridad. resistencia al cambio

4.2 ARQUITECTURA DE UNA BASE DE DATOS DISTRIBUIDA (BDD)

Ózsu y Valduriez [Ózsu. Valduriez 1991) sugieren que antes de especificar una arquitectur9 de

BDD. se considere las formas en las que múltiples bases de datos pueden estar juntas

compartiendo recursos y datos. Ellos usan una figura similar a la figura 4. l para clasificar la

relación. según su grado de distribución. autonomía y heterogeneidad.

35

Page 34: Manejo de fragmentación y replicación transparente en

Distribución islemo homogéno distribuido

:- . ---...... -............... --............ -........ -... .

.. .................................... ·.

Heteroqene~Ba,e de datos heterogénea e integrado

.. . .

Autonomía

islcmo mullibase do dolos

mullibose de dolos heterogéneo y distribuido

Fig. 4. 1 Alternativas de implementación en SMBDD

Distribución. Grado en que los datos se encuentran en diferentes nodos.

Autonomía. Distribución del control y no de datos. Es el grado en que la SMBD actúa

independientemente.

Heterogeneidad: diferencia en HW. protocolos de comunicación. datos. lenguajes para

realizar consultas, protocolos de transacción.

Stefano Ceri y Giuseppe Pelagatli [Ceri. Pelagatli 1984) proponen la arquitectura que se

presenta en la figura 4.2. no como un estándar para todos los sistemas de bases de datos

distribuidas sino como una exposición de los conceptos más relevantes.

Este modelo no siempre es implementado en las bases de datos dis1ribuidas. los niveles son

conceptuales e intentan mostrar la organización de una BDD.

representados se describen a continuación:

Los componentes

Esquema Global: El esquema global define lodos los datos que están contenidos en la base de

datos para dar la imagen de una base de datos no distribuida. Por esta razón el esquema

global se define de la misma forma que una base de datos centralizada. Al utilizar el modelo

relacional el esquema global consiste en la definición de un conjunto de relaciones globales.

Esquema de Fragmentación: Cada relación global puede ser dividida en varias partes

llamadas fragmentos. El mapeo entre relaciones globales y los fragmentos se definen en el

esquema de fragmentación. El mapeo es de uno a muchos ya que varios fragmentos

36

Page 35: Manejo de fragmentación y replicación transparente en

corresponden a una relación global. Para indicar que un fragmento corresponde a la

relación R se indica con un subíndice. de tal forma que R, indica el iesimo fragmento de la

relación global R.

Esquema Global

Esquema de Fragmentación

Esquema de Localización

~squema Local de mapeo 1

SMBD DEL SERVIDOR

No 1

1

BDdel Servidor

No 1

Esquema Local de mapeo2

SMBD DEL SERVIDOR

No2

1

BDdel Servidor

No2

Fig. 4.2 Arquitectura Referencial para una BDD

Esquema independiente del nodo

Otros

Esquema de Localización: Un fragmento se puede encontrar en uno o varios nodos de una

red. El esquema de localización define el lugar donde se encuentra cada fragmento. La

localización puede ser redundante o no. Si es redundante la relación es uno a muchos,

mientras que si no lo es muchos a muchos.

Imagen Física: Todos los fragmentos que corresponden a la misma relación global R ·y se

localizan en el mismo nodo j forma la imagen física de la relación global R en el nodo j. Por lo

que existe un mapeo de uno a uno entre una imagen física y un par (relación global. nodo).

Una imagen física puede ser señalada por el nombre de la relación global y el índice del nodo

37

Page 36: Manejo de fragmentación y replicación transparente en

en que se encuentra. Para distinguir una imagen física de un fragmento se emplean

superíndices de tal forma que Ri es la imagen física de la relación R en el nodo j.

Copla de un Fragmento: Una copia de un fragmento, es el fragmento que se localiza en un

determinado nodo. La notación u: significa la copia del fragmento R2 en el nodo 3.

En la figura 4.3 se presenta en forma esquemática la relación entre esquema global, esquema

de fragmentación y esquema de localización.

- '

,, (R;)

111;)

(u:)

Relación Global Fragmentos Imagen Física

Fig. 4.3 Fragmentos e imágenes físicas para una relación global.

Esquema de Mapeo Local: Regresando a la arquitectura de la BDD podemos observar que los

tres primeros niveles son independientes del nodo, por lo cual no dependen del modelo de

datos de la base de datos local. El sistema local debe mapear las estructuras superiores

mediante el esquema de mapeo local.

Esta arquitectura permite lograr tres objetivos:

1. Separar el concepto de fragmentación del concepto de localización. Con esta división

encontramos dos tipos de transparencia, transparencia de fragmentación y transparencia

de localización. La transparencia de fragmentación es de nivel superior a la transparencia

de localización y consiste en el hecho de que los usuarios o programadores trabajen con

38

Page 37: Manejo de fragmentación y replicación transparente en

relaciones globales. Por su parte la transparencia de localización requiere que el usuario o

programador trabaje con fragmentos y no con el esquema global. Se habla de

transparencia porque los usuarios o programadores no se preocupan por conocer el nodo

en que se encuentran los fragmentos.

2. Control explícHo de la redundancia. La arquitectura referida provee de un control

explícito de la redundancia a nivel fragmentos.

3. Independencia de las bases de datos locales. Esta característica es nombrada

transparencia de mapeo local y permite estudiar varios problemas de administración sin

tener la necesidad de adaptarse a cada base local.

Esta arquitectura realiza la misma función que la arquitectura ANSI/SPARC en los SMBDs

tradicionales mostrando que niveles y esquemas son realmente relevantes.

4.2.1 Arquitectura de un Sistema Manejador de Bases de Datos Distribuidas

Ozsu y Valduriez [Ózsu. Volduriez 1991) presentan algunos esquemas en los que resaltan los

conceptos del esquema interno local (Ell) y el esquema conceptual global (ECG). El Ell surge

de la necesidad de tener un esquema en cado una de los nodos. lo cual le da autonomía y

organización local : y el ECG corresponde a la vista a nivel organizacional de todos los datos.

El hecho de tener datos replicados y fragmentados en una BDD hace que se requiera de un

esquema conceptual local (ECL) en cada nodo, de tal forma que la unión de ECL generen el

ECG. Finalmente. los aplicaciones de usuario accesan a los bases de datos por medio de

esquemas externos (EEs). Un SMBDD pueden presentar la arquitectura que se presenta en la

figura 4.4

EE Esquema Ellterno ECG Esquema Conceptual Global ECl Esquema Conceptual local Ell Esquema Interno local

IELl ~

EIL,,

Fig. 4.4 Arquitectura de Esquemas paro una un Base de Datos Distribuida.

39

Page 38: Manejo de fragmentación y replicación transparente en

Esta arquitectura está basada en el modelo ANSI/SPARC. el cual. para pasar de bases

centralizadas a distribuidas requiere de un directorio/diccionario global (D/DG) que permita

satisfacer los requerimientos del mapeo global. Mientras el mapeo local se hace con un

directorio/diccionario local (D/DL). Los autores lo representan con la figura 4.5.

Como se puede ver los esquemas conceptuales locales son mapeados del esquema global a

cada nodo. Más aún. cada base de datos es diseñada en una modalidad descendente, de

tal forma que todas las vistas externas son realizadas en forma global. En el esquema también

se puede ver un administrador . de base de datos local, cuya existencia puede ser

controvertida. pero se justifica si recordamos que una de las principales motivaciones de una

base de datos distribuida. es el deseo de tener control local sobre la administración de los

datos.

l\f.lmiri.trallll' dr l• lM' de l:>.1,-.<J,-AW

,\ .. niniNn11kw do i-...., de ..,,oo loa,I

,,_...,_ ...... -... ......... ..,_ ... ....,......,,.

T,..tmnr,;...., 1rs11r....,.;11n • .......,.,. • -

.. "*21'11Tieilo i'*"-'--- ele mio, it1tm1

Aollniri ........... t'll'pliJ'.a:i,'ln

1o.,. ..... ....-..... b.c de .. _.. CU1-.oq111 Atlmiri,tnd..11'• l!l'li&m,11 .. - ...........

A ~i,.-..... -h-... - ... -.-.r.-... -... ~ ~· i-.i.drl,•cola,.,

&:;,qa.,•dcl1h9rde tlllotCC'IIIOrflll ..

(IR~)fll

,._,.m..-i,\n WftL'qltl .. 1 l-.e dodllt.mida'I•

tr.•íonnUffl • lll91Kalllnicnloit*m.•

Fig. 4.5 Esquema funcional de un Sistema Manejador de Bases de Datos Distribuido.

40

Page 39: Manejo de fragmentación y replicación transparente en

Los componentes de un SMBDD que corresponden a este esquema son los siguientes:

COMPONENTES DEL PROCESADOR DE USUARIO

Manejador de la Interfaz del usuario. Es responsable de interpretar las ordenes del usuario.

según las recibe, y dar forma a los resultados para entregarlos al usuario.

Controlador de la semántica de datos. Utiliza las restricciones de integridad y autorizaciones

que se definan como parte del esquema conceptual global para revisar si la consulta puede

ser procesada.

Optimizador de consuffas globales. Determina una ejecución que minimice el costo del

funcionamiento y traduzca consultas globales o locales usando esquemas conceptuales

globales y locales así como el directorio/diccionario global.

El monHor para ejecución distribuida. Coordina la ejecución de peticiones del usuario.

También es llamado administrador de transacciones distribuidas. Este monitor se comunica

con los monitores de las otras bases de datos para ejecutar las consultas distribuidas.

Usuario

Respuesla del sistema Pelición del usuario

Procesador del usuario

Procesador de datos

Manejador de la interfaz de usuario

Conlrolador de la semántica de dalos

Oplimizador de Consultas Globales

Monilor de ejecución Global

Esquema exlemo

Esquema concepluat

Global

Optimizador de consultas locales

Esquema i.-----t conceptual local ---~--...,

Adminislrador de Recuperación local -----.i

Procesador de soporle en liempo real

Logdel sistema

Fig. 4.6 Componentes de un Sistema Manejador de Bases de Datos Distribuido.

41

Page 40: Manejo de fragmentación y replicación transparente en

COMPONENTES DEL PROCESADOR DE DATOS

Optimizador de consuffas locales. Selecciona los algoritmos y estructuras a utilizar para tener

acceso a los datos de la mejor forma posible.

Administrador de recuperación local. Es responsable de asegurar que la base de datos local

mantendrá su consistencia a pesar de fallas en el sistema.

Procesador de soporte en tiempo real. Utiliza físicamente la base de datos de acuerdo a los

comandos referidos por el optimizador de consultas.

4.2.2 Arquitectura de los Sistemas Multi Base de Datos

Retomando la figura 4. 1 se puede considerar otro tipo de arquitecturas. éstas son las que se

refieren a los Sistemas Multi Base de Datos. Como se puede observar. la principal diferencia en

este tipo de sistemas con respecto a los SMBDD es su autonomía. lo cual se refleja en el ECG.

En los SMBDD integados, el esquema global conceptual define la visión de la base de datos

completa. mientras que en los Sistemas Mutli Base de Datos representa sólo la colección de

algunos datos locales que el SMBD quiere compartr. Por lo tanto en los SMBDD la base de

datos global corresponde a la unión de las bases de datos locales. y en los Sistemas Multi Base

de Datos. la bas.e de datos sólo es un subconjunto de la bases de datos locales. Existen dos

formas de arquitectura de una Sistema Multi Base de Datos. una que utiliza ECG y otra que no.

Modelos que utillzan Esquema Conceptual Global. En estos modelos, los usuarios pueden

utilizar sus propios esquemas conceptuales locales (ECL). Para diseñar un ECG en un Sistema

Multi Base de Datos, a diferencia de un SMBDD. se mapea de un esquema conceptual local a

un esquema conceptual global. con un ascendente. Una vez definido el ECG. se pueden

definir vistas sobre éste para los usuarios qüe requieran accesos globales. Así. los aplicaciones

tienen accesos tanto al esquema externo local (EEL) como al esquema externo global (EEG).

que pueden ser independientes.

,----------- --------EEL ECG EEG Ell ECl

Esquema Exlerno local Esquema Conceplual Global Esquema Externo Global Esquema Interno local Esquema Conceptual local

Fig. 4.7 Arquitectura de Sistemas Multi Base de Datos con ECG

42

Page 41: Manejo de fragmentación y replicación transparente en

Modelos que no utmzan Esquema Conceptual Global. litwin [litwin, 1988] define los Sistemas

Multi Base de Datos como aquellos que administran varias bases de datos sin un ECG. En la

siguiente figura se identifican dos capas: la capa de sistema local y la capa multi base de

datos. la primera consiste en varios Sistemas Multi Base de Datos que presentan a la capa

multi base de datos la parte de sus bases locales que quieren compartir con los usuarios de

otras bases. Estos datos se presentan como esquemas conceptuales locales (ECL) con

modelos de datos posiblemente diferentes.

I EE1 1 LEE2 1 EEn I Capa mulli base de / ·~ /.,,... \

~~~º~-----------/~---- ~~- __ / _________ \~---------· C~o de IECLil ~ ~CL:i sislemalocal ~ ~

I EIL, 1 1 Elb I EIG

Fig. 4.8 Arquitectura de Sistemas Multi Base de Datos sin ECG (Litwin. 1998)

Sobre esta capa. son construidas vistas externas donde cada vista puede ser definida sobre un

esquema conceptual global o varios esquemas conceptuales. Así. la responsabilidad de

proveer acceso a múltiples bases de datos es delegada al mapeo entre el esquema externo

(EE) y el esquema conceptual local. De esta forma. el acceso a las multi bases de datos se

provee por un lenguaje en el cual se escriben las aplicaciones de usuario. Esto implica

diferencia entre los componentes de un SMBDD y un Sistemas Multi Base de Datos. Un Sistema

Multi Base de Datos debe proveer una capa de software que corra sobre el SMBD local que

provea a los usuarios de la capacidad de acceso a varios Sistemas Multi Base de Datos.

4.2.3 El Directorio Global

El directorio global se utiliza sólo en SMBDD o Sistema Multi Base de Datos con esquema

conceptual global. El directorio global es una extensión del directorio de un Sistema Multi Base

de Datos que debe incluir información sobre los fragmentos de las bases de datos y su

localización. Puede existir un directorio global que se localice en un nodo específico para

todo el sistema. o bien, un directorio local repcrtido en diferentes Sistemas Multi Base de Datos.

Ambas opciones pueden considerar réplicas.

43

Page 42: Manejo de fragmentación y replicación transparente en

La figura 4.9 representa un Sistema Multi Base de Datos no distribuido. Si se busca un sistema

distribuido se debe replica lo copa multi base de datos a cada nodo. donde exista un

Manejador de Base de datos que participe en el sistema.

Usuario

Respuesla del sislema Petición del usuario

Procesador de consullas

Adminislrador de Transacciones

Calend<Jrizadol

Administrador de Recuperación local

Procesador de soporte en liempo real

Capa Multi-Base de Datos

SMBD Procesador de consultas

Administrador de Transacciones

Calendalizado,

Administrador de Recuperación local

Procesado, de soporle en tiempo real

Fig. 4.9 Componentes de un Sistema Multi Base de Datos

4.3 TRANSPARENCIA

SMBD

La transparencia en una BDD se refiere a la separación entre la semántica que utilizo el usuario

en el nivel más alto y los detalles de implementación. Así. la transparencia oculta los detalles

de implementación a los usuarios.

Las independencias es una forma fundamental de transparencia y se refiere a que una

aplicación de usuario sea inmune a las modificaciones realizadas en la definición y

organización de los datos y viceversa. La definición de los datos puede darse en dos niveles.

en uno se especifica la estructura lógica de los datos. en el otro se especifica la estructura

física de los datos. Así la independencia lógico de los datos. se refiere a la inmunidad de las

aplicaciones de usuario ante cambios en la estructura lógica de la base de datos y la

independencia físico a inmunidad ante cambios en la estructura física.

44

Page 43: Manejo de fragmentación y replicación transparente en

4.3.l Transparencia de Red

En un sistemas de bases de datos distribuidas. además de brindar transparencia en los datos.

se debe brindar transparencia de red. Para el usuario no debe haber diferencia entre trabajar

con un sistema centralizado o distribuido.

Existen dos conceptos sobre este punto: Transparencia de localización. que se refiere al

hecho de que el comando utilizado es independiente de la localización de los datos y del

sistema en el cual se ejecute. Y transparencia de nomenclatura. lo cual significa que existe un

nombre exclusivo para cada objeto en la base de datos.

4.3.2 Transparencia de Replicación

Si los datos han sido replicados en varias máquinas de la red. es deseable que la

administración de estas copias sea realizada por el sistema. de tal forma que el usuario trabaje

como si almacenara la información en un sólo lugar.

4.3.3 Transparencia de Fragmentación

Cuando los datos están fragmentados, es necesario buscar técnicas para manejar las

consultas que realice la aplicación del usuario. Es decir. se debe encontrar una forma de

realizar el procesamiento de la consulta basada principalmente en los fragmentos y no en la

relación. como veremos en el punto 4.5 es deseable que este proceso sea transparente al

usuario.

4.4 DISEÑO DE BASES DE DATOS DISTRIBUIDAS

Levin y Morgan [Levin y Morgan. 1975) sugieren que la organización de un sistema distribuido

puede ser investigado en tres dimensiones ortogonales:

1 Nivel en que se comparte

2 Comportamiento del modelo de acceso

3 Nivel de conocimiento sobre el comportamiento del modelo de acceso.

la representación de estas dimensiones aparece en la figura 4.10.

Como objetivos del diseño Ceri y Pelagatti [Ceri. Pelagatti 1984] señalan:

• Distribuir los datos para lograr el máximo proceso local. de esta forma el procesamiento se

realizará en un nodo cercano a la petición del usuario.

45

Page 44: Manejo de fragmentación y replicación transparente en

• Disponibilidad y confiabilidad de los datos.

• Distribución de la carga de trabajo.

• Optimar el costo de almacenamiento y la disponibilidad

Modelo de Acce5o

Dinámico

................... ---...... -............ -.. :•

.. ~..... . . . . . ................................... . . . . . . . . . ......... ~ .......... .

Eslólico

. --............................ -: --~~~~~~--é~-----,r--.....

Nivel de Conocimiento Solo dolos

: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ·: .. ·:·

.. ·~·····························-~:

~Comporlir dolos y programas

Compartir

Fig. 4.10 Direccio_nes en el diseño de la Distribución.

El diseño consta de cuatro fases:

1 Diseño del esquema global

2 Diseño de fragmentación

3 Diseño de localización

4 Diseño de la estructura física en cada nodo

Información completo

4.4.1 El Diseño Ascendente y Descendente del Esquema Global

Como se mencionó anteriormente. existen dos allernalivas para el diseño. ascendente

(utilizado por la SMBDD) y de descendente (que se adapta a Sistema Multi Base de Datos). En

el diseño ascendente se inicia formando el esquema global. luego la fragmentación, después

la localización de estos fragmentos en forma replicada o no. creando imágenes físicas.

El diseño descendente se crea como la unión de varios datos contenidos en las bases

existentes. el esquema global (cuando existe). es creado como un compromiso entre las

descripciones de los datos existentes. Este tipo de diseños se basa en la integación de los

esquemas existentes en un solo esquema global. Por integración se ha de entender la unión

46

Page 45: Manejo de fragmentación y replicación transparente en

de las definiciones de datos y la resolución de conflictos entre las diferentes representaciones

dadas a los mismos datos.

Cuando las bases de datos se unen en un Sistema Multi Base de Datos mediante un diseño

ascendente se requiere:

1.- La selección de un modelo de base de datos común para describir el esquema global de

la base de datos.

2.- La traducción de cada esque"!la local en el modelo de datos común.

3.- La integración de los esquemas locales a un esquema global común.

4.4.2 Diseño de Fragmentación

La fragmentación consiste en dividir una relación y agruparla en tuplas (si la fragmentación es

horizontal) o atributos (si la fragmentación es vertical) o en forma mixta (tuplas y atributos)

según sus propiedades desde el punto de vista de su localización. Los fragmentos son la

unidad de agrupamiento con las mismas propiedades; de tal forma que al tener dos

elementos con lc;is mismas propiedades. éstos sean localizados en el mismo lugar. Por lo tanto.

si una relación r está fragmentada, r se dividirá en varios fragmentos r,. r2 ..... rn de tal forma

que al retomar todos los fragmentos podamos reconstruir r.

fragmentación Horl.zontal. Cada tupla de r es asignada a uno o más fragmentos. Un

fragmento puede definirse como una selección en la relación global r. Es decir. se utiliza un

predicado P1 paro construir el fragmento n de la siguiente manero:

r1 = cr p1 (r) (4, l)

La reconstrucción de r puede obtenerse al calcular la unión de todos los fragmentos. es decir:

r = ÍI U r2 U ••• U rn (4,2)

fragmentación Vertical. Divide la relación r descomponiendo su esquema. de forma que los

atributos queden en diferentes fragmentos.

La fragmentación vertical de r involucra la definición de varios subconjuntos. R, . R2 ..... R_n.

donde R es el esquema de r. tales que:

R= R1 uR2u ... uRn (4,3)

Por lo tanto:

n=nR1(r) (4,4)

47

Page 46: Manejo de fragmentación y replicación transparente en

Es decir. la relación n se da de la proyección del esquema Ri que forma parte de la relación r.

Para obtener r necesitamos el siguiente producto natural:

r = ri IX I r2 1 X 1 •.. 1 XI rn (4,5)

Para realizar la fragmentación vertical se añade un atributo que identifique a la tupla en el

esquema R

fragmentación Mixta. La relación r se divide en varios fragmentos. donde cada fragmento de r

se obtiene por la aplicación de un esquema de fragmentación horizontal o vertical. sobre la

relación r. o sobre un fragmento de r que haya sido obtenido con anterioridad.

4.4.3 Diseño de Localización de Fragmentos

Se debe distinguir entre el diseño no redundante y diseño redundante (replicación) de

localización. El diseño no redundante es más sencillo y se obtiene mediante la asignación de

un peso asociado a la localización de un fragmento en cada nodo. el fragmento se debe

localizar en el nodo que mejor peso le brinde. Esta aproximación por peso descuida la

relación existente entre fragmentos.

El uso de replicación implica que el grado de replicación de cada fragmento se convierta en

una variable del problema, además de que. tanto la lectura como la escrituro deba de

considerar las diversas copias del fragmento. Para diseñar la replicación se puede partir de

dos aproximaciones:

a) Determinar el conjunto de nodos donde el beneficio de localizar una copia del fragmento

sea mayor que el costo de mantenerla ahí.

b) Determinar en primer lugar una solución sin réplicas y progresivamente introducir réplicas

comenzando por las más benéficas hasta que no sea necesario añadir réplicas.

4.5 PASO DE CONSULTAS GLOBALES A CONSULTAS EN FRAGMENTOS

Para realizar este tipo de operaciones tomaremos como referencia el álgebra relacional de la

forma que la presenta Ceri y Pelagalli [Ceri. Pelagatti 1984):

Las operaciones unarlas toman sólo una relación como operando e incluyen a la selección y a

la proyección.

48

Page 47: Manejo de fragmentación y replicación transparente en

la selecclón, se denota Sl,R. donde R es el operando al cual se le aplica la función de

selección F. la función Fes una fórmula que expresa un predicado. que produce una nueva

relación con el mismo esquema que R y un subconjunto de tuplas que satisfacen el predicado

F.

la proyección, se denota PJ Allr R. donde Attr denota un subconjunto de atributos de la

relación operando. Produce un resultado que contiene las tuplas del operando con los

atributos señalados en Attr. Las tuplas repetidas que se generen después de aplicar la

operación son eliminadas.

Las operaciones binarias toman dos relaciones como operandos:

la unión, se denota R UN S. tiene significado sólo entre dos relaciones R y S con esquemas

idénticos. arrojando un esquema similar y la unión de las tuplas de R y S. (Esto es. todas la

tuplas que aparecen en R y en So en ambas).

La diferencia, se denota, R DF S requiere que R y S tengan el mismo esquema dando como

resultado el mismo esquema que los operandos, y todas las tuplas de R que no estén en S.

El producto cartesiano, se denota, R CP S produce una relación cuyo esquema incluye todos

los atributos de R y S . para evitar ambigüedad en el caso de que resulten atributos con el

mismo nombre se debe añadir el nombre de la relación como prefijo separado por un punto

al nombre de cada atributo. Cada tupla de R es combinada con cada tupla de S para

formar las tuplas resultantes.

El Joln, se denota. R JN, S. donde F es una formula que especifica el predicado del join. genera

como esquema todos los atributos de R y de S. y las tuplas que satisfagan el predicado. Un

join se deriva de la selección y el producto cartesiano:

R JN, S = m(R CP S) (4,6)

El Joln natural, se denota R NJN S. es un join en el cual todos los atributos con el mismo nombre

son comparados. Si los a lributos que tienen los mismos nombres en ambas relaciones

coinciden en los valores en todas las tuplas del resultado. sólo una de las tuplas _será

considerada.

El semi-join. se denota R SJ, S. se deriva de una proyección y un join de la siguiente forma:

R SJF S = P J Allr(R) (R JNF S) (4,7)

49

Page 48: Manejo de fragmentación y replicación transparente en

donde Attr(RJ es el conjunto de todos los atributos de R.

El semi-join natural. se denota R NSJ S. se obtiene considerando un semi-join con el mismo

predicado que utiliza el join natural.

Las consultas pueden realizarse sobre relaciones globales. que impliquen varios nodos

(consultas globales) o sobre fragmentos localizados en un solo nodo (consultas de fragmento).

El concepto de transformación de equivalencias para consultas es de gran utilidad para

mejorar el desempeño. Dos expresiones con la misma semántica pueden describir dos

secuencias diferentes de operaciones. como primero seleccionar y después proyectar o

viceversa. Al expresar dos secuencias diferentes y obtener los mismos resultados. decimos que

las expresiones son equivalentes.

Un árbol de operaciones representa el orden en que estas se deben realizar. de tal forma que

si la consulta 1 es :

Q,: P J PNUM SL AREA = "Noria" (PROV JN OEPINUM = OEPINUM DEPT)

Su árbol de operaciones se representa como sigue:

PJrNUM

SL AREA="Norle"

JN OEPTNUM=OEPINUM

/ ""' PROV DEP

Fig. 4.11 Árbol de operaciones.

En el árbol podemos observar que las hojas son relaciones globales. cada nodo representa

operaciones unarias o binarias y el árbol indica un orden en el cual se deben realizar las

operaciones de abajo hacia arriba.

50

Page 49: Manejo de fragmentación y replicación transparente en

lo siguiente gramático es sugerido por Ceri y Pelogotti [Ceri. Pelogotti 1984]

R -> Identificador

R-> (RJ

R-> op_un R

R -> R op_bin R

op_un -> Su= 1 P JA

bin_op -> CP I UN I DF I JNF I NJNF I SJF I NSJF

En cuanto o expresiones equivalentes podemos decir que si E, y E2 son equivalentes (se

escribe E1 <-> fa) al sustituirlos obte_nemos los mismos resultados.

Si U y B denotan operaciones algebraicos unorios y binarios respectivamente. podemos

obtener los siguientes categorías de equivalencia de acuerdo con sus operadores:

• Conmutotividod de operaciones unorios

• Conmutotividod de operandos de

operaciones binarios

• Asociotividod de operaciones binarios

• ldempotencio de operaciones unorios

• Distributividod de operaciones unorios con

respecto o operaciones binarios

U1U2R <->U2U1UR

RBS <->SBR

RB(SBT) <->(RBSJBT

UR <->U1U2R

U(RBSJ -> U(R)BU(S)

• Foctorizoción de operaciones unorios U(R) BU (S) -> U(RBSJ

Estas propiedades son presentados por Ceri y Pelogotti en los siguientes tablas. en los que se

indico con Attr(R) el conjunto de atributos de lo relación R. los tablas contienen en codo

posición un indicador de validez donde N significo que no se puede aplicar. Y que se puede

aplicar siempre y SNC condición específica necesaria. las condiciones especificas se

presentan debajo de codo tablo.

Tablo 4.1 Conmulotividod de operaciones unorios

Sl n PJA2

Sln (*(R)) Y Y

-> *(Slr,(R))

PJAl(*(R))

->. (PJ Al (RJJ

SNC1: Attr(F2) e;;;; A 1

SNC2: Al= A2

SNC1

51

Page 50: Manejo de fragmentación y replicación transparente en

Tabla 4.2 Conmutatividad de operandos y asociatividad de operaciones binarias. -

UN DF CP JNF SJF ·-- ----- --·--- ~~--·--· ··- ~-- ...

R•s y l'I y y y

-> S * R

(R • S) '"T y N y SNC1 N

-> R * (S * T)

SNC1: Para (R JN,, S) JN n T-> R JN r, (S JN n T): Atlr (F2) <;:; Atlr(S) U Attr(T)

Tabla 4.3 ldempotencia de operaciones unarias

p JA(RJ -> p JA1 p J A2 (RJ

Slr(RJ -> SlflLSn(R)

SNC: A = A 1. A <;:; A2

SNC: F = F l " F2

Tabla 4.4 Dislributividad de operaciones unarias con respecto a operaciones binarias

UN DF CP JNFJ SJFJ

Sls:(R•S)-> y y SNC1 SNC, y

Sls:R(R) *Sls:s(S) FR = F. FS = F FR=F. FS=F FR= Fl. FS=F2 FR=Fl. FS=F2 FR=F.FS=true

PJA(R*S) -> y y SNC2 SNC2

p JAR (RtP JAS(S) AR=A.AS=A N AR=A-Atlr(S) AR=A-Attr(S) AR=A-Altr(S)

AS=A-Attr(R) AR=Attr(R) AS=Altr(S) r, Atfr(F3)

SNC,: 3 Fl.F2:(F=Fl /\ F2) /\ (Allr(FJ) <;:; At1r(R)) /\ (Attr(F2) <;:; A1tr(SJ)

SNC2: Attr(F3) <;:; A

Tabla 4.5 Factonzación de operaciones unarias desde operaciones binarias

Slrn(RJ • Sls:s(S)

-> Sls:(R*SJ

p JAR(RJ*P JAS(SJ

-> PJA(R*SJ

UN

SNC,

F=FR=FS

SNCJ

A=AR=AS

SNC1: FR = FS

SNC2: FR => FS

DF

SNC2

F=FR

N

CP JNr,

y y

F=FR" FS F=FR" FS

y y

A=AR u AS A= AR u AS

SNCJ: Altr(R) = Allr(SI

SNC4: FS = true

SJFr

SNC4

F=FR

y

A=AR

52

Page 51: Manejo de fragmentación y replicación transparente en

Y presentan los siguientes criterios para aplicar transformaciones de operaciones equivalentes:

Criterio 1 Usar idempotencia de selección y proyección para generar selecciones y

proyecciones apropiadas para cada operador relacional.

Criterio 2 Mandar selecciones y proyecciones a la parte más baja posible del árbol para tratar

de reducir el tamaño de los operandos en operaciones binarias.

Criterio 3 Enviar las selecciones hacia abajo. cerca de las hojas del árbol. y aplicarlas usando

el álgebra de relaciones calificadas; substituir el resultado de la selección con relaciones

vacías si el calificador del resultado es contradictorio.

Criterio 4 Usar el álgebra de relaciones calificadas para evaluar la calificación de operandos

de joins; substituir los subárboles. incluyendo el join y sus operandos. con la relación vacía si los

calificadores del resultado de los joins es contradictorio.

Criterio 5 Para distribuir joins que aparezcan en consultas globales. las uniones (que

representan colecciones de fragmentos) deben mandarse hacia arriba. más allá de los joins

que se quieran distribuir.

Criterio 6 Para distribuir agrupamientos y funciones de grupo que aparecen en consultas

globales. las uniones (que representan colecciones de fragmentos) deben ser mandadas

hacia arriba. más allá de la operación de agrupamiento.

Para comprender mejor estos criterios se presentan los siguientes conceptos:

a) Propiedades para slmpliflcar un árbol de operaciones.

Las subexpresiones comunes permiten ahorrar posos en el análisis de una expresión.

ejecutando una solo vez aquellas operaciones que se repiten en una consulto. Los siguientes

propiedades pueden ser utilizadas paro simplificar un árbol de operaciones:

R NJN R <-> R

R UN R <-> R

R DF R <-> 0 R

R NJN SL,:R <-> SL,:R

R UN SL,:R <-> R

DF SL,:R <-> SL NOT F R

b) Expresiones canónicos.

(SLFI R) NJN SL F2 R) <-> SL A ANO F2 R

(SL,:, R) UN SL F2 R) <-> SL F1 OR F2 R

(SL,:, R) DF SL F2 R) <-> SL FI AND NOT F2 R

53

Page 52: Manejo de fragmentación y replicación transparente en

Dada una expresión sobre el esquema global. su expresión canónica se obtiene sustituyendo

cada relación global por las expresiones que la forman. mediante fragmentos. Normalmente

una expresión canónica no es eficiente y debe transformarse en una expresión equivalente

siguiendo los criterios 1 y 2.

c) Algebra relacional calificada.

Una relación calificada es un relación extendida por una calificación; la calificación puede

ser vista como una propiedad intencionalmente poseída por todas las tuplas de una relación.

La relación calificada se denota por el par [R:qR] donde R es la relación llamada cuerpo. y q,

es un predicado llamado calificación. La fragmentación horizontal es un ejemplo típico de

relaciones calificadas en las cuales la calificación corresponde al predicado de partición.

Reglas del Álgebra Relacional Calificada:

1 Su= [R:qR) => [Su=R:F ANO qR)

2 P JA[R:qR] => [P JAR:qR]

3 [R:qR] CP [S:qs] => [R CP S:qR ANO qs]

4 [R:qR) DF [S:qs] => [R DF S:qR]

5 [R:qR) UN [S:qs) => [R UN S:qR OR qs)

6 [R:qR) JNF [S:qs) => [R JNF S:qR ANO qs ANO F]

7 [R:qR] SJF [S:qs) => [R SJF S:qR ANO qs ANO F]

Toda transformación de equivalencia del álgebra relacional se mantiene para el álgebra de

relaciones calificadas. Las relaciones calificadas con calificadores contradictorios son

intrínsecamente vacías. Al reconocer una subexpresión como vacía se pueden realizar las

siguientes simplificaciones:

Su:(0) <-> 0

PJA(0} <-> 0

RCP0<->0

R UN 0 <-> R

R DF 0 <-> R

d} Estrategias para realizar joins.

0 DF R <-> 0

R JNF 0 <-> 0

R SNF 0 <-> 0

0 SJFR <-> 0

Se puede pensar en dos tipos de estrategias para realizar un join. La primera realiza el join

entre fragmentos y después recopila la información de los diversos nodos. La segunda. forma

las relaciones recopilando los fragmentos y después realiza el join. El primer caso es mejor

54

Page 53: Manejo de fragmentación y replicación transparente en

cuando se involucran pocos pares de fragmentos, mientras que el segundo coso es preferible

si los condiciones de fragmentación son altamente selectivas.

Tonto el conocimiento del sistema, como saber las características particulares de la

localización de fragmentos. se puede utilizar para inferir contradicciones que permitan

eliminar subexpresiones. En el coso de fragmentaciones verticales se debe seleccionar el

subconjunto de fragmentos necesarios poro resolver los consultas y después eliminar todos los

demás fragmentos de la expresión.

e) Empleo de semi-joins.

El uso de semi-joins puede ser de gan beneficio paro lo optimización de consultas distribuidos

yo que un join puede ser mopeado en un programa semi-join. formado por un conjunto de

operaciones que producen el mismo join. Dado un Join R JN A•11 S. donde A y B son atributos

o conjuntos de atributos de R y S. el programo semi-join está dado por:

s JN A•B (R SJ A~II PJ B S)

Formando el siguiente árbol de operaciones:

JN .._.a

SJ:: \ / \. R p JB

\. s

El beneficio se obtiene si S y R se encuentran en diferentes nodos. yo que al realizar un semi­

join en R se eliminan tuplas que no requieren ser enviados por lo red.

f) Agrupamientos y funciones de grupo.

Otro aspecto o considerar son los funciones de agrupamiento y evaluación. El criterio 6 se

obtiene de que:

55

Page 54: Manejo de fragmentación y replicación transparente en

Con la condición siguiente: Para cada i.j (Gi ~ Rj) o (G1 r. R1 = 0 )

donde G son los atributos que determinan el agrupamiento y AF son las funciones de

agrupamiento que serán evaluadas para cada grupo. Si la condición no se cumple. se puede

considerar la siguiente propiedad: Una función de agrupamiento F tiene computabilidad

distribuida si para un multiconjunto S y una descomposición de Sen múltiples Si. S2 •.... Sn es

posible determinar un conjunto de funciones de agrupamiento F1. F2 •.... Fm y una expresión

E(Fl. ... Fm) tal que:

F(SJ = E(F 1 (S 1 J ....• F 1 (Sn).F2(S 1 J .... F2(Sn).Fm(S 1 J •.... Fm(SnJ J

Como en los siguientes casos:

AVG(SJ= SUM ISUM IS1l. SUMIS2l. .... SUM ISnll

SUM(COUNT(S¡J.COUNT(S2).COUNT(Sn))

MIN(S) = MIN(MIN(S1).MIN(S2J ....• MIN(Sn))

MAX(SJ = MAX(MAX(Si).MAX(S2) ..... MAX(Sn))

COUNT(SJ = SUM(COUNT(S1).COUNT(S2J ..... COUNT(Sn))

SUM(S) = SUM(SUM(Si).SUM(S2) ..... SUM(SJ))

4.6 ESTRATEGIAS DE ACCESO

(4,8)

(4,9)

(4, 1 O)

(4, 11)

(4, 12)

Factorizar subexpresiones comunes y eliminar subexpresiones no requeridas por una consulta

son ejemplos de modificaciones que son benéficas. así como enviar las operaciones unarias

hacia arriba del árbol de operaciones para evitar costos de transmisión. Al considerar tanto la

conmutatividad de los joins y las uniones. como la transformación de joins en programas semi­

joins. se generan consultas que deben evaluarse en base a su costo.

Es necesario tomar en cuenta los siguientes puntos para poder realizar una adecuada

evaluación de una consulta:

• Determinar la copia física de los fragmentos que utilizará la consulta (materialización)

• Seleccionar el orden de ejecución de las operaciones

• Seleccionar el método para ejecuta cada operación.

Sin embargo. en la práctica, el primer y tercer problema se dejan, el primero a la

administración del sistema. y el segundo al diseño de la base de datos. Por lo tanto se hace

énfasis en la selección del orden de ejecución.

56

Page 55: Manejo de fragmentación y replicación transparente en

Los objetivos en la optimización del procesamiento de consultas en los sistemas centralizados

se basan en el número de operaciones de entrada/solida y el uso del CPU; mientras que en los

sistemas distribuidos se busca optimizar la transmisión de datos entre nodos. Los requerimientos

de transmisión se pueden evaluar en base al costo de transmisión (cantidad de información

que se debe transmitir. tanto de datos como información de control) y retardo (tiempo que

transcurre entre la activación y la terminación de una aplicación).

TC(x)=Co + x XC,

TD(x)=Do + x X 01

Donde: TC = Costo de transmisión

TO = Retardo de Transmisión

(4.13)

(4.14)

x = Tamaño de los datos a transmitir

Co = Costo de iniciar una transmisión

e,= Costo unitario de transmisión sobre la red Do= Costo de establecer conexión

D, = Tasa de transferencia unilaria sobre la

red

4.6.l Modelado de Consultas para su Análisis

En esta sección se consideran las operaciones críticas para el procesamiento de consultas y se

añade información cuantitativa que puede servir para evaluar estrategias de

implementación. El perfil de una base de datos es una descripción de los fragmentos y

contiene la siguiente información:

• Número de tuplas de codo fragmento R, => card(R,)

• El número de bytes de cada atributo size(A) y el número de bytes de un fragmento size (R,)

• Por cada atributo A en un fragmento R,. el número de los distintos valores que aparecen en

Ri denotado por val(A(R,])

Esta información puede ser utilizado tanto por relaciones globales como por fragmentos. La

estimación del perfil de la base de datos es útil para evaluar alternativas de optimización.

Si S denota el resultado de ejecutar una operación unaria sobre una relación R. y sea T el

resultado de aplicar una operación a las dos relaciones R y S; entonces encontramos los

siguientes valores para las operaciones de:

57

Page 56: Manejo de fragmentación y replicación transparente en

SELECCIÓN

1. Cardinalidad. Para cada selección se asocia una p selectiva, la cual es la fracción de tuplas

que la satisfacen. En una selección sencilla atributo= valor (A=v). r puede ser estimada como

1 /val(A[R)), asumiendo que los valores se distribuyen en forma homogénea y que v si aparece

en R obtenemos:

card(S) = r X card(R) (4, 15)

2. Tamaño. la selección no afecta el tamaño de las relaciones. por lo que:

size(S)=size(R) (4, 16)

3. Valores Distintos. Si el atributo B no se utiliza en la fórmula de selección ni influye en la

determinación de val(B[S]) se reduce al siguiente problema: Dados n=card(R) objetos

uniformemente distribuidos sobre m=val(B[R,]) colores. ¿cuántos colores c=val(B[R1) son

seleccionados si tomamos r=cad(R1) objetos?

la solución según Ceri y Schreiber [Pelagatti. Schreiber] es:

c(n, m, r):

PROYECCIÓN

1.- Cardinalidad.

r. para r < m/2

(r+m)/3. para m/2 s r < 2m

m, para r 2m ~ 2m

a) Si la proyección involucra un atributo simple A:

card(S)=val(A[R))

(4, 17)

(4, 18)

b) Si el producto nA1eA11rrs1val(Ai(RJ) es menor que card(R), donde Attr(S)

son atributos en el resultado de la proyección:

card(S) = n val(Ai(R)) Ai E Allr(SI

(4, 19)

c) Si la proyección incluye una llave de R

card(S) = card(R) (4,20)

58

Page 57: Manejo de fragmentación y replicación transparente en

2.- Tamaño. Suma de los atributos especificados.

3.- Valores distintos: Son los mismos que la relación operando.

GROUP-BY

GBc.AF Donde G= Atributo sobre el cual se agrupa y AF = función de agrupamiento a evaluar.

1.- Cardinalidad.

card(S) :;; n val(A[R)) ¡,.j G G(SJ

(4,21)

La card(S) puede ser mayor en el ·caso de que cada valor del grupo especificado combine

con cada valor de todos los atributos del otro grupo.

2.-Tamaño. Para todos los atributos A que aparezcan en G:

size(A(S)=val(A[R)) (4,22)

El tamaño de S está dado por la suma de los tamaños de los atributos en G y AF.

3.-Valores Distintos. Para todo A que aparezca en G

val(A[SJ=val(A[RJ) (4,23)

UNIÓN

1.- Cardinalidad.

card(T) :;; card(R) +card(S) (4,24)

2.-Tamaño.

size(T) = size(R) = size(S) (4,25)

3.- Valores Distintos.

val(A[T)) :;; val (A[R)) + val (A[SJ) (4,26)

59

Page 58: Manejo de fragmentación y replicación transparente en

DIFERENCIA

1.- Cardinalidad

2.-Tamaño.

3.- Valores Distintos.

PRODUCTO CARTESIANO 1.- Cardinalidad

2.-Tamaño

3.- Valores Distintos

max(O.card(R) - card(S)) ~ card(T) ~ card(R)

size(T) = size(R)= size(S)

val(A[T)) ~ val(A[R])

card(T) = card(R) X card(S)

size(T) = Size(R) + size(S)

Iguales a los que existan en las relaciones operandos

JOIN T=RJNA=BS

1.- CARDINALIDAD

(4,27)

(4,28)

(4,29)

(4,30)

(4,31)

card(T) ~ card (R) X card(S) Sin embargo. si asumimos que todo valor de A en R aparece como

valor de B en S y viceversa val(A[R])= val(B[S)) y que ambos atributos están uniformemente

distribuidos sobre R y S

card(T)=(card(R) X card(S))/val(A[R)) (4,32)

Si uno de los atributos. como A. es una llave de R

card(T)=card(S) (4,33)

2.-TAMAÑO

size(T) = size(R) + size(S) (4,34)

3.- VALORES DISTINTOS

val(A[T)) ~ min(val(A[R)).val(B[S])) (4,35)

Si A no es un atributo join

val(A[T)) ~ val(A[R))+val(B[S)) (4,36)

SEMI-JOIN T=R SJ A=B S

60

Page 59: Manejo de fragmentación y replicación transparente en

1.- CARDINALIDAD. Si utilizamos p como en el caso de la selección

p= val(A[S]) /val(dom(Al)

2.-TAMAÑO

dom(A)=número de valores distintos del dominio A

card(T)= p X card(R)

Es el mismo tamaño que el del primer operando.

3.- VALORES DISTINTOS

Con n = card(R) m = val{A[R]) r = card {T)

c(n.m.r) ::: r para r < m/2

( r+m ) / 3 para m/2 ::;; r < 2m

m parar::?: 2m

Si A es el único atributo que aparece con el semi-join

val (A[T)) = p X val(A(R))

4.6.2 Modelo para Optimar Consultas

(4,37)

(4,38)

(4,39)

(4,40)

Seguiremos el modelo de grafos de optimización sugerido por Ceri y Pelagatti [Ceri. Pelagatti

1984] utilizando sólo las operaciones más comunes. Los operadores unarios que se aplican al

mismo fragmento se pueden reunir en la aplicación y ejecutarse antes de ejecutar

operaciones binarias. con lo cual generalmente se reduce la transmisión de datos. Las

operaciones binarias son críticas por la posibilidad de que los operadores aparezcan en

distintos nodos y por lo tanto se requiere la transmisión de dalos. Para el modelo no se

consideran producto cartesiano ni diferencia. y se presta especial atención a las uniones y

joins. En el modelo. los nodos representan fragmentos reducidos. los joins se representan por

arcos entre nodos etiquetados con la especificación del join. y las uniones son representadas

por hipernodos que contienen sus operandos.

El modelo considera las siguientes suposiciones:

1.- Por cada consulta se asume una materialización dada y se opera sobre los fragmentos

localizados.

2.- Se considera inicialmente sólo los requerimientos de transmisión.

3.- Los costos de transmisión no dependen de los nodos que intervienen en la comunicación.

61

Page 60: Manejo de fragmentación y replicación transparente en

4.- Para evaluar el perfil. se asume que los valores son uniformemente distribuidos sobre las

tuplas de los fragmentos y que todos los atributos son indep~ndientes.

5.- No se consideran consultas que incluyan producto cartesiano ni diferencia.

6.- Se tratará por separado el caso de consultas que sólo requieren joins y las consultas que

requieren joins y uniones.

ConsuHas que sólo requieren Jolns

En esta parte del modelo no se emplean fragmentos. sino relaciones para denotar relaciones

tanto fragmentadas como no fragmentadas. Los algoritmos se puede clasificar en aquellos

que utilizan semi-joins. y los que no los utilizan.

Programas que utilizan semi-joins.- Un programa semi-join entre dos relaciones R y S sobre los

atributos A y B se define como (R SJA=B SJ JNA=BS y equivale a RJNA=aS. Si R y S se localizan en los

nodos r y s respectivamente la ejecución de un programa semi-join corresponde a:

1. Enviar P Ja(S) al nodo r. con un costo de:

CO+ClXsize(B) X val(B[S))

2. Calcular el semi-join en r. sin costo de transmisión

R'=R SJA=BS

3. Enviar R' a s. con el siguiente costo:

Co+C, X size(R) X card(R')

4. Se calcula el join en s. sin costo.

Por lo tanto el costo total es el siguiente:

CSJ = 2 X Co + C, X (size(BJ X val(B[S]+size(R)Xcard(R'))

(4,41)

(4,42)

(4,43)

(4,44)

El semi-join no es simétrico. por lo que se requeriría el cálculo de (S SJ R)JN R para conocer el

semi-join más eficiente. o bien. decidir en base al lugar de la requisición. También se puede

considerar el empleo del join directo. transmitiendo un operando de un nodo al otro:

CJN=Co+C, X size(R) X card(R) (4,45)

Ceri y Pelagatti citan algunas estrategias para modelar las consultas con los algoritmos

utilizados por: a)SDD-1. b)Apers. Hevner y Yao. c) R•

Consultas que ufllizan Jolns y uniones

El criterio básico que se ha utilizado en este tipo de consultas es la conmutatividad de los joins

y las uniones. El problema principal es realizar los joins entre fragmentos. ya que las uniones no

requieren de una secuencia especifica para su ejecución.

62

Page 61: Manejo de fragmentación y replicación transparente en

Los joins y uniones se pueden conmutar en las siguientes formas:

1. Join no distribuido.- Es la forma más sencilla. Se determinan los nodos a utilizar y se ejecutan

las operaciones tratando de reducir los joins.

o Fragmento de la o R, relación R1

~ R2 D Fragmento de la u

relación S1 () RJ o Hipernodo representando unión

Fig. 4.12 Join no distribuido.

2. Join Distribuido.- Se puede realizar primero una unión para obtener la relación resultante. y

en base al conocimiento que se tenga de los fragmentos realizar joins como se indica en las

consultas que sólo requieren joins.

R, ~S, R2 \___ S2

,----..._

\ RJ '-- SJ \

-· ./

Fig. 4.13 Join Distribuido

Se pueden realizar uniones parciales. con lo que el grafo puede presentar la siguiente forma:

/----/,'R, Q \

:: 64~~1 ,.....____ __ _

Fig. 4. 14 Uniones parciales.

4. 7 ADMINISTRACIÓN DE TRANSACCIONES

Una transacción es un conjunto de operaciones que deben ser ejecutadas. en este caso en

forma distribuida. Debe contar con las siguientes características:

63

Page 62: Manejo de fragmentación y replicación transparente en

Atomicidad. Se deben realizar todas las operaciones o ninguna. Algunas causas por las

cuales una transacción debe ser rechazada son: un nodo abortó la transacción. uno de los

nodo no responde. sobrecarga en las líneas de comunicación. el uso de candados para

proteger la información en uno de los nodos. La atomicidad hace que las transacciones sean

acordadas o abortadas. Normalmente el conjunto de operaciones que enmarcan una

transacción son begin-transaction, comrni t o abort.

DurabWdad. Una vez que el sistema señala que una transacción fue acordada. se debe

garantizar que el valor de la transacción no se va a perder a pesar de fallas futuras. La

actividad que provee durabilidad en caso de fallas se llama recuperación de la base de

datos.

SeriabWdad. Si varias transacciones se ejecutan concurrentemente, el resultado debe ser el

mismo al que se llegaría si su ejecución fuera serial. Esto se loga mediante el control de

concurrencias. que veremos más adelante y en el punto 4.8.

Alslamlento. Una transacción incompleta no debe mostra sus resultados a otra transacción

antes de ser acordada. Esta propiedad se requiere para evitar el problema de abortar en

cascada. la cual puede surgir al abortar una transacción que afectó valores requeridos por

otras transacciones. las cuales deberán ser igualmente abortadas.

4. 7.1 Objetivos en la Administración de Transacciones.

Se consideran como objetivos la eficiencia. conflabffldad y concurrencia de transacciones.

Los objetivos están fuertemente interrelacionados y su implementación puede afectar

sensiblemente el desempeño. En los puntos 4.5 y 4.6 se consideraron estrategias para accesar

en forma eficiente la base de datos distribuida. además se debe tomar en cuenta: a) La

utilización del CPU y memoria principal de cada uno de los nodos. b) El tipo de mensajes de

control que utilizarán para coordinar las transacciones c) El tiempo de respuesta que. ofrece la

transacción d) La disponibilidad del sistema en general.

La administración de las transacciones debe controlar la ejecución de las mismas cubriendo

los siguientes puntos:

1.- Las transacciones deben ser atómicas. durables. seriables. y aisladas.

2.- Se deben reducir los costos de memoria. el uso del CPU. las señales de control y el tiempo

de respuesta.

64

Page 63: Manejo de fragmentación y replicación transparente en

3.- Se debe maximizar la disponibilidad del sistema.

4. 7.2 Las Transacciones Distribuidas

Una transacción es un subconjunto de operaciones realizadas por una aplicación. Se suele

delimitar el grupo de operaciones por los indicadores begin_transaction y comrnit o

abort. El uso de este tipo de transacciones requiere del empleo de agentes. es decir.

procesos que se comuniquen mediante mensajes. Para que dichos agentes logren atomicidad

es necesario que:

1.- Exista un agente raíz que inicie la transacción

2.- El agente raiz tenga la responsabilidad de ejecutar la sentencia begin_transaction y

comrni t o abort

3.- Sólo el agente raíz tenga la capacidad de crear nuevos agentes.

Las primitivas begin_ transaction, conuni t y abort que surgen del agente raíz no son

locales. sino que afectan a todos los agentes involucrados en la transacción. Es conveniente

que cada nodo cuente con un administrador de transacciones local (ATLJ capaz de

implementar las transacciones locales y utilizar técnicas centralizadas. con la capacidad de

recuperación después de fallas.

Empleo de BHácor~s

Las fallas con las que se puede presentar un nodo son a) fallas sin pérdida de información. b)

fallas con pérdida de información en almacenamiento volátil y c) fallas con pérdida de

información en almacenamiento no volátil. Una técnica común para la implementación de

transacciones que toleren fallas es el uso de bitácoras de operaciones. La bitácora permite

deshacer las operaciones de una transacción y volverlas a realizar con las primitivas undoing

y redoing respectivamente. Si la bitácora de un nodo después de una caída. señala que una

transacción no llegó al commit, ésto se debe deshacer. Si lo transacción llegó al comrnit,

entonces se debe rehacer. Por lo tonto una bitácora debe contar con lo siguiente

inf ormoción:

1. Identificador de la transacción.

2. Identificador del registro.

3. Tipo de acción (insertar. borrar. modificar).

4. El valor anterior del registro

5. El valor nuevo del registro

65

Page 64: Manejo de fragmentación y replicación transparente en

6 Información auxiliar para el proceso de recuperación. generalmente un apuntador al

registro previo de bitácora que corresponda a la misma transacción.

los reglas básicas poro el uso de la bitácora se pueden resumir en:

1.- Antes de realizar uno acfualizoción en lo base de datos. se debe registrar la operación en

la bitácora en forma estable.

2.- Antes de acordar una transacción. todos los registros de la bitácora correspondientes o la

transacción deben ser almacenados en registro estable.

El procedimiento de recuperación. que se utiliza con las bitácoras cuando existe pérdida de

memoria volátil es el siguiente:

1. Se determinan todas las transacciones sin commit que deben deshacerse. Estas se

reconocen por tener un begin_transaction sin comrnit ni abort.

2. Se determinan las transacciones a rehacer. En principio aquellas que tienen registros con

comrni t en la bitácora. a menos que se utilicen puntos de registro.

3. Deshacer o rehacer las transacciones determinados en los puntos 1 y 2.

Para la recuperación de las transacciones distribuidas se asume que cada nodo cuenta con

el mecanismo de recuperación de transacciones de sistema centralizado. Cada agente

genera primitivas begin_transaction. commit y aborta su ATL y sus primitivas son local_begin.

local_commit y locol_obort. ejecutando subtransacciones. En lo transacción distribuida se

requiere que todos los nodos ejecuten la transacción o que ninguno la ejecute.

El Protocolo de Compromiso a Dos Fases (2 Phase Commltment Protocol -2PCP·)

En el 2PCP básico existe un agente administrador de transacciones distribuidas (agente ATD)

con un papel especial de coordinador. Los demás agentes son llamados participantes. El

agente ATD es quien decide si la transacción debe ser abortada o acordada. Cada

participante se encuenlra en un nodo diferenle y la idea básico del 2PCP es realiza una

decisión paa todos los porticipanles.

Fase l. El coordinador escribe en su bilácora un registro llamado prepare. donde graba los

identificadores de los participantes. luego prepara a los participantes para realizar un comrni t •

Después el coordinador activa un mecanismo temporizador. el cual interrumpe al coordinador

después de cierto tiempo. Los participantes envían un READY comprometiéndose a

almacenar en forma estable a)Todo la información requerida para hacer el comrnit local de

la subtransacción b) un registro de bitácora llamado ready. Si el coordinador recibe todos

66

Page 65: Manejo de fragmentación y replicación transparente en

los READY decidirá por un cornmi t. pero si recibe un ABORT o no recibe respuesta de un nodo

después de que expire su temporizador decidirá abortar la transacción.

Fase 2. El coordinador inicia esta fase grabando su decisión en la bitácora como un registro

global-cornmit o global-abort. Luego informa a todos los participantes su decisión con un

mensaje. Los participantes escriben commi t o abort en su bitácora según el mensaje que

reciban del coordinador. Finalmente. todos los participantes mondan un ACK al coordinador

y ejecutan los acciones requeridas para acordar o abortar lo subtronsacción. Cuando el

coordinador recibe el ACK de todos los participantes escribe un registro en la bitácora

llamado complete. Después de escribir este registro. el coordinador puede olvidar la

transacción.

Coordinador Participante

1 Prepara el acuerdo

2 Preparar poro acuerdo

3 Acordar

3 Acordar

Finalizar

Fig. 4.15 Comunicación en el Protocolo de Compromiso a dos Fases.

Arquitectura para las transacciones distribuidas

La arquitectura en este tipo de transacciones debe considerar el sistema operativo sobre el

que se trabajo. especialmente lo administración de los procesos y lo intercomunicación entre

ellos: así como las características de comunicación sobre la red. La comunicación entre

nodos se puede realizar mediante el establecimiento de sesiones. o bien mediante

datagramas. Además se ha de considerar lo estructura que tomará el sistema. que puede ser

de dos formas básicos: centralizado o jerárquico.

67

Page 66: Manejo de fragmentación y replicación transparente en

Estructura Centralizada.- el agente raíz activa y controla a los agentes

Fig. 4.16 Transacciones Distribuidas con Estructura Centralizada

Estructura Jerárquica.- Cada agente puede activar otros agentes formando un árbol de

agentes.

Fig. 4. 17 Transacciones Distribuidas con Estructura Jerárquica

Estructura lineal.-

Fig. 4.18 Transacciones Distribuidas con Estructura Linear

Estructura distribuida.-

Fig. 4.19 Transacciones Distribuidas con Estructura Distribuida

La estructura que se adopte depende del tipo de comunicación que se requiera y debe

considerar los costos en cuanto número de mensajes requeridos y el tiempo.

68

Page 67: Manejo de fragmentación y replicación transparente en

4.8 CONTROL DE CONCURRENCIAS

Dos de los principales mecanismos que se utilizan para controlar las concurrencias en los

sistemas distribuidos son los candados. y las estampillas de tiempo. En esta sección se presenta

el mecanismo de candados a dos fases. la detección y prevención de abrazos mortales.

mecanismos de estampillas de tiempo y el método optimista para el control de concurrencias.

El concepto de seriablidad tiene un papel primordial en el control de concurrencias. Para

presentarlo utilizaremos los siguientes elementos:

R1(x): que significa una operación de lectura de x ejecutada por lo transacción i.

W1(x): operación de escritura de x ejecutada por la transacción i.

read-set: conjunto de lecturas.

write-set: conjunto de escrituras .

Itinerario (S): es la secuencia de operaciones ejecutadas por la transacción.

T1: Transacción i.

Decimos que TI y Tj son dos transacciones ejecutadas serialmente en un itinerario S si la última

operación de Ti precede a la primera de Tj en S y viceversa. De otra forma la operación es

concurrente (En un sistema centralizado). Es posible ejecutar itinerarios concurrentemente con

los mismo efectos que una ejecución serial. Se llama itinerario correcto a aquel que es

equivalente a una ejecución serial. Dos itinerarios son equivalentes si:

• Condición 1. Cada operación de lectura lee los valores de los datos que son producidos

por la misma operación de escritura en ambos itinerarios.

• Condición 2. La operación de escritura final de cada dato es la misma en ambos itinerarios.

S1 y S2 son equivalentes si para cada par de operaciones conflictivas Oi y Ox tales que Oi

preceda a Ox en S1. entonces también Oi precede a Ox en S2.

Dos operaciones están en conflicto si ambas operan sobre el mismo dato. y una de ellas es

una operación de escritura. siendo que las operaciones provienen de diferentes

transacciones.

Si aplicamos un mecanismo de control de concurrencias local a cada nodo. podemos

asegurar que todos los itinerarios locales están serializados. Pero esto no es suficiente, se

requiere que:

1.- Cada itinerario local Sk sea serializable

69

Page 68: Manejo de fragmentación y replicación transparente en

2.- Exista un ordenamiento total de T1 .... Tn tal que si Th < T1 en el ordenamiento total. entonces

exista un itinerario serial Sk· tal que Sk sea equivalente a Sk· y Th < T1 en el itinerario serial Sk·,

para cada nodo k donde ambas transacciones ejecuten alguna acción.

Proposición: Sean T1 .... .Tn un conjunto de transacciones. y E una ejecución de las

transacciones modeladas por los itinerarios S 1 ... Sm . E es serialmente correcta si existe un orden

total de las transacciones tal que para cada par de operaciones conflictivas Oh y 01 de las

transacciones T h y T1 respectivamente Oh precede Oi en cualquier itinerario S1 ..... Sm si y sólo si

T h precede a T1 en el ordenamiento_ total.

4.8.1 Candados a dos Fases

El uso de candados consiste en que si una transacción toma un registro. le debe poner un

candado para que nadie pueda hacer uso de él. hasta que la misma transacción quite el

candado. Los candados pueden ser compartidos cuando se usa lectura. o exclusivo cuando

requieren escritura. Una transacción bien formada es aquella que siempre pone candados de

modo compartiao antes de realizar una lectura. y pone candados de modo exclusivo en los

datos antes de. escribir sobre ellos. Para que una transacción utilice correctamente el

mecanismo de candados debe emplear transacciones bien formadas.

Las siguientes reglas de compatibilidad son necesarias para el uso de candados:

1. Una transacción puede poner candados a datos en modo compartido si el dato no tiene

otro candado. o si el dato tiene candado de tipo compartido que corresponda a otra

transacción.

2. Una transacción puede poner candados exclusivos sólo si el dalo no tiene candado de

ningún tipo.

Dos transacciones están en conflicto si tratan de poner candado al mismo dato con dos

modos incompatibles: exclusivo-compartido o exclusivo-exclusivo. K. Eswara en [Eswaran 1976]

prueba que la ejecución de transacciones concurrentes es correcta si se observan tas

siguientes reglas:

1. Las transacciones son bien formadas

2. Se observan las reglas de compatibilidad

3. Cada transacción no pide nuevos candados después de haber liberado alguno.

La última regla define las transacciones aseguradas a dos fases (2-phase-locked 2PLJ. porque

para cada transacción hay una primera fase en la que se ponen candados. y una segunda

fase en la que se liberan.

70

Page 69: Manejo de fragmentación y replicación transparente en

Para asegurar la propiedad de aislamiento de una transacción debe mantener sus candados

exclusivos hasta realizar el commit. Un problema a superar en el uso de los candados son los

abrazos mortales que se verá en el punto 4.8.2.

El uso de candados en las bases de datos distribuidas pueden utilizar el mecanismo 2PL. En

este caso el agente administrador de transacciones distribuidas debe considerar que se

puede estar trat'iajando con varias copias (replicaciones) de datos. lo cual se puede resolver

con uno de los siguientes esquemas:

1. Candado de escritura en todas las copias, candados de lectura en una copia.

2. La mayoría de las copias con candado.

3. Copia primaria con candado.

4.8.2 Detección y Prevención de Abrazos Mortales

Los abrazos mortales se dan cuando entre dos transacciones. cada una tiene bloqueado un

dato y se encuentra esperando obtener un dato diferente. el cual esta bloqueado por la otra

transacción con un conflicto de modo de candado. En este conflicto las transacciones se

quedan bloqueodas hasta que se realice una intervención del sistema para suspenderlas.

Al detectar un candado mortal se debe abortar una o más transacciones y reiniciarlas, por lo

cual se ha de minimizar el costo de esta operación. El primer paso es detectar el deadlock, lo

cual se puede realizar con diferentes métodos, centralizado o jerárquico, con procesos que se

encarguen de controlar la situación de espera y que detecten que procesos se pueden

abortar para obtener el menor costo.

Un problema con la detección de los dcadlock es que su ejecución se basa en tiempos de

respuesta. por lo que el retardo se pude confundir con un deadlock. Una segunda opción

para evitar los abrazos mortales es prevenirlos, no dejando correr procesos que pudieran

realizar transacciones con posibilidad de generar abrazos mortales

4.8.3 Estampillas de Tiempo

En este método se asigna una estampilla de tiempo única a cada transacción. Las

transacciones se procesan en base a la estampilla, con lo que se llega a una ejecución

equivalente a una ejecución en orden a las estampillas. El control permite a una transacción

leer o escribir el dato x sólo si x ha sido escrito por una transacción más antigua: de lo contrario

ignora la operación e inicia nuevamente la transacción.

71

Page 70: Manejo de fragmentación y replicación transparente en

Mecanismo Básl-:o

1 Cada transac.ción recibe una estampilla de tiempo cuando es inicializada en su nodo

origen.

2 Cada lectura o escritura requerida por una transacción tiene la estampilla de la transacción.

3 Para cada dato x. la mayor estampilla de lectura y la mayor estampilla de escritura son

registradas como RTM(x) y WTM(x) respectivamente.

4 Sea TS la estampilla de la operación de lectura sobre x. Si TS < WTM(x) se desecha la

operación de lectura y la nueva transacción se genera con una nueva estampilla. De lo

contrario. se ejecuta la operación de lectura y la nueva transacción se genera con una nueva

estampilla. De no ser así se ejecuta la operación de lectura y RTM(x) se modifica por

max(RTM(x).TS).

5. Sea TS la estampilla de una operación de escritura y TS < RTM(x) o TS < WTM(x) se desecha la

operación. en caso contrario se ejecula y WTM(x) cambia a TS.

La ventaja de este método sobre los candados. es que no genera abrazos mortales.

4.8.4 Método Optimista para el Control de Concurrencias.

En lugar de suspender o rechazar operaciones desde un principio como 2PL y las estampillas.

siempre ejecuta la transacción completa. Después de ejecutar la transacción realiza una

prueba para ver si las operaciones no tienen problema. La prueba es de seríabílidad. si una

transacción no la pasa. esa transacción debe ser iniciada nuevamente.

Este método sigue tres fases:

l Fase de Lectura. Se leen valores de la base. se determinan nuevos valores. se calcula y se

predefinen nuevos valores a escribir.

2 Fase de Validación. Se verifica que la transacción no tenga inconsistencias.

3 Fase de Escritura. Se aplican los cambios si la validación no encontró problemas. de lo

contrario inicia nuevamente la transacción.

4.9 ADMINISTRACIÓN

La administración de la base de datos involucra tanto aspectos técnicos como políticas

odminislrativas. Sólo se tratará la parte técnica. principalmente lo relacionado con el

catálogo de información. El tema principal en la administración de los SMBDD es el grado de

autonomía que se de a cada nodo. Las soluciones extremas son. la ausencia de autonomía y

la administración completamente autónoma.

72

Page 71: Manejo de fragmentación y replicación transparente en

4.9.1.3 Nombre de Objetos y Administración Autónoma

Al utilizar nodos autónomos surgen algunos problemas con respecto a la asignación de

nombres. En este los usuarios de cada nodo manejan, crean y nombran sus datos en forma

independiente de cualquier control global. al tiempo que permiten a varios usuarios compartir

datos. Por lo tanto

1 la definición de datos debe ser ejecutada localmente.

2 Diferentes usuarios deben poder dar el mismo nombre a datos diferentes.

3 Usuarios diferentes, en nodos diferentes, deben poder hacer referencia a los mismos datos.

El sistema R* utiliza cuatro componentes para los nombres:

a) Identificador del usuario que creó el objeto

b) Nodo del usucrio

c) Nombre del objeto

d) El lugar donde se creo el objeto

Por ejemplo:

[email protected]@cuba

En este caso el usuario es 01302032. de mexico. creó la relación global EMP en cuba. Es

recomendable que el sistema permita definir sinónimos que mapeen los nombres simples a

nombres del sistema global. los sinónimos se deben crear por un usuario específico en un

nodo específico.

4.10 CONCLUSIONES

los SMBDD ofrecen múltiples ventajas en comparación a los SMBD. Para su diseño se siguen

cualro fases:

1 J Diseño del esquema global.

En esta fase se define el tipo de esquema que debe utilizarse. los diccionarios o catálogos

globales, y el tipo de sistema que puede ser distribuido o multi base de datos.

2) Diseño de fragmentación.

La fragmentación se puede realizar en forma horizontal. en base a predicados. O bien en

forma vertical, dividiendo el esquema de una relación global de tal forma que el esquema

queda dividido en fragmentos. Para reconstruir las relaciones, en el primer caso se recurre a

la unión de fragmentos. y en el segundo al producto cartesiano.

3) Diseño de localización.

73

Page 72: Manejo de fragmentación y replicación transparente en

4.9.1.3 Nombre de Objetos y Administración Autónoma

Al utilizar nodos autónomos surgen algunos problemas con respecto a la asignación de

nombres. En este los usuarios de cada nodo manejan. crean y nombran sus datos en forma

independiente de cualquier control global, al tiempo que permiten a varios usuarios compartir

datos. Por lo tanto

1 La definición de datos debe ser ejecutada localmente.

2 Diferentes usuarios deben poder dar el mismo nombre a datos diferentes.

3 Usuarios diferentes, en nodos diferentes. deben poder hacer referencia a los mismos datos.

El sistema R• utiliza cuatro componentes paro los nombres:

o) Identificador del usuario que creó el objeto

b) Nodo del usuario

c) Nombre del objeto

d) El lugar donde se creo el objeto

Por ejemplo:

[email protected]@cuba

En este caso el usuario es 01302032. de mexico, creó la relación global EMP en cubo. Es

recomendable que el sistema permito definir sinónimos que mapeen los nombres simples a

nombres del sistema global. Los sinónimos se deben crear por un usuario especifico en un

nodo especifico.

4.10 CONCLUSIONES DEL CAPÍTULO 4

Los SMBDD ofrecen múltiples ventajas en comparación a los SMBD. Para su diseño se siguen

cuatro fases:

1) Diseño del esquema global.

En esta fase se define el tipo de esquema que debe utilizarse. los diccionarios o catálogos

globales, y el tipo de sistema que puede ser distribuido o multi base de datos.

2) Diseño de fragmentación.

La fragmentación se puede realizar en forma horizontal. en base a predicados. O bien en

forma vertical. dividiendo el esquema de una relación global de tal forma que el esquema

queda dividido en fragmentos. Para reconstruir las relaciones, en el primer caso se recurre a

la unión de fragrr.entos. y en el segundo al producto cartesiano.

3) Diseño de localización.

74

Page 73: Manejo de fragmentación y replicación transparente en

La localización de fragmentos puede permitir redundancia o replicas de fragmentos. Las

réplicas permiten mayor disponibilidad para la lectura de información. pero requieren formas

más complejas para la modificación de datos. En esta fase se debe considerar el beneficio

de localizar los fragmentos en un nodo. contra el costo de su mantenimiento.

4) Diseño de la estructura física.

La última etapa del diseño especifica la estructura que debe mostrar el sistema. los

mecanismos que se emplean para comunicación y los recursos con los que se cuenta.

Los sistemas distribuidos homogéneos se distinguen de los heterogéneos por la forma en que

trabajan los conceptos que podemos observar en el siguiente cuadro:

Esquema Conceptual Global Tipo de Arquitectura

Sistemas Homogéneos Necesario SMBDD

Sistemas Heterogéneos Opcional Sistema Multi Base de Datos

La figura 4.5 muestra el papel de un directorio/diccionario global en un SMBDD. este elemento

es el que permite manejar en forma transparente y uniforme la fragmentación y replicación

transparente en el prototipo que se presenta en el capítulo 7. En la misma figura se puede

observar cómo el esquema local trabaja de la misma forma que un SMBD centralizado. con

administración local. por lo que se utilizaron servidores de SMBD para implementar el

prototipo.

La figura 4.6 muestra los componentes que debe considerar un SMBDD. enlre los cuales

encontramos el optimizador de consultas globales y el monitor de ejecución global. Estos dos

módulos deben encargase de las siguienles actividades:

a) Paso de consultas globales a consultas fragmenladm.

Es recomendable el trabajo con álgebra relacional para poder seguir los 6 criterios expuesto

en el punto 4.5.

b) Selección de las estrategias de acceso(4.6)

Considerando el costo de transmisión.

75

Page 74: Manejo de fragmentación y replicación transparente en

c) La administración de transacciones (4.7)

Las cuales deben cumplir con las cualidades de atomicidad. durabilidad. seriabilidad y

aislamiento.

e) El control de concurrencias(4.8).

Que puede ser tratado mediante candados. estampillas de tiempo o bien con el método

optimista para el control de concurrencias.

Ventajas Desventajas

Candados Asegura seriabilidad Bloqueante

Abrazos Mortales

Estampillas Evita Abrazos Mortales Las transacciones pueden ser

abortadas fácilmente

Método Optimista Siempre ejecuta la Sólo se recomienda, si es

transacción completa y mayor la probabilidad de

después analiza los resultados. tener éxito en el analisis de

resultados

La administración del sistema (4.9) se realiza con el diccionario/directorio global desde el

catálogo del esquema global.

76

Page 75: Manejo de fragmentación y replicación transparente en

.5 ~lc~l64JIMl!flt'lff d'J5 f '1íl~d'J CO!t'lJ.5>1!1~m ~INJ .~1.5>1~ liilbU'JlcJd'JID)OW( !Dile ~6~51c.5 ID)f ID)~ffO,)J

lM5n<l[¡)l~mo

En la actualidad existe una gran variedad de marcas comerciales que se dedican al

desarrollo de Sistemas Manejadores de Bases de Datos. Para el desarrollo de este trabajo se

optó por el SMBD Sybase SQL Server y las bibliotecas Open Client y Open Server. Sybase ha

sido calificado. junto con Oracle. lnformix. SQL Server, CA-Open lngres y DB2 como uno de los

6 grandes Servidores de Bases de Datos [Rennhackkamp M. 1996). De estos manejadores.

Sybase, 082 y CA-Open lngres permiten el empleo del protocolo de compromiso a dos fases

con servidores de diferentes proveedores en forma transparente.

Por otra parte. Open Client y Open Server son dos productos excepcionales por su

portabilidad y capacidaq para manejar el paradigma cliente servidor. La arquitectura de

estos productos soporta nuevas tecnologías de comunicación y estándares. manteniendo

compatibilidad con versiones anteriores.

A lo largo de esté capítulo veremos las características de las herramientas que brinda Sybase.

5.1 LA ARQUITECTURA CLIENTE SERVIDOR

En esta arquitectura las operaciones que realizan las aplicaciones se dividen entre el cliente y

el servidor. El cliente es el responsable de administrar la interfaz del usuario (presentar y

manipular datos). mientras que el servidor de la base de datos es el responsable del

almacenamiento y acceso a la base de datos. En la arquitectura cliente servidor. la

recuperación de datos. seguridad y administración de transacciones se centraliza en el

servidor. Las funciones del SMBD son ejecutadas por el servidor en un ambiente cliente

servidor.

Según Sinha [Sinha 1992) un cliente es un proceso que interactúa con el usuario y tiene las

siguientes características:

• El cliente presenla la interfaz de usuario; que es el programa de aplicación que controla las

pantallas del usuario, interpreta los dalos recibidos del servidor y presenta los resultados de

las consultas.

77

Page 76: Manejo de fragmentación y replicación transparente en

• El cliente forma consultas o comandos en un lenguaje específico. generalmente SQL. para

reunir los datos que requiera la aplicación y enviar estas consultas al servidor:

frecuentemente. la preparación de consultas es transparente al usuario.

• Las funciones del cliente son ejecutadas en una computadora diferente a la que ejecuta

las funciones de servidor de base de datos.

El servidor tiene las siguientes características:

• El servidor responde a las consultas del cliente. verifica la sintaxis de las instrucciones. revisa

los derechos de acceso. ejecuta las instrucciones y responde con los datos requeridos o

con mensajes de error.

• El servidor se oculta del cliente y del usuario final. de tal forma que el usuario no advierta su

existencia como software ni hardware.

La relación cliente servidor se puede ejecutar aún entre diferentes tipos de sistemas operativos.

Fred McFadden y Jeffrey Hoffer [McFadden.Hoffer 1994) señalan las siguientes ventajas de la

arquitectura Cliente/Servidor en las bases de datos:

• Permite a las compañías hacer uso de los beneficios de las microcomputadoras.

• Permite que un mayor número de procesos sean ejecutados más cerca de donde se

originaron. reduciendo el tráfico en la red.

• Facilita el uso de recursos gráficos

• Permite y motiva la aceptación de sistemas abiertos.

Y menciona algunos proveedores de esta tecnología:

• 082/2 de IBM Corporation

• Oracle Server de Oracle Corpora tion

• SQLBase Server de Gupta T echonlogies

• Microsoft's SQL Server

• SQL Server de: Sybase, lnc.

• Borland's lnterbase Client/Server DBMS

La diferencia principal entre una base de datos con arquitectura cliente servidor y otra

totalmente centralizada radica en el cliente como entidad capaz de realizar procesos en el

sistema.

Open Client y Open Server utilizan esta tecnología. Open Server se describe en 5.4.1. Open

Client es una interfaz 3GL que trabaja tanto con SQL Sever de Sybase como con algunos otros

78

Page 77: Manejo de fragmentación y replicación transparente en

Servidores. Se basa en las bibliotecas DB-Library. un conjunto de rutinas y macros que le

permiten a una aplicación interactuar con un Servidor. Maneja comunicación y transferencia

de datos entre el Servidor y la aplicación. Provee una interfaz consistente para programas

escritos en C.

DB-Library permite habilitar la base de datos para que sea parte de una aplicación integral.

Las instrucciones T-SQL (ver punto 5.2) son incorporadas en aplicaciones escritas en lenguaje

C. de tal forma que éstas pueden traer y modificar valores de la base de datos. Los valores de

las bases de datos pueden ser guardados en variables del programa para su manipulación en

una aplicación de la misma forma en que se pueden utilizar variables para modificar la base

de datos.

La figura 5. 1 muestra las principales funciones que provee Open Client para que un cliente

pueda comunicarse con un Servidor SQL.

dblogin ()

dbopen ()

dbcmd()

dbsqlexec ()

1/batch

dbresults()

1 /stmt

dbclose () dbexit ()

Obtener estructura de acceso

Establecer conexión con el servidor

Mandar instrucciones SQL al buffer cmd

Enviar las instrucciones al servidor

Obtener el siguiente resultado

Procesar los datos obtenidos

Terminar

Falla Password erróneo

Falla Error al

compilar sentencias

Falla Error por falta de permisos

Fig. 5.1 Funciones de Comunicación Cliente -Servidor en Sybase.

79

Page 78: Manejo de fragmentación y replicación transparente en

5.2 LENGUAJES TRANSACCIONALES

SQL ha sido hasta la fecha el estándar para consultas en bases de datos. Sin embargo, los

proveedores han complementado el estándar con lenguajes extendidos. Sybase utilizado

Transact-SQL{T-SQL). que es una extensión del SQL ANSI. En él se incluyen definiciones de

datos. manipulación de datos. control de datos. instrucciones para control de flujo. tipos de

datos que pueden ser definidos por el usuario. procedimientos y disparadores. A continuación

se muestran las instrucciones básicas que brinda el servidor SQL de Sybase.

5.2.1 El Nombre de los Objetos en Transact-SQL

El nombre que se dé a los objetos debe ser menor a 30 caracteres. La sintaxis es la siguiente:

[[base_de_datos].dueño.]objeto[.columna]

5.2.2 Lenguaje de Definición de Datos

Comando:

Sintaxis:

Comando:

Sintaxis:

Comando:

Sintaxis:

create database

crea te database nombre_basededatos

on devicename =tamaño[. devicenome =tamaño •... )

[log on devicename = tamaño]

El tamaño se define en Megabytes y los dispositivos (devices) se crean con la

instrucción disk init.

Como el manejador utiliza varias bases de datos. se puede cambiar de base de

datos de trabajo utilizando el comando use nombre_basededatos

create table

crea te table nombre_fab/a

( columna tipo_columna not null/null

[ .... ))

alter table

al ter table nombre_tabla

add columna tipo_columna not null/null

[ .... ]

80

Page 79: Manejo de fragmentación y replicación transparente en

Comando:

Sintaxis:

Comando:

Sintaxis:

drop table

drop table_name

c.::eate rule

create rule nomJule

as @campo proposición

Después. la regla debe ser asociada a una columna de una tabla

sp_bindrule 'nomJule','Tabla.columna·

Para borrar una regla. es necesario primero quitar la asociación

sp __ unbindruel 'fabla.columna·

y después borrarla

drop rule nomJule

5.2.3 Lenguaje de Manipulación de Datos

COMANDO: in.sert

SINTAXIS: insert into tabla [(columna, columna .... )]

values (valor[.valor ... ])

COMANDO: update

SINTAXIS: update tabla

set columna = valor

[where expresión]

COMANDO: delete

SINTAXIS: dclete tabla

[where expresión]

La extensión de T-SQL permite que la cláusula where realice un join con otras tablas. Por

ejemplo:

delete autor

from autor. titulo

whe re autor.au_id = titulo.au_id

81

Page 80: Manejo de fragmentación y replicación transparente en

Sybase permite el uso de tablas temporales. las cuales pueden ser creadas por cualquier

usuario y son eliminadas al terminar la sesión. El sistema considera como tablas temporales

aquéllas cuyo nombre inicie con el carácter #.

Para las consultas T-SQL utiliza SQL ANSI y cuenta con varias extensiones como:

Uso de equivalencias del tipo% y utilizando la cláusula like estándar:

[x-z] Equivale a cualquier carácter que se encuentre en el rango x-z.

(Ax-z] Excluye a cualquier carácter en el rango x-z.

[xyz) Compara con los caractere~ xyz.

Empleo de concatenación con el carácter + y funciones como substring (), right (),

upper(), convert().

El uso de order by permite utilizar más de una columna para la ordenación. y se puede

ordenar en base a columnas que no aparecen en el select. También permite el uso de dos

instrucciones compute y computeby que muestran un gran total y subtotales respectivamente.

5.2.4 Lenguaj~ de Control

Un usuario que desee accesar al servidor debe tener una cuenta. la cual sólo puede ser

creada por el Administrador del sistema desde la base de datos master, en la cual se

almacena información general del sistema. con el siguiente procedimiento:

sp_addlogin nombre[.password(,base_por_omisión]J

El acceso al servidor no basta para accesar una base de datos. Para lograr el acceso de

datos el administrador. o el dueño de la base de datos. debe ejecutar el siguiente proceso

desde la base de datos que debe accesar el usuario:

sp _ adduser nombre

los comandos grant y revoke toman los siguientes esquemas para controlar acceso:

grant / revoke create database to / from usuorio[.usuario .... ]

create default

create procedure

create rule

create table

crea.te view

dump da.ta.base

dump tra.nsaction

all

82

Page 81: Manejo de fragmentación y replicación transparente en

grant/revoke select

insert

on object to /from usuario[,usuario .... ]

delete

update

execute

all

5.2.5 Instrucciones para el Control de Flujo

Ejecución Condicional. lf ... else.

Sintaxis: i f expresión_booleana

instrucción a ejecutar si la expresión es verdadera

[ else [ i f expresión_boo/eana ... ]

r else instrucción a ejecutar si la expresión es falsa]

Agrupación de Instrucciones. begin / end

Sintaxis: begin

bloque de instrucciones

end

Verificación de Existencia de registros. If exist ...

Sintaxis: i f exis t ( sel e et ... )

ins1rucción a realizar

Detener el flujo de ejecución en forma incondicional. Re turn

Ejecución repetida en base a una condición. while ... break ... con tinue

Sintaxis: while expresión_booleana

bloque de instrucciones a ejecutar

Suspender la actividad hasta que ocurra un evento. waitfor

Sintaxis de algunos eventos:

waitfor (delay 'tiempo' 1 time 'hora' 1 processexit 1 ... )

83

Page 82: Manejo de fragmentación y replicación transparente en

5.2.6 Declaración de Variables

Sintaxis: declare @nombre_variable tipo_varible[,@nombre_variable ... ]

Las variables pueden utilizarse tanto en procedimientos almacenados (5.3.7). como en bloques

de instrucciones. Al declarar una variable se inicializa en null. A una variable se le puede

asignar el resultado de una consulta. Por ejemplo:

select @venta= total

f rom factura

where id=" 12321"

En estos casos. el resultado no se muestra al usuario. Si el resultado de la consulta es nulo. la

variable no se altera. y si existe más de un registro con el valor. la variable toma el valor del

atributo en el último registro.

El sistema utiliza variables predefinidas. las cuales se denominan variables globales y que

guardan valores .como:

@@error

@@rowcount

@@servername

Número de error generado por el último error

Número de registros afectados por la última instrucción

Nombre del servidor SQL.

5.2. 7 Procedimientos Almacenados

Un procedimiento almacenado es un conjunto de instrucciones SQL que residen en el servidor

SQL y que pueden ser ejecutadas por cualquier usuario a quien se le otorgue el permiso

correspondiente. Estos procedimientos pueden recibir y enviar parámetros. valores y mensajes,

así como llamar a otros procedimientos.

Sybase provee algunos procedimientos almacenados y el usuario puede crear sus propios

procedimientos. Algunos de los procedimientos que provee Sybase son:

84

Page 83: Manejo de fragmentación y replicación transparente en

PROCEDIMIENTO USUARIO FUNCIÓN

sp_who Cualquier Señala quienes están conectados al SMBD. que

usuario están haciendo y que base están accesando.

sp_helpuser Cualquier Obtiene nombre, id. Grupo. Login_name. y Base

usuario de datos predeterminada para cada usuario.

sp_helpgroup Cualquier Señala los grupos existentes y los nombres de los

usuario miembros de un grupo.

sp_adduser Administrador Añade un nuevo usuario a la base de datos y

del systema o permite darle un nombre en la base de datos y

dueño de la un grupo.

base de datos.

sp_changedbowner Administrador Cambia el dueño de la base de datos por otro

del syslema o usuario.

dueño de la

base de datos.

sp_help Cualquier Obtiene una lista de todos los objetos, dueños y

usuario tipos de la base de datos actual.

Los usuarios pueden crear sus propios procedimientos con T-SQL y definiendo parámetros y

manejadores de errores. Los procedimientos almacenados son compilados y el código reside

en el servidor SQL. por lo cual se ejecutan más rápidamente que las instrucciones ordenadas

en forma interactiva. Mediante el uso de procedimientos almacenados se reduce el tráfico en

la red.

Para crear un procedimiento almacenado se emplea la estructura

crea te proc <nombre_procedimienlo>

[(@parametro tipo .... ) )

as <procedimiento T-SQL>

El procedimiento puede devolver valores con la cláusula return y el valor numérico a

devolver como parámetro.

Para ejecutar un procedimiento se utiliza la siguiente sintaxis:

[exec] nombre_procedimienlo [parametro[=vo/or]. parametro ... J

85

Page 84: Manejo de fragmentación y replicación transparente en

Los procedimientos almacenados no pueden utilizar las instrucciones:

Create View

Create Default

Create Rule

Create Trigger

Create Procedure

Para el mantenimiento de procedimientos. existen los siguientes procedimientos que provee

Sybase:

sp _ rename nombre_onterior . nuevo_nombre

drop proc nombre

5.2.8 Disparadores (TRIGGERS)

Los disparadores son procedimientos almacenados que se refieren a una tabla específica y se

definen para ser ejecutados al actualizar. insertar o borrar datos de la misma. Se puede

disponer de uno de ellos por cada tabla. La activación de un disparador se puede deber a la

activación de otro disparador generando anidamientos hasta de 16 llamadas. después de las

cuales las transacciones son abortadas. Los disparadores generalmente se utilizan para validar

información.

Cualquier sentencia de T-SQL puede ser utilizada para crear disparadores. sin embargo no es

posible que un disparador reciba parámetros y tenga las mismas restricciones de un

procedimiento almacenado. Los disparadores pueden utilizar la instrucción IF UPDATE para

determinar si una columna fue modificada.

Sintaxis:

CREATE TRIGGER nombre_disparador

ON nombre_tabla

FOR{insert/update/delete}

AS

Sentencias T-SQL...

86

Page 85: Manejo de fragmentación y replicación transparente en

5.2.9 Manejo de Transacciones

Una transacción se forma por una serie de instrucciones T-SQL que deben ser manejadas

como se vio en 4.7. La transacción debe garantizar que todos las operaciones fueron

ejecutadas. o que ninguna lo fue. En Sybase se proveen tres componentes para su

administración: Instrucciones para el control. el registro en una bitácora de todas las

modificaciones y el uso de registros de candados.

Normalmente cualquier modificación. adición o eliminación en la base de dato es tratada

como una transacción. pero se puede agrupar un conjunto de instrucciones T-SQL para que

estas también se manejen como transacciones. La sintaxis de las instrucciones de

agrupamiento son: begin tcansaction nombre_transacción

save tcansaction nombre_2

collback transaction [nombre_transacción o nombre_2]

commit transaction

Desde el begin hasta el corrunit, ningún proceso podrá ver los cambios realizados por la

transacción. Una transacción no puede realizar las siguientes actividades:

crear bases de d:itos

alterar un base de datos o tabla

borrar objetos

realizar la instrucción select into

otorgar o revocar permisos

La llamada a procedimientos remotos con una 1ransacción no puede ser reiniciada

( collback) por u11a transacción.

Los candados son la principal forma en que Sybase trabaja el problema que causa,:-i las

transacciones concurrentes. Los candados en este sistema se colocan en forma automática

por SQL con el fin de permitir transparencia a los usuarios. En Sybase se pueden bloquear

registros. páginas. tablas o índices y existen candados exclusivos y compartidos (ver punto 3.8).

Los candados exclusivos se mantienen durante la 1ransacción. mientras que los compartidos se

liberan tan pronto como se lea la página.

87

Page 86: Manejo de fragmentación y replicación transparente en

Es posible utilizar candados en forma explícita con el siguiente esquema:

begin transaction

declare @variable

select @varible = atributo

frorn tabla holdlock

where atributo = 'valor'

cornrnit transaction

El procedimiento sp _ lock permite conocer los candados que están bloqueando datos en la

base y muestra el tipo de candado colocado. El servidor SQL de Sybase detecta los abrazos

mortales automáticamente y aborta la transacción en base al menor tiempo de CPU

ocupado por la transacción (el código de error generado es el 1205).

5.3 HERRAMIENTAS PARA EL TRABAJO DISTRIBUIDO

Para el desarrollo de este tema seguiremos los aspectos que señalan McGoveran y Date

[McGoveran. Date 1992) como los más representativos en la arquitectura de Sybase.

5.3.1 Protocolo de Compromiso a Dos Fases.

El protocolo de compromiso a dos fases y su importancia fue tratado en 3.7.2. Sybase permite

que se realice este protocolo entre servidores Sybase y aún entre servidores Sybase con otros

servidores ofrecidos por diversos proveedores como 082. de tal forma que uno transacción es

acordada en todc-s los servidores o se aborta.

Sybase utiliza el producto Open Client para coordinar a los servidores que intervendrán en la

transacción. El cliente ejecuta una transacción que se comunica con cada uno de los

servidores de la siguiente forma:

1.- La aplicación debe comunicarse con los servicios de transacción de cada servidor" en

cada fase de protocolo. Una conexión con los servicios de transacción se inicia con la

función open_ commi t ( ) y se termina con la función el ose_ xact ( ) . La transacción se inicia

con la función start_xact (), se acuerda con cornrnit_xact () y se aborta con

abort_xact().

88

Page 87: Manejo de fragmentación y replicación transparente en

2.- La aplicación debe utilizar un identificador único en cada uno de los servidores. éste

identificador se asigna con la función build _ xact _ string () .

3.- Para realizar la primera fase del protocolo se emplea la instrucción PREPARE TRANSACTION.

5.- Los servidores deben informar a la aplicación cada comrnit o rollback que ejecuten

mediante la función remove _ xact ( ) .

5.3.2 Manipulación de Datos Distribuidos

Manejo de Bases de Datos Múfflples

En Sybase se puede accesar a múltiples bases de datos. simplemente haciendo referencia a

las tablas con el nombre que indica la base de datos a la que pertenece. esto es posible si las

bases de datos pertenecen al mismo servidor (a menos de que se trabaje con el protocolo de

compromiso a dos fases). La referencia a objetos que pertenecen a diferentes bases de datos

utiliza la siguiente nomenclatura:

nombre_servidor.nombre_base_de_datos.nombre_esquema.dueño.objeto

Así se pueden realizar consultas como ésta:

select

from

P.•. s.•

partes_db.dueño.tabla P.

proveedor 3s_db.dueño. tabla S

Accesando diferentes bases de datos. e incluso modificándolas. El mecanismo y protocolo

que coordina estas operaciones es el de compromiso a dos fases. pero en forma transparente

al usuario.

Procedimientos Almacenados Remotos

Los procedimientos almacenados que se trataron en el punto 5.3.7 pueden realizarse en forma

remota desde otro servidor. Para realizar estas operaciones es necesario que el Administrador

de la base de datos. añada a la base maestra el nombre del servidor remoto que va a

accesar su servidor mediante las siguientes instrucciones:

89

Page 88: Manejo de fragmentación y replicación transparente en

use master

go

sp _ addserver SERVIDOR

go

También se requiere dar de alta usuarios remotos con los procedimientos:

sp_addlong

sp_addremotelogin

Para ejecutar el procedimiento remoto se especifica el nombre del procedimiento y el nombre

del servidor. Por P.jemplo:

execute rcmotcscrver.pubs.dbo.sp_storeprocedur ... 9----,procedirnicnlo

I Base de Datos 1 / "" l p,op;eia,;o

5.3.3 Servicios de Replicación de Datos

Companlon Servers

Un servidor acompañante se utiliza para proteger un sistema de fallas en el procesador. En el

sistema existen varios procesadores, los procesadores o servidores activos y el servidor

acompañante. Estos servidores unidos por una red comparten sus discos. El servidor

acompañante permanece en espera, hasta que un servidor activo se dañe: en ese momento.

el servidor acompañante realiza las funciones del servidor activo dañado.

Dispositivos Espejo

Sybase puede trabajar con procesos que generen réplicas de los datos almacenados en un

dispositivo auxiliar llamado espejo. Cada dato almacenado en el dispositivo primario es

almacenado automáticamente y en forma transparente en el espejo. En caso de que el

dispositivo primario sufra algún daño, el espejo toma inmediatamente su lugar y la copia

primaria es desactivada sin que el usuario note cambios. Una vez que el dispositivo primario es

arreglado. este puede recibir la información del espejo para volver a ocupar su lugar.

90

Page 89: Manejo de fragmentación y replicación transparente en

5.3.4 Open Se:rver

Open Server es una biblioteca de programación que cuenta con varias funciones en lenguaje

C que se ligan a los programas para convertirlos en servidores. Estas librerías coexisten con DB­

Library.

El Open Server puede unificar la forma en que una aplicación se comunique con múltiples

bases de datos de tal forma que provea:

• Transparencia en la distribución del manejo de datos.

• Un mecanismo para accesar funciones que no sean de bases de datos.

• Una interfaz estándar a otros nodos y sistemas.

Una aplicación Open Server trabaja a través de manejadores de eventos; una vez que se

encuentra en ejecución (srv_run) espera a que un cliente le haga una petición. Toda

petición es manejada como un evento. Cada evento tiene un manejador de eventos por

default. pero se pueden escribir manejadores propios.

Los eventos pue.den ser disparados por la petición de un cliente o por el código del Open

Server. algunos de los eventos posibles son:

PETICIÓN DEL CLIENTE

dbopen ()

dbsqlexec ()

dbexit ()

Ejemplo:

#include <sybfront.h>

#include <sybdb.h>

#include <srv.h>

EVENTO EN EL SERVIDOR

SRV CONNECT

SRV LANGUAGE

SRV DISCONNECT

/*Declaraci~n del manejador my start */

int mystart();

main()

SRV CONFIG *config;

SRV SERVER

91

Page 90: Manejo de fragmentación y replicación transparente en

/*Configuraci~n e inicializaci~n del Server*/

config

server

srv_config_alloc();

srv_init(config,óMYNAMEó,SRV_NULLTERM);

/*Instalar un manejador de inicio*/

srv_handle(server,SRV_START,mystart)

/*Iniciar la cjecuci~ndel servidor*/

srv_run(server);

exit (STDEXIT);

/* Definici~n del manejador de eventos*/

int mystart(server)

SRV SERVER *server;

printf(óhi \nó);

return(SRV_CONTINUE);

Arquitectura

Los clientes y servidores Sybase se comunican mediante interfaces Cliente/Servidor (CS/1) que

se compone de tres bibliotecas:

• Net-Library

• Open Client

• Server Library

Las bibliotecas de red son una serie de funciones para:

• Inicializar y terminar la comunicación • Transferir datos

por la red • Mandar mensajes de Control

• Soportar el multiproceso • Manejar errores

• Direccionar servidores • Administrar Recursos

• Inicializar y terminar conexiones • Diagnosticar

Las bibliotecas Server-Library proveen las siguientes funciones:

• Multi-hilos • Mensajes entre hilos

• Manejo de eventos • Procedimientos Almacenados

• Flujo entre Cliente y Servidor • Opciones de Configuración

92

Page 91: Manejo de fragmentación y replicación transparente en

Tanto Open Client como Open Servar manejan la comunicación tipo cliente/servidor. Cada

una de estas bibliotecas usa un protocolo de bajo nivel llamado Tabular Data Streem (TOS). La

comunicación en un nivel más alto tiene tres formas: lenguaje de peticiones . RPC' s y

resultados.

lenguaje de Peticiones

El lenguaje de peticiones consiste en texto que se manda a través del Open Servar a los

usuarios sin realizar interpretación alguna, dejando a las aplicaciones que realicen la

interpretación.

RPC's

Los RPC de Sybase están formados por procedimientos y parámetros. Los procedimientos son

semejantes a los procedimientos almacenados ya tratados. pero en este caso no se utiliza SQL.

Las peticiones de RPC's pueden ser enviadas tanto a un Open Servar como a un SQL Servar. Si

el RPC es enviado a un SQL Servar. el nombre del RPC es analizado para determinar el servidor

remoto al que hace referencia. El Servidor SQL manda la petición al servidor remoto

apropiado. El servidor remoto puede ser tanto un SQL Servar como una aplicación Open

Server.

RESULTADOS

Los resultados pueden ser estados, mensajes. y datos que envía el Open Server a quien se lo

solicite (Open Client. SQL Server u Open Server). mediante el formato TOS.

5.3.5 Replication Server

El Replication Server es un producto de Sybase que se utiliza para crear. mantener y usar

aplicaciones que utilizan datos replicados. El Replication Server mantiene copias actualizadas

en múltiples nodos de tal forma que los clientes pueden accesar datos locales en lugar de

tener que accesar a datos remotos. con lo cual se incrementa la disponibilidad y disminuye el

tráfico a nodos remotos. Entre las funciones que provee Replication Server se encuentra:

• Permite definir los datos y los procedimientos almacenados que pueden ser replicados.

• Permite Inicializar los datos en una tabla que se replique en otro nodo.

• Realiza actualizaciones periódicas de las tablas primarias en cada réplica.

• Permite a los clientes remotos actualizar las copias primarias a través de procedimientos

almacenados replicados.

93

Page 92: Manejo de fragmentación y replicación transparente en

• Soporta accesos seguros mediante password tanto a SQL Servers como a Replication

Servers.

• Se realizan bitácoras de las modificaciones que se deben realizar. lo cual permite la

recuperación en caso de fallas.

Replication Server utiliza como unidad de replicación las tablas. y éstas pueden ser replicadas

en uno o varios nodos; la réplica puede ser un fragmento horizontal en base a un predicado

específico. Une copia de la tabla es designada copia primaria y todas las demás se llaman

copias replicadas.

Para realizar las transacciones. Replication Server depende de los SQL Servers. asegurando:

atomicidad y durabilidad (ver punto 4.7). Su participación en el control de concurrencias se

realiza cuando las transacciones intentan modificar tablas primarias. El método que utiliza

este producto para el control de concurrencias es el optimista (ver punto 4.8.4)

5.3.6 Navigation Server

Este producto provee de acceso paralelo a tablas y esquemas que estén fragmentados en un

sistema distribuic;Jo. Emplea fragmentación horizontal, vertical y mixta mediante el empleo de

los siguientes componentes: Servidor de Control. Servidores de Datos. Servidor Administrador

de Bases de Datos, Administrador Navigation Server.

El Servidor de Control procesa peticiones de los clientes. Inicia la compilación y ejecución de

SQL y de procesos almacenados.

Un servidor de datos es la unidad de almacenamiento para el funcionamiento de una base

en paralelo. El número de estas unidad es configurable.

El Servidor encargado de la administración de bases de datos es un servidor de control con la

posibilidad de compilar operaciones paralelas. verificar seguridad y manejar la definición de

datos. Este servidor detecta los abrazos mortale. monitorea a los demás servidores y reinicia el

sistema en caso de fallas.

El administrador Navigation Server provee interfaces de administración y configuración

94

Page 93: Manejo de fragmentación y replicación transparente en

5.4 CONCLUSIONES

Para construir un SMBDD como el presentado en la figura 4.5, se requiere conocer las

herramientas con que cuenta el SMBD local. En este capítulo se revisó. la forma en la que el

servidor SQL de Sybose nombra los objetos. cómo maneja el lenguaje de definición de datos.

el de manipulación de datos y el de control. También se dió a concer la forma en la que

trabajan las transacciones locales. los disparadores y procedimientos almacenados.

Además de los servidores SQL. existen en el mercado diversas herramientas para facilitar el

trabajo distribuido. este es el caso de:

a) Protocolos de compromiso a dos fases.

Estos mecanismos permiten realizar transacciones atómicas entre varios servidores aún de

diferentes marca,¡ comerciales.

b) Manipulación de datos distribuidos.

Sybase permite ~ealizar transacciones entre diferentes bases de datos que se encuentren en el

mismo servidor con protocolo de compromiso a dos fases en forma transparente al usuario.

Esto permite al usuario ejecutar sus operaciones sin especificar que está utilizando el

protocolo. También es posible que un servidor solicite la ejecución de procedimientos

almacenados en otros servidores.

c) Servicios de replicación.

Sybase utiliza productos que permiten tanto la redundancia en HW como en datos para

solucionar problamas en el sistema. Companion Server es un servidor de respaldo que

funciona en caso de que un servidor del sistema falle y los dispositivos de espejo generan

réplicas de los datos en dispositivos auxiliares.

d) Arquitectura cliente servidor

Sybase cuenta con una serie de bibliotecas para programar en C. tanto clientes como

servidores. Estas bibliotecas permiten a los programadores gran flexibilidad para accesar

servidores SQL y desarrollar mecanismos distribuidos.

95

Page 94: Manejo de fragmentación y replicación transparente en

e) Replication Server y Navigation Server

Son dos produc•os que ofrece Sybase. el primero para copiar tablas en múltiples bases de

datos y dejar la información lo más cerca posible del cliente. Navigation Sever. por su parte.

permite la ejecución de consultas en paralelo mediante la fragmentación de tablas.

Las herramientas que se ofrecen a los desarrolladores para realizar actividades distribuidas no

son lo suficientemente transparentes como para no involucrarlos en la configuración del

sistema. Es decir. si un desarrollador necesita un procedimiento remoto. debe conocer el

nombre del servidor que utilizará y _los parámetros que emplea el procedimiento. De la mismo

formo. si se emplea una tabla que pertenezca a otra base de datos dentro del mismo servidor.

es necesario hacer referencia a ella con el nombre de la base de datos.

En el capitulo 7 se muestra como se pueden utilizar las bibliotecas de Open Client y Open

Server para construir un SMBDD basado en conexiones a un catálgo global y a varios

servidores SQL. El protocolo de compromiso a dos fases también se muestra en ese capítulo y

es el mecanismo con el cual se logra obtener transacciones globales atómicas.

96

Page 95: Manejo de fragmentación y replicación transparente en

' f~O~l!U'MTK~ f~~'41 fl loit,<r~ffeJW(!K<OLlO ~t <!JI~ MÓl!)<!JllO ~lé rW('4JijM!Etff '4J(~]Ó~ 1

W([fUtdllt~Ó~ ffltAJN~f dll~IE~lt

Hasta este punto. se han revisado características y mecanismo que utiliza Sybase para realizar

comunicación entre clientes y servidores. No se han considerado mecanismos que provean:

• Transparencia en consultas

• El empleo de catálogos globales a través de un LOO especifico

., Aplicaciones inmunes a cambios en la configuración de lo 800

En este capítulo ve;emos la importancia de los tres puntos señalados. sus característicos

deseables y la problemática que implico su implementación.

6.1 NIVELES DE TRANSPARENCIA EN LA DISTRIBUCIÓN

Ceri y Pelagatti [Ceri. Pelagatti 1984) enmarcan el problema de los niveles de transparencia en

las bases de datos distribuidas en dos casos principales: la transparencia en aplicaciones de

lectura y lo transparencia en los aplicaciones que modifican información. lo transparencia en

aplicaciones de sólo lectura puede ser dividido en aplicaciones simples y complejos.

6.1.l Transparencia en Aplicaciones Simples de Sólo Lectura.

Considerando SQL como el lenguaje de acceso a la base de datos y a las variables

precedidas por el símbolo @ como variables definidas por el usuario. una consulto puede

presentar esta forma:

select NOMBRE into @NOMBRE

from PROVEEDOR

where SNUM =@SNUM

En algunos ocasiones se requiere de variables que nos den información de control. Estas

variables se presentarán precedidas por#. Ceri y Pelagatti presentan la figura 6.1 que muestra

los distintos niveles de transparencia en que se puede realizar una consulta simple.

Apffcaclón de Sólo lectura con diferentes nlveles de transparencia.

El primer nivel provee transparencia de fragmentación. En este coso la petición SQL al SMBOO

se realiza sin considerar lo existencia ni la localización de los fragmentos. de tal forma que la

aplicación es inmune a cambios en la estructura de la base de datos.

97

Page 96: Manejo de fragmentación y replicación transparente en

read(terminal, @SNUM); Select N,"\ME into @NAME from SUPPLIER where SNUM = @SNUM

write(terminal, @NAME) .

(a) Nivel 1. Transparencia de Fragmentación

read(terminal, @SNUM); Select NAME into @NAME from SUPPLIER1

where SNJM = @SNUM if not #found then

Select NAME into @NAME from SUPPLIER2

where SNUM = @SNUM write(terminal, @NAME) .

(b) Nivel 2. Transparencia de Localización

read(terminal, @SNUM); Select NAME into @NAME from SUPPLIER1 AT SITE1

where SNUM = @SNUM if not #found then

Select NAME into @NAME from SUPPLIER2 AT SITE3

where SNUM = @SNUM write(terminal, @NAME) .

(b) Nivel 2. Transparencia de Localización

DBMS

-----~ - - - - - - ------... ... ...... ... ... ... ... ...

DBMS -----eilher ___ ..._ _____________ _

... ... ... ... ... ... or ', ...

DBMS -----

---

Fig. 6.1 Aplicación de sólo lectura en diferentes niveles de transparencia

Site1

SUPPLIER2 Sife3

SUPPLIER1 Sife3

El segundo nivel. que provee transparencia de localización. hace referencia a cada uno de

los fragmentos. permitiendo independencia de localización. pero no así cambios en la forma

de realizar la fragmentación. Por último. el tercer nivel requiere hacer referencia tanto del

fragmento que se desea, como del site o nodo en el cual se encuentra la información

requerida. Es por esto que la aplicación de la figura

98

Page 97: Manejo de fragmentación y replicación transparente en

En el último nivel de transparencia. se logra que cada una de las bases de datos se encargue

de localizar el medio físico en el que se encuentra la información. lo cual llega a ser de gran

utilidad en el caso de bases de datos heterogéneas.

6.1.2 Transparencia en Aplicaciones Complejas de Sólo Lectura.

El grado de complejidad en el manejo de bases distribuidas es más evidente cuando se

trabaja con varias relaciones utilizando joins. Si consideramos la siguiente aplicación sugerida

en [Ceri. Pelagatti 1984):

read(terminal,@PNUM) Select NAME into @NAME from SUPPLIER, SUPPLY where SUPPLIER.SNUM = SUPPLY.SNUM

and SUPPLY.PNUM = @PNUM; write(terminal,@NAME)

(a) Transparencia de Fragmenlación

read(terminal,@PNUM) Select NAME into @NAME from sryPPLIER1, SUPPLY1 where SUPPLIER1.SNUM = SUPPLY1.SNUM

and SUPPLY¡.PNUM = @PNUM; if not IFOUND then

Select NAME into @NAME from SUPPLIER1.SNUM = SUPPLY1.SNUM and SUPPLY2 .PNUM = @PNUM;

write(terminal,@NAME)

(b) Transparencia de Localización

read(terminal,@PNUM) Select SNUM into @SNUM from SUPPLY1 AT site3 where PNUM = @PNUM; if #FOUND then

be gin

end else

be gin

send @SNUM from site3 to sitel; Select NAME into @NAME from SUPPLIERl AT site1 where SNUM= @SNUM

Select SNUM into @snum FROM SUPPLY1 AT si te4 where PNUM=@PNUM; send @SNUM from site4 to site2; Select NAME into @NAME from SUPPLIER2 AT site2 where SNUM=@SNUM

end write(terminal, @NAME)

(c) Transparencia de mapeo local.

Fig. 6.2 Aplicación :iUPOFPART con diferentes niveles de transparencia.

99

Page 98: Manejo de fragmentación y replicación transparente en

Podemos obser. ar las siguientes características:

Fragmentación Transparente. La aplicación se escribe de la misma forma como se escribiría en

un sistema centrnlizado.

Localización Trarsparente. Si no se cuenta con transparencia de localización. la aplicación

puede ser escritc en diferentes formas con diversos grados de eficiencia. Una solución menos

eficiente que la presentada en el ejemplo de la figura 6.2 sería realizar cuatro consultas. una

por cada combinación de los fragmentos de SUPPLIER y SUPPLY. El ejemplo presentado

aprovecha el conocimiento que se tiene de la distribución de las tablas considerando sólo dos

consultas factibles. De esta forma se muestra que en un sistema que no provee transparencia

de fragmentación. el programador de la aplicación define la estrategia.

Transparencia de Mapeo Local. En el tercer nivel de transparencia es necesario indicar en

qué nodo se encuentra el fragmento requerido para las consultas. La instrucción send permite

comunicación entre los nodos que realicen la consulta. por lo cual es muy importante cuando

el resultado (en @SNUM) es un conjunto de registros. En este tipo de aplicaciones existe una

dependencia muy gande con respecto a la configuración de la base de datos. cualquier

cambio en la fragmentación o replicación afecta directamente a la aplicación.

6.1.3 Transparencia en Aplicaciones que Modifican Datos.

En este punto se consideran los diversos niveles de transparencia en la actualización de datos

distribuidos. Se tienen los mismos niveles de transparencia que en el caso de la lectura. Si un

manejador no provee transparencia de replicación y de localización. el trabajo de

actualización debe ser realizado por el programador de la aplicación.

Al proveer transparencia en una aplicación que modifica datos en una base de datos

distribuida. es necesario tomar en cuenta que las modificaciones en un registro pueden

modificar su localización en la base de datos. de tal forma que si la ciudad es un atributo que

determina el predicado de un fragmento y la ciudad es modificada en un registro. se debe

realizar un cambio de lugar de la tupla. borrándola del nodo actual y guardándola en el

nodo que le corresponda.

Nuevamente tomaremos una figura presentada por Ceri y Pelagatti para mostrar los diferentes

niveles de transparencia en aplicaciones que modifican la base de datos:

Update EMP set DEPTNUM=l5 where EMPNUM=lOO

(a) Transparencia de Fragmentación

Select NAME, SAL, TAX into @NAME,@SAL,@TAX from EMP1 where EMPNUM ~ 100;

100

Page 99: Manejo de fragmentación y replicación transparente en

Sel.ect MGRNUM into @MGRNUM from EMP2 where EMPNUM =100; In1ert into EMP1 (EMPNUM, NAME, DEPTNUM):

(100,@NAME, 15); Insert into EMP4 (EMPNUM,SAL,TAX,MGRNUM):

(100,@SAL,@TAX,@MGRNUM); Delete EMP1 where EMPNUM 100; De!ete EMP2 where EMPNUM = 100

(b' Transparencia de Localización

Select NAME, SAL, TAX into @NAME, @SAL, @TAX from EMP1 AT si tei where EMPNUN=lOO; Select MGRNUM into @MGRNUM from EMP~ AT si te2 · where EMPNUM=lOO; In~ert into EMPi(EMPNUM, NAME, DEPTNUM)

AT site1: (100,@NAME,15); Insert into EMP1 (EMPNUM, NAME, DEPTNUM)

AT site1: (100, @NUM, 15); Insert into EMP4 (EMPNUM, SAL, TAX, MGRNUM)

AT si te,: ( 100, @SAL, @'!'AX, @MGHNUM) ; In~ert into EMP1 (EMPNUM, SAL, TAX, MGRNUM)

AT sitee: (100, @SAL, @TAX, @MGRNUM); Delete EMP1 AT site I where EMPNUM=lOO; Delete EMP 1 AT site where EMPNUM=lOO; Delete EMP2 AT site 2 wherc EMPNUM=lOO; Delete EMP2 AT site 6 where EMPNUM=lOO.

(c) Transparencia de mapeo local

fig. 6.3 Aplicación de Modificación de dalos con diferentes niveles de distribución transparente.

Transparencia de Fragmentación. En este nivel la aplicación realiza la modificación del mismo

modo que lo haría con una base de datos centralizada. Las modificaciones en la estructura

de la base de datos no alteran la aplicación. La responsabilidad de realizar todas las

operaciones que la modificación implique es del sistema.

Transparencia de Localización. Cuando no se cuenta con transparencia de fragmentación. el

programador debe realizar sus aplicaciones con la estrategia adecuada para mantener la

configuración d~ los fragmentos. moviendo las tuplas a los fragmentos adecuados. En el

ejemplo de la fig~ra 6.3b se considera un caso muy específico. que en una aplicación real

debería tomar los valores de un parámetro. lo cual aumentaría la complejidad de la

aplicación.

Transparencia de mapeo local. El tercer nivel de transparencia tiene que considerar tanto la

configuración de los fragmentos como su localización entre los nodos. Las últimas cuatro

líneas de la figura 6.3 c muestran que el programador de la aplicación debe conocer en qué

nodo se encuentra cada fragmento. Cualquier modificación en la configuración de la base

de datos afecta directamente a la aplicación. Un aspecto más en el cual debe trabajar el

101

Page 100: Manejo de fragmentación y replicación transparente en

programador de este tipo de aplicaciones es en la replicación de fragmentos. La aplicación

utiliza dos instrucciones insert y dos instrucciones delete para mantener las replicas.

6.2 MODIFICACIONES EN EL LENGUAJE DE DEFINICIÓN DE DATOS

Para poder trabc.jar con una base de datos distribuida el LDD debe modificar algunas de sus

instrucciones. Éstas pueden ser diferentes si se considera que la base de datos se construye

con un enfoque descendente o ascendente según [Pazos R .. Pérez J 1995] ..

En el enfoque descendente los fragmentos heredan la estructura de la tabla global; es decir.

los fragmentos tienen las mismas columnas que la tabla global. por lo que no se presenta el

problema de incompatibilidad de datos.

Con el enfoque ascendente se complica el logro de transparencia de fragmentación. ya que

se puede dar el caso de que las columnas que forman las tablas sean de diferente tipo. Por lo

tanto. se nece!ita realizar la conversión de tipos para lograr la transparencia de

fragmentación.

6.2.1 Definición de Bases de Datos Fragmentada con Enfoque Descendente

La arquitectura ANSI/SPARC para sistemas de bases de datos define tres niveles para lograr

independencia de datos:

• Interno - Se percibe la base completa con los detalles de almacenamiento de datos.

• Conceptual - La base de datos completa se percibe en forma abstracta. ignorando los

detalles de almacenamiento.

• Externa - Se percibe la base de datos en forma conceptual y parcial.

Para obtener un correcto LDD se necesita determinar en qué nivel de la arquitectura se

ubican los esquemas de las tablas globales y de los fragmentos. Dado que las tablas globales

son representaciones abstractas. se podría ubicar en un nivel externo. pero como una tabla

global no está destinada a un usuario o un grupo de usuarios. sino a todos los usuarios de la

base de datos. debe ubicarse en un nivel conceptual. a semejanza de una tabla. Por su parte.

el esquema de los fragmentos es también una representación abstracta ya que no incluye los

detalles de almacenamiento que normalmente llegan a nivel interno. Sin embargo. el

concepto de fragmentación de datos introduce en el esquema un aspecto de repartición de

datos que puede considerarse un detalle de almacenamiento. Dado lo anterior. es

conveniente ubicar la fragmentación en un subnivel inferior del nivel conceptual. Pazos y

102

Page 101: Manejo de fragmentación y replicación transparente en

Pérez [Pazos R .. Pérez J 1995) sugieren los siguientes lineamientos para el diseño de las

instrucciones del LDD en enfoque descendente:

• Las instrucciones para la definición de tablas globales deben ser semejante a la definición

de tablas locc.les (ya que pertenecen al mismo nivel).

• La instrucción para la definición de tablas globales no debe involucrar la definición de

fragmentos (por pertenecer a diferentes subniveles).

• La instrucción para la definición de fragmentos debe parecerse a la definición de índices

para sugerir SL. proximidad al nivel interno.

De acuerdo al análisis anterior Pazos y Pérez [Pazos R .. Pérez J 1995] consideran que el LDD

debe incluir como mínimo las siguientes instrucciones para la definición de BDDs

fragmentadas: CREATE FRAGMENTED TABLE, CREATE FRAGMENT, DROP FRAGMENTED TABLE,

y DROP FRAGMENT.

Ejemplos:

Creación de la tabla global

CRl:":ATE FRAGMENTED TABLE empleados

(NwnEmp INTERGER NOT NULL,

Nombre CHAR(30),

Sueldo

Ciudad

FLOAT,

CHAR( 10))

Mandar un fragrrento de la tabla global a la máquina Alfa

CREATE FRAGMENT Empleados! ON Empleados

WHERE Sueldo<= 900 IN ceALFAE

6.2.2 Definición de Bases de Datos Fragmentdada con Enfoque Ascendente

En este enfoque de definición del esquema de la base de datos. los fragmentos se definen

primero como tablas en base de datos independientes: es decir, cada fragmento en una base

de datos diferenta. La definición de los fragmentos se hace posiblemente sin la intenciól') de

llegar a integrarlos en un esquema global. De acuerdo con esto. los fragmentos quedarían

ubicados en el nivel conceptual de la arquitectura ANSI/SPARC. ya que no deberían

distinguirse de cualquier tabla base. En el enfoque ascendente las tablas globales se definen

en términos de los fragmentos. Esto crea alguna dificultad para decidir si pertenecen al nivel

conceptual o al nivel externo. ya que poseen algunas características de las tablas base y de

103

Page 102: Manejo de fragmentación y replicación transparente en

los vistos. Por un !odo, podríamos pensar que los tablas globales pertenecen al nivel externo

yo que (o semejanza de los vistos) su existencia depende de otros tablas; pero por otro lodo {o

semejanza del esq,Jemo conceptual). los tablas globales ofrecen uno representación

completo de lo base de datos, y por consiguiente (o diferencia de las vistas). su propósito no

es limitar el acceso o ciertos usuarios.

Por lo tonto Pozos y Pérez [Pozos R .. Pérez J 1995) sugieren los siguientes lineamientos paro el

diseño de las instrucciones del LDD paro el enfoque ascendente:

• La instrucción paro la definición de fragmentos debe ser igual a la definición de tablas

base, por pertenecer al mismo nivel.

• La instrucción para lo definición de tablas globales no debe involucrar la definición de

fragmentos (ya que pertenecen a diferentes subniveles). y debe sugerir un mopeo de un

subnivel o otro.

• La instrucción para la definición de tablas globales debe parecerse o lo definición de vistas

poro sugerir S'J proximidad al nivel externo.

Por lo tanto el LDD de SQL debe incluir como mínimo las siguientes instrucciones para lo

definición de BDOs fragmentados: CREATE FRAGMENTED TABLE y DROP f"RAGMENTED

TABLE.

Ejemplos:

Se crea el fragmento empleados en la base de datos Alfa en uno máquina de la red:

CREATE TABLE empleados

(NurnErnp INTEGER NOT NULL,

Nombre CHAR(30)

Ciudad CHAR(lO)

Salario FLOAT,

CHECK CONSTRAINT Salario<= 900)

Otro fragmento en la base de datos Beta en otra máquina puede declarase de la siguiente

forma:

CREATE TABLE personal

(NurnErnp INTEGER NOT NULL,

Non.bre CHAR(30)

Sueldo CHAR(lO)

Ple za FLOAT,

CHECK CONSTRAINT Sueldo<= 900)

104

Page 103: Manejo de fragmentación y replicación transparente en

Para crear la tabla global se puede utilizar la siguiente instrucción:

CREATE FRAGMENTED TABLE empleado

(N;.unErnp INTEGER NOT NULL,

Nombre

Sueldo

Cil·dad

AS UNION OF

CHAR(30),

FLOAT,

CHAR(lO) I

Alfa.Ernpleados(NurnErnp, Nombre, Salario, Ciudad),

Beta.Personal(NurnErnp, Nombre, Sueldo,Plaza)

Al ejecutar esta instrucción. el manejador de bases de datos debe verificar que cada uno de

los fragmentos exista. que tenga cláusula de fragmentación y que su definición sea

compatible con la de la tabla global (es decir. que tenga el mismo número de columnas que

la tabla global y que el tipo de dato de cada columna del fragmento coincida con el tipo de

dato de la colur.1na correspondiente de la tabla global). Si se satisfacen estas condiciones. el

manejador debe grabar la definición de la tabla global en el diccionario de datos. pero no

debe crearla físicamente.

6.3 MECANISMOS PARA LECTURA Y ESCRITURA EN FRAGMENTOS

REPLICADOS

Al carecer tanto de LDD como de transparencia en fragmentación el problema de lectura y

escritura en los distintos fragmentos recae en las aplicaciones Sybase. Es importante

considerar los dif1=rentes mecanismos que se pueden implementar para realizar estas. funciones

en fragmentos replicados. ya que cuando una copia se modifica. es necesario difundir la

modificación a las otras coplas. Esta difusión sincrónica es necesaria cuando. en forma

simultánea. se pueden estar dirigiendo consultas y/o modificaciones a las diferentes copias de

datos. Abásolo. Blanco y Mendieta [Abásolo. Blanco. Mendieta 1994) presentan los siguientes

esquemas de replicación:

6.3.l Copias Sincrónicas: se lee una copia, se actualizan todas.

Se actualizan todas las copias en la misma transacción. o ninguna. Requiere de validación en

dos etapas (ver punto 5.3. l J. En lectura se puede utilizar cualquier copia. En caso de fallas. si

al menos una copia sobrevive, se tiene la última versión del dato. En este caso se tiene gran

disponibilidad para lectura. pero disminuye la disponibilidad para escritura. ya que si una

copia no esta disponible. ya no se puede realizar la modificación.

105

Page 104: Manejo de fragmentación y replicación transparente en

6.3.2 Copias Sincrónicas: lectura y actualización basadas en quórum.

Se propone para tres copias. A cada una de las copias se le asocia un número de versión. En

consulta. se leen dos copias. se compara su número de versión. y se devuelve la que lo tenga

mayor. En actualización . se modifican sólo dos copias. con validación en dos etapas.

incrementando su número de versión. Una copia siempre estará desactualizada. Este

esquema disminuye la disponibilidad en escritura en comparación con 6.3. 1 y aumenta la

disponibilidad de lectura.

6.3.3 Copia!. Sincrónicas: actualización de una o todas las copias,

dependiendo del tipo y monto de la operación.

Este esquema se puede utilizar con datos numéricos que no pueden caer por debajo de un

valor mínimo. y que solo se actualizan con operaciones de suma y resta. Se basa en la

conmutatividad de dichas operaciones. Trabaja con dos copias. Ciertas operaciones se

pueden aplicar sobre una sola de ellas registrándose además en una bitácora local. Otras .

operaciones requieren sincronización. A intervalos regulares (por ej. cada hora). se hace

sincronización general. Las sincronizaciones requieren validación en dos etapas. Para cada

copia se tiene. además de su valor local actual (VLA). el valor que tenía la última vez que se

sincronizó (VUS). un valor por debajo del cual el dato lógico no puede descender (VL). y un

porcentaje local (PL). que toma valores entre O y l. La suma de los porcentajes de las dos

copias debe sumar 1. Las operaciones de adición se hacen sobre una sola copia. y se

registran en la bitácora. Las sustracciones, si la condición ( ( (O<PL < 1) and (VLA - valor a sustraer

J >= (VUS + VL) • ( 1 - PL) or (PL = 1 and (VLA - valor a sustraer) >= VL) or (PL=O and (VLA - valor a

sustraer) >= VUS)) se cumple. se tratan igual que las adiciones. En caso contrario. requieren

sincronización. 1.1 sincronizar. a cada copia se le aplican las operaciones que aparecen en la

bitácora de la otra. Si la sincronización fue iniciada por una operación de la sincronización.

igual que en el esquema 6. 1.1. En caso de destrucción de una copia. es posible que la otra no

esté actualizada. y haya que replicarle manualmente las modificaciones hechas a la copia

destruida después de la última sincronización. Las lecturas no necesariamente dan la versión

más actualizada del dato. a menos que para ello se force una sincronización. Dependiendo

del tipo y monto de las operaciones. algunas o muchas de éstas pueden hacerse sin aumentar

la disponibilidad.

106

Page 105: Manejo de fragmentación y replicación transparente en

6.3.4. Copias Asincrónicas: primaria actualizable, secundarias de lectura;

datos no voluminosos.

En este esquema de replicación se tiene una copia primaria sobre la cual se realizan las

modificaciones. y varias copias secundari~s que sólo se consultan. La difusión de

modificaciones se hace en diferido. No requiere validación en dos etapas. Las lecturas. si se

hacen a copias secundarias. pueden obtener una versión desactualizada. Este esquema

aumenta la localidad y la disponibilidad de las lecturas. Al mantener múltiples copias.

disminuye la probabilidad de pérdida por destrucción.

6.3.5 Copias Asincrónicas: todas actualizables.

En este esquema todas las copias pueden ser leídas o modificadas. Los cambios se difunden.

si es posible. inmediatamente. por un mecanismo de "store and forward". que no requiere

validación en dos etapas. Pueden presentarse conflictos de actualización. que deben ser

resueltos.

6.3.6 Copias Asincrónicas: primarias actualizables, secundarias de lectura;

datos voluminosos.

Este esquema se propone para datos voluminosos tales como firmas. fotos. videos. etc. Se

tienen una o dos copias primarias actualizables. De haber dos. su actualización será

asincrónica. como en 6.3.5. Cada copia tiene un número de versión. Cuando un sitio requiere

el dato. buscará una copia local del mismo. Si no la encuentra. leerá una de las primarias. y

creará una copia local no actualizable (caché). En accesos posteriores. al buscar una copia

local y encontrar un caché. verificará la versiÓh con una copia primaria. Si las versiones no

coinciden. leerá nuevamente la copia primaria y reemplazará el caché local. En cada sitio.

periódicamente. se eliminarán los cachés menos recientemente utilizados. Con este esquema

se busca disminuir el tráfico de datos voluminosos a través de la red de comunicaciones,

replicando únicamente en los sitios donde el dato es utilizado.

6.4 CONCLUSIONES

Existen tres niveles de transparencia que puede proveer un SMBDD:

a) Transparencia de fragmentación. El desarrollador escribe sus aplicaciones de la misma

forma en que las oscribiría si trabajara en un sistema centralizado.

b) Transparencia de localización. Es necesario agregar a las aplicaciones el nombre de los

fragmentos que deben ser utilizados.

107

Page 106: Manejo de fragmentación y replicación transparente en

c) Transparencia de mapeo local. La aplicación debe indicar el nombre de los fragmentos y

el nodo en que éstos se encuentran.

Si se trabaja con rransparencia de mapeo local o de localización únicamente. las

aplicaciones deberán ser modificadas cada vez que los fragmentos sean cambiados de

nodo. Para evitar este problema se debe lograr que el SMBDD brinde transparencia de

fragmentación.

Para el desarrollador. la fragmentación y localización deben ser transparentes. Sin embargo.

el administrador del sistema requiere de instrucciones especificas que le permitan realizar la

fragmentación y ,a localización de los fragmentos. según el diseño especifico del sistema. El

punto 6.2 muestra algunas sugerencias que debe considerar el LDO.

Al trabajar con fragmentos replicados se facilita la lectura. al poder seleccionar de entre

varios nodos. el más apropiado. Sin embargo, es necesario considerar que para la escritura es

necesario actualizar cada una de las replicas. Los puntos 6.3. 1 a 6.3.5 proponen diferentes

mecanismos para realizar las actualizaciones.

108

Page 107: Manejo de fragmentación y replicación transparente en

Tomando como referencia los capítulos anteriores. se realizó el diseño de la arquitectura que

puede presentar un Sistema Manejador de Bases de Datos Distribuidas Homogéneas. Esta

arquitectura se muestra como prototipo para futuras investigaciones que utilicen las

herramientas que ofrece Sybase con los productos de SQL Server. Open Server y Open Client.

También es posible la implementación de algunos módulos en forma aislada para el desarrollo

de sistemas diferentes al sistema global que se presenta.

7.1 DISEÑO DEL SISTEMA

La figura 7.1 mue~tra la arquitectura del sistema propuesto.

I Open Server + Open Client

¡cliente . ._____ ~ ----... MONITOR GLOBAL ~l'--------1

!Cliente 1 '4 • DE ..... __ _, TRANSACCIONES Catálogo ~ Global

j....--Clien----..te j \ ...._____..,,

Open Clienl SOL Server

Sistema de Base de Datos

Local

Fig. 7.1 Componerites del Sistema

Sistema de Base de Datos

Local

Sistema de Base de Datos

Local SQL Server

Como se puede observar, se propone el uso de las bibliotecas de Open Client para cada uno

de los clientes que requieran de la base de datos distribuida. El Monitor Global de

Transacciones es un proceso que debe ser capaz de recibir instrucciones de los clientes y

realizar peticiones a los Servidores. por lo que se propone Open Server para recibir las

instrucciones y Open Client para contactar Servidores SQL de Sybase o de algún otro

proveedor. Las bl.lses de datos locales trabajan de la misma forma que trabaja un Servidor

SQL centralizado.

109

Page 108: Manejo de fragmentación y replicación transparente en

7.1.1 Instrucciones a Procesar

Se sugiere que el sistema pueda recibir cualquier sentencia SQL y una ampliación al lenguaje

de definición de datos. considerando la transparencia de fragmentción tratada en el

capítulo anteri0t·. el empleo de fragmentación en las instrucciones de definición de datos y la

necesidad de actualizar las réplicas que existen en el sistema. Para mostrar la forma en que

debe funcionar el sistema. se implementaron las siguientes instrucciones en el prototipo que

propone este do::umento:

INSTRUCCIÓN:

SINTAXIS:

CREATE

CREATE TABLE nombre_tab/a

(campo tipo_campo .

....... )

FRAGMENTED nombre_fragmento AT nodo WHERE condición

Lo instrucción se implementó poro poder crear fragmentación horizontal. Los tipos que se

pueden utilizar sen CHAR n. donde n es el número de caracteres máximo poro el campo; e

INT. que corresponde o los enteros en Sybase. Al utilizar la instrucción se deben definir los

fragmentos y el nodo en el que residirá cado fragmento. Esta instrucción provee de lo

posibilidad de d1,;plicar fragmentos al repetir el nombre_fragmento en diferentes nodos con la

misma condición.

INSTRUCCIÓN:

SINTAXIS:

DEL ET E

DELETE

FROM nombre_tab/a

WHERE campo= valor

El prototipo maneja todas los instrucciones con condiciones simples. por ser su objetivo mostrar

los mecanismos c;ue se involucran en cada una de las instrucciones, dependiendo del tipo de

condición. Uno condición simple es la que involucra sólo un campo y un valor. pudiendo

estar involucrado. o no. el campo al que hace referencia el predicado de fragmentación.

INSTRUCCIÓN: DROP

SINTAXIS: DROP TABLE nombre_tabla

110

Page 109: Manejo de fragmentación y replicación transparente en

Drop Y create fL•eron diseñadas para dar mantenimiento a la estructura de la base de datos.

y para mostrar la importancia que tiene el manejo del catálogo global en la coordinación del

sistema.

INSTRUCCIÓN:

SINTAXIS:

INSERT

INSERT INTO nombre_tabla

VALUES(campo == valor . ... )

La instrucción insert puede involucrar tantos campos como existan en la tabla y realiza

copias sincrónicos en todos los fragmentos, utilizando el protocolo de compromiso a dos fases,

según lo indicad:, en 6.3.1.

INSTRUCCIÓN:

SINTAXIS:

SELECT

SELECT nombre_tab/a.campo, nombre_toblo.compo ...

FROM nombre_tab/o,nombre_tabla

WHERE nombre_tob/o.compo == valor

Tanto select como update utilizan la lectura selectiva de fragmentos en base al costo de

acceso a las tablas. Los mecanismos se describen más adelante.

INSTRUCCIÓN:

SINTAXIS:

UPDATE

UPDATE nombre_tab/a

SET campo== valor

WHERE campo = valor

Las instrucciones insert, delete, update y select fueron implementadas para mostrar los

mecanismos que se deben desarrollar para el mantenimiento a los datos y las consultas. La

sintaxis. a pesar de ser sencilla, permite observar los mecanismos con que pueden ser

implementadas ir strucciones SQL más robustas.

111

Page 110: Manejo de fragmentación y replicación transparente en

7.1.2 Catálo~o de Datos

Para implementar el catálogo global se sugiere el modelo que presenta A. Bobok[Bobak, 1993]

que se presenta en la figura 7.2. Como se puede observar el catálogo está dividido en dos

esquemas:

1. Esquema Global

2. Esquema de Fragmentos

El esquema global contiene la definición de las relaciones globales usadas para crear la vista

global de los usuarios y se compone de la siguiente manera:

Tabla: VISTAS_G•OBALES

NVISTA Nombre de vista externa del usuario

SQLG_SELECT Sentencia SQL empleada para construir la vista

ESQUEMA GLOBAL

ESQUEMA DE FRAGMENTOS

VISTAS_ GLOBALES

! NVIST A ! SQLG_SELECT !

TABLAS_ GLOBALES

I NTABLA! NODO I TIPO I COLUMNAS_GLOBALES

INCOLUMNA I NT ABLA I TIPO I LON

TABLAS FRAGMENTADAS

I SITEI N~ABLA I NOMFRAGI NRENGLON

COLUMNAS FRAGMENTADAS

I NOMCOL ,~OMFRAª TIPO, LON

Fig. 7.2 Catálogc Global de la Base de Datos

Tabla: TABLAS_GLOBALES

NTABLA Nombre de la relación Global

NODO

TIPO

Nombre del nodo donde la tabla está distribuida

Tipo: vista o tabla.

112

Page 111: Manejo de fragmentación y replicación transparente en

Si la tabla está distribuida en múltiples nodos. se creará un registro por cada nodo en donde se

encuentre un fragmento de la tabla. Este mecanismo debe ser considerado en las

instrucciones del LDD para actualizar el catálogo global cada vez que se realice uno

modificación.

Tabla: COLUMNAS_GLOBALES

NCOLUMNA: NC'mbre de lo columna

NTABLA:

TIPO:

LON:

Tablo o la que pertenece la columna

Tipo de datos que contiene la columna

Longitud en bytes de lo columna

El esquema de fragmentos. por su parte. contiene información que utilizarán las consultas para

lo localización de los fragmentos. Las dos tablas que contiene este esquema son:

Tabla: Tablas_fragmentadas

NODO Nombre del nodo que contiene la tabla fragmentada

NTABLA Nombre de la tablo de la cual se derivo el fragmento

NOMFRAG No"Tlbre de este fragmento de tablo

NRENGLON Número de renglones contenidos en lo tabla fragmentada. Este dato se emplea

para optimar las consultas distribuidos.

Tabla: Columnas_rragmentadas

Nombre de la columna NOMCOL

NOMFRAG

TIPO

Nombre del fragmento de tabla al que pertenece lo columna

Tipo de dato de la columna

LON Lor.gitud de lo columna

En la implementación se utilizan las tablas:

TABLAS_GLOBALES COLUMNAS_GLOBALES T ABLAS_FRAGMENT ADAS

NODOS

La tabla de nodos se ha añadido con los campos:

NODO Nombre que se le da al nodo. para obtener independencia del nombre real del

servidor.

SERVIDOR Nombre del servidor SQL de Sybase.

113

Page 112: Manejo de fragmentación y replicación transparente en

Usuario que tiene derechos para establecer una sesión con el servidor.

Password de acceso al servidor según el usuario.

USUARIO

ACCESO

COSTO Grado de dificultad para accesar un nodo. Este campo permite accesar a los

nudos que se encuentren en mejor disposición desde el monitor.

El prototipo utiliza esta estructura para que se puedan obtener datos de diferentes servidores y

de diferentes bases, es decir, mantener independencia del nombre del servidor. Si por algún

motivo no se puede contar con un servidor. se pueden cambiar los datos a otro servidor. sin

modificar las aplicaciones. lo único que se debe hacer es cambiar el nombre del servidor para

el nodo en la tabla de nodos.

Se añadieron tres campos a la tabla T ABLAS_FRAGMENT ADAS para poder establecer los

fragmentos que deben ser leídos para modificaciones o consultas.

7.1.3 Bases de Datos para Implementar Ejemplos

Para implementar algunos ejemplos del modo de trabajo del Monitor Global utilizaremos la

siguiente Base qe Datos.

Esquemas Globales TDA(numtda. nombre. área. numgte) PROV(numprov. nombre. ciudad) ART(numprov.numtda. numparte. cantidad)

Fragmentos:

PRQV ,.= SL ciudad= DF (PROV) PROVa= SL ciudad,, TL (PROV) PROVc= SL ciudad" QR (PROV)

ARTA = SL numpate < 201 ( ART) ART a = SL numpate > 200 (ART)

PROV n.rrprov ra,-t,e ciu:JacJ

'',,[//

~ i~j\ lnarbre [~e 1 ·---

114

Page 113: Manejo de fragmentación y replicación transparente en

Disposición de los fragmentos en los servidores:

SYBASEl

TDAS PROVA ARTA

SYBASE2

TDAS PROVB ARTB

Fig. 7.3 Ejemplo para mostrar la implementación.

SYBASE3

TDAS PROVC ARTB

Como se puede ".>bservar, la tabla TOAS se encuentra replicada en los tres nodos. PROV tiene

fragmentos en cada uno de los nodos y no cuenta con replicas en sus fragmentos. ART está

fragmentada en ARTA y ARTB: ARTA no cuenta con réplicas y ARTB se encuentra en los nodos

SYBASE2 y SYBASE3.

7.2 DISEÑO E IMPLEMENTACIÓN DE MECANISMOS PARA EL MONITOR

GLOBAL DE DISTRIBUCIÓN

En esta sección se describe el prototipo de un monitor global de distribución. el cual

desempeña las funciones de un esquema global. Este monitor se ha descompuesto en varios

módulos que pueden ser perfeccionados en base a nuevas investigaciones.

7.2.l Componentes del Monitor Global de Transacciones.

En la figura 4.6 se señala como componentes del procesador del usuario: manejador de

interfaz con el usuario. controlador de semántica, optimizador de consultas y monitor. de

ejecución. Y en la sección 4.2.1 se explica la función de cada componente.

115

Page 114: Manejo de fragmentación y replicación transparente en

Receptor de Transacciones Globales

Analizador de Semántica de Transacciones Globales

Módulo de descomposición de Transacciones

Optimizador de Consultas

Módulo Calendarizador de Transacciones .Globales

Mód Jlo Despachador Global

lntenase de Comunicación

Manejador c:ie LOO

Actualización de costos

Catálogo Global Tabla de

Ccrtdados Globales

Módulo de administración de candados Globales

Módulo de Recuperación Global

Bilócora Global

Fig. 7.4 Propuesta para la Implementación de un Monitor Global de Transacciones

Ambas figuras f1 •eron consideradas para proponer el diseño que se propone para futuras

investigaciones Pn la figura 7 .3. A continuación se presenta la función de cada módulo y la

forma en que se implementaron algunos mecanismos para su correcto desempeño.

7.2.2 Receptor de Transacciones Globales

El primer módulo tiene como objetivo principal recibir las transacciones que solicitan los

clientes por medio de la interfaz de red (08 Library en nuestro coso con las funciones de Open

Client especificadas en 5. 1 ) .

116

Page 115: Manejo de fragmentación y replicación transparente en

Cliente

Cliente

Fig. 7.5 Receptor de Transacciones

+ Hilos que reciben I peticiones. '+ Calendarizador

Analizador de Semántica de transacciones Globales

Es necesario que este módulo pueda recibir peticiones de los diferentes clientes y colocarlas

en una cola pcru su atención. Como se anotó en 5.3.4 se puede programar un servidor Open

Server que esté escuchando las peticiones de los clientes. les de formato pera su tratamiento

en el monitor global y les asigne prioridad.

Open Server cuenta con la capacidad de trabajar con procesos multi-hilos. por lo que se

puede emplear un proceso. como se muestra en el esquema de la figura 7.4. que reciba

mediante hilos 9iverscs peticiones y las coloque en una cola para su atención según los

criterios que sean convenientes al sistema.

Si se utiliza Open Server se debe considerar que los clientes mandarán la información en el

formato de Sybcse. esto es, utilizarán dbcmd ( ) para preparar su instrucción y la enviarán con

dbsqlexec () . 1:1 Servidor debe tomar la petición mediante un manejador de instrucciones

SRV_LANGUAGE (Ver punto 5.3.4).

La implementación que se presenta con este trabajo no cuente con las librerías de Open

Server. por lo que el monitor recibe las instrucciones de un archivo local. El receptor debe

abrir el archivo donde se localizan las peticiones del cliente y darle formato a las sentencias.

Dado que la sintaxis empleada en el prototipo considera uno o más espacios como un

espacio sencillo. el receptor se encarga de elimina los espacios y pasa la instrucción e un

arreglo global de palabras. De la misma forma. se eliminan las comas y se convier.te a

mayúsculas todas les palabras recibidas. por lo que el sistema no es sensible al tipo de letra. El

arreglo global q·Je conforma la instrucción a procesar será empleado por todos los otros

módulos.

117

Page 116: Manejo de fragmentación y replicación transparente en

7.2.3 Analizador de Semántica de Transacciones Globales.

El analizador revisa las peticiones para verificar que su sintaxis sea correcta y que los objetos a

los que hace referencia se encuentren en el catálogo global. Si la solicitud es correcta. se

pasa al siguiente módulo. de lo contrario se rechaza y se anuncia al usuario que la operación

no puede ser realizada.

El analizador de sintaxis requiere información del catálogo global. por lo cual se realizan

conexiones para verificar tablas y campo.

Receptor de Transacciones Globales

Analizador de Semántica de TrC"nsacciones Globales

Módulo de descomposición --­de Transacciones

Manejador de LDD

Calálogo Global

Figura 7.6 Receptor. Analizador de Semántica de Solicitudes globales. Manejador de LDD y

Catálogo Global.

Este módulo fue implementado para revisar los comandos que aparecen en 7.1.1. Si la

instrucción es correcta se continúa con su procesamiento. de lo contrario se notifica al cliente

del error en la ins1rucción. Para resolver el análisis de instrucciones como:

SELECT PROV.NOHBRE, ART.NUMPARTE FROM PROV, ART WHERE PROV.NUMPROV = 20

Se consulta el catálogo global para obtener información sobre existencia de las tablas PROV y

ART. y de los campos NOMBRE y NUMPARTE. Se verifica que las condiciones correspondan al

tipo de campo, es decir. que PROV.NUMPROV sea de tipo INT. Según los resultados. se

continúa o no el procesamiento de la instrucción.

Para la mayor pcrte de consultas al catálogo global se crearon dos archivos con funciones

para el acceso a! catálogo global: cglob.h y sybacc.h. Cglob.h cuenta con funciones

118

Page 117: Manejo de fragmentación y replicación transparente en

como sbexiste _ tabla o sbexiste _ campo que devuelven el valor O si la búsqueda no es

exitosa y de lo contrario devuelven l. Además de funciones como traer_nodofrag que

devuelven una matriz con el nombre de los nodos. y los fragmentos donde existe una tabla

global.

sybacc. h cuenta con la información requerida para accesar el servidor donde se encuentre

el Monitor Global de Distribución y con rutinas para depurar problemas con lo conexión.

7.2 . .lf. Manejador del Lenguaje de Definición de Datos

Como se puede ver en la figura 7.6 el Analizador provee de información tanto al manejador

de LDD como al Módulo de Descomposición y Localización. En la implementación realizada.

las instrucciones modifican directamente las tablas del esquema global y crean las tablas

locales indicadas por las sentencias. Para crear la tabla PROV con fragmentos en SYBASE 1 y

SYBASE2 y SYBASEJ se manda la instrucción:

CREATE TABLE PROV (NUMPROV INT,

NOMBRE CHAR 20, CIUDAD CHAR 2)

FRAGMENTED PROVA AT SYBASEl WHERE FRAGMENTED PROVB AT SYBASE2 WHERE FRAGMENTED PROVC AT SYBASE2 WHERE

CIUDAD = "DF" CIUDAD= "TL"

CIUDAD= "QR"

La implementación sólo permite condiciones sencillas con tablas fragmentadas en forma

horizontal. pero puede ser extendida para fragmentación vertical y mixta en base al catálogo

global.

El archivo define. h cuenta con las funciones necesarios para tratar lo instrucción CREATE y

DROP según la sintaxis establecida en 7.1.1 y hace referencia a funciones de cglobal. h paro

dar mantenimiento al catálogo global. Paro procesar la función anterior es necesario llamar a

funciones como inserta_tabfrag () e inserta_colgls () que den mantenimiento al

catálogo global de datos. De la misma forma, la instrucción DROP TABLE PROV provoca que

el módulo de defnición de datos llame a la función borra tabla () para dar mantenimiento

al catálogo.

Para mantener consistencia al emplear las instrucciones que modifican el catálogo global se

utilizó el protocolo de compromiso a dos fases según 5.3. 1.

119

Page 118: Manejo de fragmentación y replicación transparente en

7 .2.5 Módulo de Descomposición de Transacciones.

Recibe las instrucciones que no trabajan directamente con el LDD sino con la manipulación

de datos. En este módulo se debe convertir la instrucción global en el conjunto de

instrucciones locales equivalentes. que han de procesarse en forma distribuida. Este módulo.

en la implementación, hace uso del nombre de los fragmentos. sin necesidad de especificar el

nodo que procesará la instrucción.

Al recibir una instrucción como:

SELECT PROV.NOMBRE, ART.NUMPARTE FROM PROV,ART WHERE PROV.CIUDAD = "DF"

debe descomponer la sentencia para que se pueda ejecutar en los nodos que contienen las

tables PROV y ART. El trabajo de seleccionar los nodos y eliminar las consultas no necesarias se

deja al siguiente nódulo.

La implementación contiene este módulo en un archivo llamado manipula. h, por ser el

encargado de la manipulación de la información, desde que sale del analizador sintáctico

hasta que se le presenta al usuario un resultado o se modifica la información. Manipula. h

llama a la función localiza () que se encarga de consultar el catálogo global para mostrar

una lista de los nodos que se pueden o deben utilizar en la modificación o consulta. Este

módulo puede ser modificado para observar las anotaciones presentadas en 6.3 junto con las

funciones prepara_ insert () y prepara lectura () .

Para las consultas se emplea un método basado en las inslrucciones ~ELEC'r, FROM y WHERE

siguiendo David Bell [Bell. Grimson 1992). Primero se crea una base temporal en el monitor de

distribución por cada tabla implicada en el from. Se realiza la proyección indicada en el

select de las tuplas involucradas. a cada una de las bases temporales considerando la

condición del where. Se realizan los joins en las bases temporales y se devuelve una

proyección final d usuario. Por último se borran las bases de datos temporales.

Para futuras implementaciones se propone el paso de sentencias SQL a álgebra relacional y

aplicar la teoría que se revisó en la sección 4.5 y la comunicación entre servidores.

120

Page 119: Manejo de fragmentación y replicación transparente en

7.2.6 Optimizador de Consultas.

Recibe las consultas que generó el módulo anterior y elimina los predicados redundantes. de

tal forma que se eliminen las consultas cuyos resultados serán nulos. Este módulo también

debe organizar las consultas. de tal forma que los resultados intermedios sean tan pequeños

como sea posible. En las tablas del catálogo global selecciona. según el tipo de instrucción

(lectura o escritura). aquellos fragmentos que deben ser leídos o modificados y manda a los

siguientes módulos las instrucciones que deben ser ejecutadas en la transacción.

La implementación de este módulo se encuentra en las funciones prepara_insert () y

prepara_lectura (). La primera trae a todos los fragmentos para que sean actualizados.

mientras que la segunda trae los fragmentos más accesibles para realizar consultas ágiles

según el costo que indique la tabla de nodos del catálogo global.

7.2.7 Calendarizador de Transacciones Globales.

Este módulo se encarga de asegurar la ejecución serial de las transacciones utilizando

candados globales o estampillas de tiempo. El objetivo de este módulo es mantener la

concurrencia gtobal. así como el manejo de la recuperación en caso de fallas. Los módulos

de Administración de Candados Globales y de Recuperación Global trabajan en conjunto

con este módulo.

Optimizador de Consultas

Mód· ,10 Calendarizador de

Módulo Despachador Global

Tabla de Candados

~

Módulo de Admlnlslración de Candados Globales

Módulo de Recuperación Global

Bitácora Global

Fig. 7.7 Componentes relacionados con el Calendarizador de Transacciones

121

Page 120: Manejo de fragmentación y replicación transparente en

En la implementación no se incluye este módulo, por lo cual se despachan las consultas según

lo indique el oplimizador de consultas. Sin embargo se puede crear un módulo que tome las

instrucciones que deben ser procesadas e implementar estrategias de candados o estampillas

de tiempo como las que se discutieron en los puntos 4.8 y 6.3. Por otra parte. en el punto 4.7.2

se presentan algunas estrategias a seguir en las transacciones distribuidas y el empleo de la

bitácora para brindar tolerancia a fallas.

7.2.8 Despachador Global.

El último módulo componente del monitor global. es el que se encarga de enviar las consultas

de fragmentos a cada uno de los nodos involucrados en la consulta. Espera las respuestas y

al final de las operaciones manda la respuesta al cliente que solicitó la consulta. La

instrucción dbsqlexec () trabaja en forma bloqueante (ver punto 2.1.5). esperando respuesta

del servidor con quien contacte. y obtiene los resultados de su consulta con la instrucción

dbresults(). El cliente también puede cambiar la instrucción dbsqlexe () por su

equivalente no bloqueante dbsqlsend () y dbsqlok () . Open Server envía los datos a los

clientes con la fun.:ión srv_sendrow.

Dado que la implementación trabaja con Open Client los resultados se mandan al dispositivo

de salida predeterminado con la instrucción dbprrow ( ) y para enviar mensajes de error se

utiliza printf ();

7.3 RUTINAS EMPLEADAS EN LA IMPLEMENTACIÓN

Para la programación del Monitor Global de Distribución se siguió el esquema que se presenta

en la figura 7.8. Algunas rutinas son detalladas a continuación.

7.3.1 Definiciones y Encabezados

• En el archivo moni01. h encontramos las siguientes definiciones

# define TOTINS 6

# define SELECTO # define INSERT 1

/* Numero de instrucciones que se procesan en esta version del monitor

/* Valor de cada instruccion

• Las variables globales

char palabra [100] [30]; /* Arreglo de palabras de la instruccion a procesar. char instruccion [6] [ 10) = ( "SELECT", "INSERT", "DELETE", "UPDATE", "CREATE", "DROP" J;

122

Page 121: Manejo de fragmentación y replicación transparente en

/* Instrucciones validas en esta version. int totpalabras; /* Numero de palabras a procesar en la instruccion actual.

• BlbDotecas de Sybase

# include <sybfront.h> # include <sybdb.h>

/* Bibliotecas Sybase

# include <syberror.h>

' # # # # # # # # #

Archivos del Monitor Global

include "receptor.h" /* Receptor de Peticiones include "analOl.h" /* Analizador de Sintaxis include "sybacc.h" /* Acceso a los nodos activos include "cglobal.h" /* Consultas al Catalogo Global include "manipula.h" /* Manejador de LMD include "define.h" /* Manejador de LDD include "2pc.h" /* Protocolo de Compromiso a dos fases include "localiza.h" /* Localizador de Fragmentos include "prepara.h" /* Optimizador de Consultas include "despacha.h" /* Despachador

r· montot.~--~.-1

L~~,~~,~-rn~. l~in~i::~ recept~i-:h .... --1 Receptor de I

lransacciones j ··- -·--------·· ... ,- J __ I

==n analOl.h }- ~-·· manipula. h .Analizador de Sintaxis __

Maneja el LMD . . . . . .

define.h I

Maneja el LDD j

l. ·----- - -- J__ ·-

localiza. h Busca fragemlos

prepara. h -1-Selecciona Fragm~

despacha.h Ejecución } resultados

: • 1 -~--- -- ' - -­

' t .... r--~~~~~f!s::i-1... ... ¡

_} 1 Ca lálogo Global 1

- - ,- - - - - - - - - - - - - J

r­, • 1 : 1 : 1 : 1

_:_J

1 1 1

-- 2pc.h --] : Consultas al - - ..!

.catálogo ~I~

Fig. 7.8 Esquema de la Programación del Monitor Global de Distribución

123

Page 122: Manejo de fragmentación y replicación transparente en

7.3.2 Conexiones al Monitor Global y a Nodos

Existen dos forrrcs básicas para conexión a nodos en el prototipo:

a) conexion# () Que se emplea para el monitor global y acceso al catálogo de datos. Para

permitir tolerancia a fallas se debe considerar la posibilidad de que en

caso de falla con la conexion3 () (por ejemplo) se ejecute la función

conexion2 () o conexionl () •

b)c nodo usuario(nombre,acceso,nodo[i],servidor[i]); DBSETLUSER(login,nombre); DBSETLPWD(login, acceso); dbproc mul[i] = dbopen (login, servidor[i]); if (dbproc mul[i] == NULL) ( printf ("\nProblemas en la conexion con el nodo \Is \n",nodo[i]); return (O);

El modo de acceso b llama a una función que consulta el catálogo global y devuelve

nombre. clave de acceso y servidor válido, según el nombre que se envíe en el tercer

parámetro. Una vez obtenidos los datos se arregla un registro con las funciones DBSETLUSER,

DBSETLPWD y DBSELAPP. La función dbopen ( ¡ abre la conexión y devuelve un apuntador tipo

DBPROCESS para cada conexión que se abra.

Como se puede observar en el ejemplo. se está trabajando con un arreglo de apuntadores.

ya que se puede abrir más de una conexión a la vez. lo cual es necesario cuando se trabaja

con el protocolo de compromiso a dos fases.

7.3.3 Consultas a Servidores SQL

Para explicar la ;-orma en que se realizan las consultas al catálogo global podemos ver la

estructura de la fJnción sbexiste campo () que verifica la existencia de un campo, después

de recibir el nombre de la tabla y la columna buscada:

int sbexiste_campo(char *contabla,char •concolumna) {

... conexión ...

dbcmd(dbproc,"select ncolumna, ntabla from columnas globales ó dbfcmd(ówhere ncolumna = '%s' and ntabla = ·~,s' ",contabla,concolumna); dbsqlexec(dbproc); return code = dbresults(dbproc);

if (return code == SUCCEED) { dbbind (dl,proc, 1, STRINGBIND, (DBINT) O, tabla); dbbind (dbproc, 2, STRINGBIND, (DBINT) O, columna); dbnextro~·(dbproc);

124

Page 123: Manejo de fragmentación y replicación transparente en

} dbexit ();

if(!strcmp(tabla,contabla)) if(!strcmp(columna,concolumna))

return(l); else

return(O);

dbcmd(proceso, 1'1strucclon) Guarda en un una zona de almacenamiento la instrucción que se

quiera ejecutar por la conexión apuntado en la variable proceso. dbfcmd ( l es semejante.

pero permite incluir variables en la instrucción. del mismo modo que trabaja un printf ("

Constante %s %i ".varl.var2).

dbsqlexe(dbproc) Manda la petición de ejecución de lo que se encuentra en la zona de

almacenamiento por la conexión apuntada por dbproc.

El resultado de le. consulta se obtiene con dbresults(proceso) cuyos resultados pueden ser

succEED o FAIL. dbbind () Manda el valor de cada campo seleccionado a una variable del

programa. y cada vez que se ejecuta dbnextrow() cambia su valor por el de la siguiente

tupla.

dbexi t () Cierra todas las conexiones que se encuentren abiertas en el momento.

7.3.4 Modifica<:iones en el LDD

El prototipo manl:3ja las instrucciones CREATE y DROP para definición de datos. Cuando se

genera un create se deben crear las tablas con la estructura que se definió en el punto 7.3.3.

Es preciso que esta transacción se realice en forma atómica. por lo que se implementó el

protocolo de compromiso a dos fases tratado en 5.3. 1 para accesar en forma dinámica varios

nodos. Si la creación se realiza sin problemas. se procede a actualizar el catálogo global con

las funciones:

inserta_tabgls( char *pntabla,char nodo[lO) (10),char tipo[l),int nregs) int inserta colgls(char pncolumna[lOJ [30),char *pntabla,char ptipo[lO] (15),int lon[lO), int nregs) inserta_tabfrag(char pnodos[lOJ [10),char *pntabla,char pnomfrag[lO] [30),char pcampocon[lO] [30],char psimbcon [10) [2),char pvalorcon[lO] [40],int nregs) {

De la misma forma. cuando se borra una tabla. primero se ejecuta el DROP en todos los

fragmentos con protocolo de compromiso a dos fases y luego se emplea la función:

borra_tabla(char *pntabla) (

125

Page 124: Manejo de fragmentación y replicación transparente en

7.3.5 Protocolo de Compromiso a Dos Fases

• Se puede recibir un arreglo (nodos) que contenga hasta 10 nodos. en los cuales se ejecutarán la:- instrucciones que recibe el parámetro comandos. Tnodos recibe el número de nodos participantes.

int m2pc(char nodo[lOJ (10],char comandos[lO] [400),inl tnodos) [

xact_string[128J; char char servidor[lO] [l0]~{"'',"","","",'1

",''1',''",'

1",''",''''J;

concxion3();

• Con esta rutina se conecta a todos los nodos participantes.

for(i~O; i < tnodo:s; iH) 1 e_ nodo_ uuuac io ( nombr·c, accc:;ú, ri0d, • I i 1, :_~,: r v j,-J, ,r I i 1 ) ;

dbproc mul[i] = dbopen (login, servidor(i)); if (dbproc mul[i] == NULL) 1

printf (~\nProblemas en la concxion con el nodo %s \n",nodo(i] ); return (0);

• El protocolo r~quiere que se prepare el nodo coordinador (el monitor global)

commid = start_xacl(dbproc, "demo", "Lesl", 2);

/* Dar nombrea a la trsnsaccion*/ build __ xact_ string ("test", /\LUMNOS, comm ld, ;,.a,·! ,;l ,·inq);

• Inicio de la Transacción

sprint f ( cmdbu f, "ElE:GIN TRJ\NS/V:T ION

%s",xacl sl.rirvJ); tor ( i~O; i < Lnodo,;; i 1 1) (

spr intf ( cmdbuf, comandos [ i J J; dbcmd(dbproc mulfl), cmdbuf); ret server =-dbsqle,rnc (dbproc mu] ( i J ) ; if (ret_server == FAIL) -

• Preparar

•·L-ir1I f("\nl-;L-L'"'l p.,1;1 .iniciar l.L~111:.:,11.·,_·i, __ ,11. ::3r.'td .11 .. _.1.Ladd\11 11 );

alJ·~·1l.:1L (dbf-•ti.:.i'-· ___ rnul, db(i[oc, comniid, Lr1r.Jd• i:;);

relurr, ( ü);

sprintf(cmdb,1f, "PREPARE 'l'RANSACTION"); prir11 r ( 11 \11 Er1 . ..-·1r: cr1 1., preparacion del ;'p,--:. Se ab(lrtar;.1\n");

for (i=O; i< tnodos; i++) 1 dbcmd(dbproc mul[i], cmdbuf); ret server =-dbsqlexec(dbproc m11l[i) ); if (ret_server == E'AIL) 1 -

• Acordar

abortar(dbproc_mul, dbproc, commid, tnc,dos);

ret11rn(O);

126

Page 125: Manejo de fragmentación y replicación transparente en

/*Acordarla transaccion */ if (commit xact (dbproc, commid) =~ FAJ L) ( /* Al fallar el acuerdo en el agente coo1di1Hdor se al,,,rta. •¡

printf( "\nTransaccion abortada en -- commil xact fnllcd\n"); abortar(dbp!'oc mul, dbproc, commld,tnodc,:::;); · return(O); -

sprintf ( cmdbuf, "COMMIT TRNlSACTION");

for(i=O; i < tnodos; i++) 1 dbcmd(dbproc mul[i], cmdbuf); if (dbsqlexec(dbproc mul[i]) != FAIL)

remove xact(dbproc~ commid, l);

close commit(db~roc); printF( "\nTransaccion atomica completa.\n"); return (l);

En caso de que la transacción no tenga éxito debe ser abortada en todos los nodos

Aborta transaccion en 2pc: dbproc mul: Arreglo de procesos a abortar dbproc-com: Proceso coordinador del ,commit commid: identificador del 2pc parttcl.p;¡ntes: Num11ro de proce.st'1:=:; ;:i :lh,)rl"...-1,. ++•++++++++++•+++++++++++++++++++++++++++~++~+;

abortar(dbproc mul, dbproc com, commid, parlici.¡.,antc:c;) DBPROCESS -.dbproc_mul[lOJ; DBPROCESS int int [

*dbproc com; colllmid;­

parti,:ipante:::;;

int i; /* Error en alguna parte de la Lran:iüc•:i,:,r, '/ aborl_xact(db¡,roc_corn, commid);

sprintf (cmdbuf, "HOLLBAC~; TRNISAC'l'ION");

for(i=O; i < participantes; i++) ( dbcmd(dbproc mul[i], cmdbuf); if (dbsqlexec(dbpruc mul(i]) !~ FAlL) remove xact (dbproc com, ,,ommid, l); ) -dbexi t (); return;

7.3.6 Lecturas y Escrituras Distribuidas

El prototipo utiliza las funciones localiza_nodofrag(), prepara_insert() y

preprara _ lectura () para la manipulación de datos. La estructuro de la función localiza es

la siguiente:

localiza nodofrag(char *ptabla,char pnodos[lO] [10],char pfragrnentos[lO] (30], char pcampo[lO] [30], char psimbolo[10][2]. char pvalor[lOJ [40].char ptipo[10][15],int *can_reg){

dbcrnd(dbproc,"select a.nodo,nornfrag,carnpocon,simbcon,valorcon,tipo "); dbcmd(dbproc,"from tablas_fragrnentadas a,colurnnas_globales b, nodos e");

127

Page 126: Manejo de fragmentación y replicación transparente en

dbfcrnd(dbproc, "where a.ntabla a.nodo=c.nodo",ptabla); dbcrnd(Oorder by nodo, costoo);

'%.s' and b.ncolumna carnpocon and

Localizo devueive los nodos y los fragmentos en donde se encuentro uno tabla global. Ei

resultado se entrego ordenado por costo de acceso poro que prepara_lectura() puedo

seleccionar sólo el nodo morcado con menor costo.

• Se recibe el número de registros localizados por localiza nodofrag y en modo. rfrag y rsal se devuelve el nombre de los nodos y fragmentos o utilizar. Regsal indico el numere de registros o -:onsideror.

prepara insert( regen,val_ins,tipo,frags,nodo,carnpos,valor,sirnbolos,rnodo,rfrag,regsal)

if ( ! strcmp (sirnbolos [i), "<")) { if(!strcrnp(tipo,"CHAR")) {

strcat(ctrnp,"'"); strcat(ctrnp,valor[i]); strcat(ctrnp,"'"); if (st::crnp(val ins,ctmp) < O)(

strcpy(rnodo[contador) ,nodo[i)); strcpy(rfrag[contador],frags[i)); contartor++;

.strcpy(c::trnp, "");

el.se( if (atoi(val ins) < atoi(valor[i])) {

strcpy(rnodo[contador),nodo[i) ); strcpy(rfrag[contador],frags[i)); contador++;

Poro realizar moc:ificociones. se siguen estos pasos:

• Se creo uno base de datos temporal.

• Se leen los fragmentos requeridos y se insertan en la base temporal.

• Se modifican los fragmentos en la base de datos temporal.

~ Se borran los fragmentos leídos de sus respectivos nodos.

• Se insertan los fragmentos de la base de datos temporal en los nodos que les corresponda.

Poro crear lo bo.;e de datos temporal se empleo lo función create_tabla_trnp(J, lo cual

creo los tablas requeridos según el catálogo global. Esta función también se utilizo poro los

consultas realizoaas con la instrucción select, lo cual puede implicar el empleo de dos o

más tablas temporales.

128

Page 127: Manejo de fragmentación y replicación transparente en

7.4 EVALUACIÓN DEL SISTEMA

Al compilar el programa principal.moniO l .c. se genera un archivo ejecutable llamado moniO 1.

Este programa solicita el nombre de un archivo que contenga la instrucción SQL a ejecutar.

las instrucciones deben respetar la sintaxis expuesta en el punto 7.1.1.

El ejemplo que se expone a continuación utiliza la descripción del punto 7. 1.3

Al solicitar la instrucción:

CREATE TABLE ART (NUMPROV INT,

NUMPARTE INT, NUMTDA INT, CANTIDAD INr) FRAGMENTED ARTA AT SYBASEl WHERE NUMPARTE < 201 FRAGMENTED ARTB AT SYBASE2 WHERE NUMPARTE > 200 FRAGMENTED ARTB AT SYBASE3 WHERE NUMPARTE > 200

Se crean las tablas ARTA. ARTB la primera en el nodo SYBASE 1. y la segunda en los nodos

SYBASE2 y SYBASE3.

En cambio, al solicitar:

CREATE TABLE 'l'DA (NUMTDA IN'I',

NOMBRE CMR 20, AREA CHAR 6, NUMGTE IN'r) FRAGMENTE O TOA AT SYBASEl FRAGMENTE O TOA AT SYBASE2 FRAGMENTED TOA AT SYBASE3

Se crea la tabla TOA en los tres nodos.

Para crear la tabla global PROV se corrió la siguiente instrucción:

CREATE TABLE PKOV (NUMPROV INT, NOMBRE CHAR 20, CIUDAD CHAR 2) FRAGMENTE O PROvA AT SYBASEl WHERE CIUDAD 'DF' FRAGEMNTED PROVB AT SYBASE2 WHERE CIUDAD 'TL' FRAGMENTED PROVC AT SYBASE3 WHERE CIUDAD 'QR'

Generando tres tablas locales. PROVA en SYBASEl. PROVB en SYBASE2 y PROVC en SYBASE3.

Después de ejecutar los comandos. el catálogo global es actualizado con los nombres de las

nuevas tablas globales y las características de los fragmentos.

129

Page 128: Manejo de fragmentación y replicación transparente en

Para insertar información se corrieron las instrucciones:

INSERT INTO TDA VALUES(NUMTDA = 'l',AREA = 'TEPEYAC',AREA = 'NORTE', CANTIDAD

Como resultado se insertó lo tupla en los tres nodos.

Al procesar

INSERT INTO ART VALUES (NUMPROV=l,NUMPARTE=203,NUMTDA=l,CANTIDAD=23)

Se obtuvo la tup;a correspondient~ tanto en SYBASE2 como en SYBASE3.

110 1)

Una vez asignadas tuplas a las tablas PROV A. PROVB y PROVC se ejecutó la instrucción:

UPDATE PROV SET CIUDAD= 'QR' WHERE CIUDAD= 'DF'

Como resultado. las tuplas de la tabla SYBASE3 se mandaron a SYBASE 1 con el valor DF en el

campo CIUDAD .

La instrucción delete se ejecutó con la siguiente sentencia:

DELETE FROM PROV WHERE NUMPROV > 6

Con la cual se borraron las tuplas correspondientes a la condición en cada nodo.

La instrucción select se ejecutó de la siguiente forma:

SELECT TOA.NOMBRE, ART.NUMPARTE, ART.CANTIDAD FROM TDA,ART WHERE TDA.NUMTDA = ART.NUMTDA

Y se obtuvo como resultado:

NOMBRE NUMPARTE CANTIDAD

TEPEYAC 1 23

7.5 COMPARA~IÓN CON OTRAS FORMAS DE DISTRIBUIR LOS DATOS

Como se puede observar. las instrucciones empleadas cuentan con transparencia de

fragmentación. y por lo tanto de localización. Si se utilizaran procedimientos almacenados

130

Page 129: Manejo de fragmentación y replicación transparente en

para realizar la jistribución. sería necesario agregar el nombre del servidor a la instrucción.

(ver punto 5.3.2). con lo cual no se brindaría transparencia de localización. Lo mismo

sucedería con el protocolo de compromiso a dos fases.

El empleo de Replication Server permitiría la copio replicada de las tablas. pero no el manejo

de fragmentación horizontal en base a predicados.

En cuanto a Navigation Server, es necesario considerar que el producto está diseñado para

máquinas paralelas. por lo cual. la posibilidad de utilizar cualquier servidor SQL no sería viable.

En algunas ocasiones se recomienda el empleo de disparadores para generar replicación.

Esta opción hace que la localización de los fragmentos dependa de las tablas y no de un

esquema global. perdiendo la oportunidad de mover de nodo las tablas que se encargan de

replicar información mediante disparadores.

7.6 PROPUESTAS PARA FUTURAS INVESTIGACIONES

• En primer lugc.r, es necesario que se consideren tanto la arquitectura propuesta en la figura

7.1 como la estructura del Monitor Global de Transacciones que se muestra en la figura 7.4.

• Se debe modificar la recepción que hace actualmente el Monitor a través de archivos

planos por la recepción de instrucciones mediante las funciones de Open Server.

• Otro módulo que puede hacer uso de los recursos de Open Server es el módulo

despachador global.

• El diseño e implementación del módulo calendarizador de transacciones, con los módulos

para la administración de transacciones y de recuperación. pueden hacer uso de los

módulos con los que se cuenta actualmente para brindar transparencia de fragmentación y

replicación. así como de la teoría expuesta en el ca.pítulo 4.

• Para hacer más eficiente el módulo optimizador se recomienda pasar de SQL a álgebra

relacional. para poder aplicar mejor la teoría que se revisó en 4.5

7. 7 CONCLUSIONES

En este capítulo se ha propuesto un SMBDD homogéneo. como modelo para brindar

transparencia en la fragmentación y distribución. Se ha seleccionada esta arquitectura

131

Page 130: Manejo de fragmentación y replicación transparente en

porque facilita el empleo de un directorio/diccionario global actualizable mediante

instrucciones del lenguaje de definición de datos. que permite transparencia de

fragmentación, de tal forma que las aplicaciones son inmunes a las modificaciones de

localización y fragmentación.

Se presentó en la fig. 7.4 una propuesta para la implementación de un Monitor Global de

Transacciones y se describe la función que debe desempeñar cada uno de sus componentes.

En el punto 7.3 se muestran las principales rutinas utilizadas para la implementación de un

prototipo del Moritor Global de Transacciones que brinda transparencia de fragmentación y

replicación.

Se presentaron los resultados de la ejecución del prototipo. demostrando que este ofrece

fragmentación y replicación transparente. Y se comparó el empleo de este mecanismo con

los que generalmente se utilizan para la distribución de datos.

132

Page 131: Manejo de fragmentación y replicación transparente en

A lo largo de este trabajo hemos revisado algunos mecanismos y técnicas que se emplean

para crear siste TICS distribuidos transparentes. escalables. tolerantes a fallas y que brinden

mayor poder d~ cómputo que los sistemas centralizados. Se han expuesto las principales

tendencias en el área del manejo de bases de datos. subrayando la importancia de los

Sistemas Manejadores de Bases de datos Distribuidos. al igual que los fundamentos teóricos

para su diseño y las principales técnicas para su implementación.

Generalmente los proveedores de Sistemas Manejadores de Bases de Datos de tipo

comercial. sólo ofrecen una serie de mecanismos aislados para trabajar con dos o más

servidores SQL como opción para distribuir la información. Estos procedimientos carecen de

transparencia en la fragmentación y replicación de datos. exponiendo las aplicaciones

desarrolladas por los programadores a modificaciones en la estructura global y a

inconsistencias.

En el documento se presentaron los principales tipos de arquitectura para la implementación

de Bases de Datos Distribuidas y se optó por desarrollar un sistema de base de datos

distribuida homogénea mediante los mecanismos de Open Client de Sybase para demostrar

que es posible crear un sistema que ofrezca transparencia en fragmentación y replicación

con inmunidad a modificaciones en la estructura global. Se propuso el diseño de este sistema

y se explicó la función que debe cumplir cada uno de los componentes del mismo. Se

implementó un prototipo que maneja las instrucciones CREATE y DROP para la definición de

datos; e INSERT, DELETE, UPDATE y SELECT para la consulta y manipulación de la

información.

Para lograr la transparencia en fragmentación y replicación fue necesario crear un Monitor

Global de Distrinución. el cual cuenta con catálogos de la estructura de los datos y los

servidores involucrados en el sistema. Esta estructura. como los mecanismos mencionados en

la sección 7.3 son la base del sistema. pero deben ser perfeccionados para desarrollar

sistemas más robustos. por lo que se espera que tanto el diseño como las implementaciones.

puedan ser retomados para futuras investigaciones.

Se apunta como de especial interés el desarollo del módulo de calendarización de

transacciones globales. con los submódulos de administración de candados o estampillas de

133

Page 132: Manejo de fragmentación y replicación transparente en

tiempo y la bitácora para recuperación de transacciones. Así como el empleo de Open

Server para optimar la recepción y devolución de información.

Los sistemas disfribuidos seguirán su desarrollo. impactando cada vez más la forma de

desarrollar sistemas. La investigación en esta área es de gran importancia. tanto para innovar

como para adaptar la tecnología que surge en productos comerciales cada vez con mayor

frecuencia.

la mejor forma d-.:, comprender los conceptos de distribución y de valorar su funcionalidad es

mediante la implementación de Sistemas Distribuidos. Open Server y Open Client de Sybase

son herramientas poderosas y diseñadas para crear ambientes distribuidos abiertos de

calidad.

Este trabajo ha tenido como inspiración la necesidad de hacer más eficientes los sistemas de

información. La globalización y el desarrollo que presentan las redes de comunicación.

agilizarán la presencia de opciones distribuidas en los SMBD. por lo cual. debemos responder

ante los requerimientos. ofreciendo técnicas y diseños adecuados a nuestro entorno. Es un

esfuerzo para mostrar un camino a seguir y una puerta que se abre para enfrentar nuevos

retos.

134

Page 133: Manejo de fragmentación y replicación transparente en

[Atkinson. Bancilhon 1989) Atkinson. M; Bancilhon. F; DeWitt. D.; Dittrich. K; Marier,D; Zdonik, S "The Object-Oriented Database System Manifesto." Proceedings of Deductive and Object Oriendte Database. Kyoto. Jopan . December 1990.

[Abósolo.Blanco.Mendieta 1994] Abósolo. José: Blanco R.: Mendieta F. "Metodología de Diseño de Bases de Datos Distribuidas y su Implantación y su Implementación sobre Oracle 7".CLEI Panel 94. Ciudad de México, septiembre de 1994.

[Bell, Grimson 1992] Bell David, Grimson Jane. "Distributed Data Base Systems" Addison-Wesley 1992.

[Belford.1982) Belford, G. "Distributed Database Techniques: An assessment", in Current Directions in Database Managment Development. New York. Auerbaeh. 1982.

[Bobak. 1993] Bot::.ak. A. "Distributed and Multi-Database Systems", Bantam Books. 1993

[Ceri. Pelagatti 1984) Ceri. S.: Pelagatti. G. "Distributed Databases Principies & Systems" McGraw Hill Computar Science Series, (1984).

[Codd 1970) Cood. E.F. "A Relational Model For larga Shared Data Banks" . Communieations of the ACM. vol 13. número 6 (junio 1970). páginas 377-387.

[Coulouris 1994]Coulouris. Dellimore & Kindberg. "Distributed Systems: Coneepts and Desing". Addison Wesley. 2nd. Edition (1994).

[Cristian 1991) Cristian. F. "Understandig Fault-Tolerant Distributed Systems" , Communieations of the ACM. vol. 34. no 2 (1991)

[Eswaran 1976) [swaran K .. et al "On th Notions of Consistency and Predieate loeks in a Relational Database System". Communication of the ACM. 19:11.1976

[Korth. Silbersehafz 1993] Korth. H & Silbersehafz. A. "Fundamentos de Bases de Datos", Sengunda Edición Me Graw Hill ( 1993).

[Lamport 1978) Lamport, Leslie. "Times. clocks and ordering of events in a Distributing System". Communieations of the ACM. Vol. 21. No. 7, (julio 1978).

[Levin y Morgan, 1975] Levin. K.O.: Morgan H.L. "Optimizing Distributed Data Bases: A Framework for Researeh".ln Proc. National Computer Conf.. 1975, pp. 473-478.

[litwin. 1988) litwin. W."From Database System to Multidatabase Systems: Why and How".ln Proe. British National Conferenee on Databases (BNCOD 6). W.A. Gray (de). Cambridge: Cambridge Unive. sity Press, 1988. pp. 16 1-188

[Mefadden.Hoffer 1994) Me Fadden. Fred; Hoffer Jeffrey "Modern Database Managment". Fourth Edition. The Benjamin/Cummings Publishings ( 199 4). [MeGoveran. Date 1992) MeGoveran O; Date C.J. "A Guide to Sybase and SQL Server". Addison-Wesley (1992).

135

Page 134: Manejo de fragmentación y replicación transparente en

[Ózsu. Valduriez 1991) Ózsu M.T.: Valduriez.P. "Principies of Distributed Database Systems". Prentice-Hall (1991 J

[Pelagatti. Schreiber] G. Pelagatti and F.A. Schreiber. "A Model of an Access Strategy in a Distributed Database." Proc. IFIP TC-2 Working Conference on Data Base Architecture. G. Brancchi and G. M. Nijissen. eds .. North-Holland. 1979.

[Pazos R .. Pérez J 1995) Pazos R; Pérez J. "Extensión al Lenguaje SQL para el logro de Transparencia de Fragmentación en Bases de Datos Distribuidos" Conferencia en Zacotepec Mor. 1995 Instituto de Investigaciones Electrices.

[Rennhackkamp M. 1996) Rennhackkamp. M. "An Analysis Of The Stregths And Weaknesses Of The Big Six Databose Servers". DBMS online. november 1996.

[Sánchez. 1995). "Sistemas Distribuidos". ITESM-CEM 1995.

(Silberschotz. Stonebroker 1990) M Silberschatz. A.; Stonebroker. M; Ullmon. J. "Dotabase Systems: Achievements and Opportunities." Communications of the ACM (October 1991).

[Simon 1995) Simon. A. "Strategic Dotabose Technology: monogment of the yeor 2000". Morgan Kaufmorn Publishers. lnc. (1995)

[Sinha 1992) Sinha. A. 1992 "Client-Server Computing" Comunication of the ACM 35 (July):77-98

[Stonebroker. 1988) Stonbraker. M. "Readings in Database Systems. San Mateo. Colif. Morgan Kufmann. 1988.

(Stonebral<er. Ro·Ne 1990) Algunos miembros del comité: Michael Stonebral<er de lo Universidad de California. Berkeley: Lorry Rowe de la Universisd de California. Bruce lindsay de investigación IBM: Jim Gray de Tandem; Mike Carey de la Universidad de Wisconsin y David Beech de Orocle. 1'1ird-Generotion Doto Base System Manifesto", Proceedings IFIP WG2.6 Conference on Object Oriented DAtabases. Windermere. England (juilio 1990)

[Tsichritzis and Kl;Jg, 1978) D.C. Tsichritzis ond A. Klug. "The ANSI/X3/SPARC DBMS Fromework Report of the Study Group on Database Managements Systems." lnf. Syst.(1978).1:173-191.

136

Page 135: Manejo de fragmentación y replicación transparente en

t

2PCP 2PL ATO ATL Attr BDD BOOO CP 0/DG 0/DL DF ECL ECG EIL EE EEG EEL JN LOO LMO MBDOO NJN NSJ PJ RTM(x) RPC SJ SL SMBD SMBOO UN WTM(x)

Protocolo de compromiso a dos fases Trllnsacción asegurada a dos fases Administrador de transacciones distribuidas Administrador de transacciones locales Atributo Base de datos distribuida Base de datos orientada a objetos Producto cartesiano Directorio/diccionario global Oiiectorio/diccionario local Dif '3rencia Esquema conceptual local Esquema conceptual global Esquema interno local Esquema externo Esquema externo global E!quemo externo local Join Lenguaje de definición de datos Lenguaje de manipulación de datos Manejador de bases de datos orientado a objetos Join natural Semi join natural Proyección Estampillo mayor de lectura Lla'Tlada a procedimientos remotos Semi-jo in Selección Sistema manejador de bases de datos Sistema manejador de bases de datos distribuidas Unión Estcmpilla mayor de escritura

/j ((' _: ) '/ - I ~-· )

137