cenidet santiago... · 3.1.2.3 consideraciones de finalización ... tabla de abreviaturas bdd crc...
TRANSCRIPT
SEP
Centro Nacional de Investigación y Desarrollo Tecnológico
SElT DGlT
cenidet Herramienta para la Migración de Datos a través de
Internet
TESIS Que para obtener el grado de Maestro en Ciencias en Ciencias Computacionales
presenta
Santiago Martinez Ossorio
Director de Tesis: Dr. Joaquín Perez Ortega
Co-director de Tesis: M.C. Jose Antonio Zárate Marceleño
.
Cuernavaca, Morelos Diciembre de 1999
>entro Nacional de Investigación y FORMA C3
Desarrollo Tecnológico
I REVISION DE TESIS
Cuernavaca, Morelos a 7 de Diciembre de 1999 ,I
I.C. Máximo López Sánchez I/
residente de la Academia de Ciencias Computacionales 81
resente 1,
Nos es grato comunicarle, que conforme a los lineamientos para la obtención del grado de,l laestro en Ciencias de este Centro, y después de haber sometido a revisión académica la tesis,I enominada: Herramienta para la Migración de Datos a través de Internet, realizada por el :. Santiago Martínez Ossorio, y habiendo cumplido con todas las correcciones que le fueron idicadas, acordamos no tener objeción para que se le conceda la autorización de impresión de I tesis. 1
I/
Sin otro particular, quedamos de usted. I1
II
Atentamente
La comisión de revisión d
Ir. RodolfBA. Pazos Rangel tevisor
Director de tesis
:o-director d,k tesi6
:.c.p. Dr. Javier Ortiz HernándedJefe del Departamento de Ciencias Computacionalec
NTERIOR INTERNADO PALMIRA SIN. CUERNAVACA, MOR. MGXICO 4PARTADO POSTAL 5-164 CP 62050, CUERNAVACA. TELS. (73)12 2314.12 7613 , I S 7741, FAX(73) 12 2434
EMAIL [email protected]
II
cenidet 1;
I
1
Centro Nacional de Investigación y Desarrollo Tecnológicot /I
FORMA C4 AUTORIZACION DE IMPRESIdN DE TESIS
Cuernavaca, Morelos a 7 de Diciembre de 1999
:. Santiago Martínez Ossorio zandidato al grado de Maestro en Ciencias !n Ciencias Computacionales 'resente
I/
Y
Iespués de haber atendido las indicaciones sugeridas por la Comisión Revisora de la" kademia de Ciencias Computacionales en relación a su trabajo de tesis: Herramienta para la I' digración de Datos a través de Internet, me es grato comunicarle, que conforme a los 'I ineamientos establecidos para la obtención del grado de Maestro en Ciencias en este Centro, 'I ;e le concede la autorización para que proceda con la impresión de su tesis. I/
INTERIOR INTERNADO PALMIRA SIN, CUERNAVACA. MOR, MÉXICO APARTADO POSTAL 5-164 CP 62050, CUERNAVACA, TELS. (73)12 2314,12 7613 . I 8 7741, FAX(73) 12 2434
EMAIL [email protected]
#I
cenidet 1:
I1
I1 a mis padres José Santiago y María del Carmen
a mi hermano Emilio José
a mis abuelos Q José y Q Manuel Emilio //
I/
I/
U
I/
a mi abuela Carmen
a mis tíos Manuel Emilio, Carlos Miguel y Luis Alberto
a mis tías Elsa y Enriqueta i I/
a mis primos Elsa del Carmen y Emiliano I
I/
I/
I/
//
I/
It
I/
I/
1
Ag radecim ¡en tos
De forma especial quiero agradecer a mi director de tesis Dr. Joaquín Perez Ortega, Por todo el apoyo que me brindo durante la elaboración del trabajo, por su hvaluable orientación y asesoramiento, por toda su ayuda para continuar con mi formación profesional.
Mi reconocimiento Y agradecimiento al Dr. Rodolfo Pazos, al M.C. Antonio Zarate, al M.C. Luis Garcia Y al M.C. Humberto Hernandez, quienes revisaron cuidadosamente la versión final del documento y aportaron valiosas sugerencias y COmentariOS durante todo su desarrollo.
Mi agradecimiento a todos los integrantes del centro de investigación que contribuyeron a mi preparación, en especial al Dr. Javier Ortiz, al M.C. Juan Gabriel González, al M.C. Hugo Estrada, al M.C. José Luis Alcántara, al M.C. Victor Jesus Sosa, al M.C. Mario Guillen, y al Ing. Jaime Rosas, quienes siempre me ofrecieron su ayuda y su amistad.
A la Secretaria de Educación Publica por el apoyo económico otorgado para realizar mis estudios de maestría en el cenidet.
A mis compañeros y amigos del cenidet: Gloria Patricia, Nadira, Martha Fabiola, Magdalena, Cecilia, Fabiola, Lucero, Carla Natalia, Rosa Lina, Edson Ignacio, Rogelio, Felix Agustin, José Aurelio, Isaac Alberto, Javier Raymundo, Alberto Mario, Aldo Luis, Ismael, José William, Gustavo Ivan, Joaquín Manuel, Y Victor Manuel por todos 10s gratos momentos de convivencia, por las aventuras Y viajes que emprendimos, y por la amistad que nos Unira siempre.
De forma muy Sincera a mis amigos: Socorro, Karime, Wendy, Lesvia Elena, Jekabel, Miguel, Ricardo, Lucio, y Jorge Luis, sin ellos hubiera sido muy dificii afrontar estos dos años.
'I
I
,/
I/
Tabla de Contenido
Dedicatoria.. ........................................................................................ Agradecimientos ................................. Tabla de Abreviaturas ............................................................ Lista de Figuras ................. Lista de Tablas ............................................................
....................... v ..................
.................................. Vl l l
., 1. Introduction ...................................................... ............................................ 1
1.1 Antecedentes ............. ............................................................... 2 1.2 Objetivos .................... ...................................... 5 1.3 Estado del Arte a 1.4 Organización del Documen
2. Descripción del Problem ................................................ 2.1 Diseño de la Distribución ................................................................ 2.2 Migración de Datos ...............................................................
............... .................................................................. ............................................................. I 1
3. Implementación de la Solución ............................................ 3.1 Enfoque de Solución ................ ....................................................
3.1 .I Arquitectura de HeMiDl .................................... ............ 3.1 .I .I Módulo de Manejo de Transacciones. 3.1 .I .2 Módulo de Transferencia de Dato 3.1 .I .3 Módulo de Recuperación ante Fallos ............
3.1.2 Protocolo de Compromiso Propuesto ..................... 3.1.2.1 Justificación ............ 3.1.2.2 Descripción .................................. 3.1.2.3 Consideraciones de Finalización del Protocolo .....................
3.1.2.3.1 Pseudocódigo del Coordinador .............. 3.1 2.3.2 Pseudocódigo del Participante ................................
.........................................
........... 40 3.2.1 Comunicación y Envio de Bytes a través de Sockets ......................... 42 3.2.2 Verificación de la Integridad de la Información y Detección de Errores del Circuito Virtual .................... ...................................... 43 3.2.3 Incorporación de Concurren Hilos de Ejecución ................... 3.2.4 Administración de las Co 3.2.5 Implementación del Protocolo de Compromiso..... 3.2.6 Implementación de la Bitácora. 3.2.7 Configuración .................. ........................................
.3.2 Implementación ................ ......................................
... Ill
4. Pruebas .... ......................... , . . , . . , , , , , , . , , , , , , , , . , , . , , , , . , , . , , , . , 4.1 Descripción del Ambiente de Pruebas. 4.2 Manejo de Transacciones .....................................
4.2.1 Fallas del Coordinador ............. 4.2.2 Fallas de los Participantes ...........................................
4.3 Transferencia de Datos ......................................... 4.3.1 Fallas en la Transferencia de Datos ............................. 4.3.2 Comparación con FTP ..............................
5. Conclusiones .................................................................................................... 76 5.1 Conclusiones .......................................................................................... 77 5.2 Recomendaciones para Trabajos Futuros ............................................. 78
................. Anexo A Lenguaje JAVA ............................ A.1 Características del Lenguaj A.2 Sockets en JAVA ................ A.3 Hilos de Ejecución en JA
................................................ 81
................. .84
Anexo B Pantallas ................................................................................................. 89
Glosario ................................................................................................................. 94 Referencias .......................................................................................................... .95
i V
Tabla de Abreviaturas
BDD CRC DDA
FAP
FTP
FURD GB HeMiDl Hrs Kb LAN LDD LMD
, Mb .
M hz RAM
seg SiMBaDD SQL
TCPAP
UML
URL
: Base de Datos Distribuida : Código de Redundancia Ciclica
: Ubicación Dinámica de Datos, por sus siglas en ingles " ~ ~ ~ ~ ~ i ~
: Problema de Ubicación de Archivos, por sus siglas en ingles "File
: Protocolo. de Transferencia de Archivos, por sus siglas en ingles "File
: Fragmentación, Ubicación y Reubicación de Datos : Giga Bytes : Herramienta de Migración de Datos a través de Internet : Horas : Kilo Bytes : Red de Area Local, por sus siglas en ingles "Local Area Network : Lenguaje de Definición de Datos : Lenguaje de Manipulación de Datos : Mega Bytes : Mega Hertz : Memoria de Acceso Aleatorio, por sus siglas en ingles "Random ' Access Memory" : Segundos : Sistema Manejador de Bases de Datos Distribuidas : Lenguaje de Consulta Estructurado, por sus Siglas en ingles
: protocolo de Control de Transmisiones I Protoco!o de Internet, Por
Data Allocation"
Allocation Problem"
Transfer Protocol"
"Stuctured Query Language"
SUS siglas en ingles "Transmission Control Protocol I Internet
Protocol" : Lenguaje de Modelado Unificado, por sus siglas en ingles "Unified
: Ubicador Uniforme de Recursos, por sus siglas en ingles "Uniform Modeling Language"
Resource Locator"
I/
I1
v
Figura
1
2
3
4
5
6
7 8
9
10
11
12
13
14
15 16 17
18
19
Lista de Figuras
Diagrama a bloques de la arquitectura de SiMBaDD,
Reubicación de la información entre nodos, como resultado
de la ejecución de Un programa de optimización basado en el
modelo matemático FURD.
Ejemplo de un diseño de la distribución,
Fallo en la transferencia de datos entre sitios. Despues de
pasado un tiempo "t" el servidor no es capaz de atender al
cliente y se envía un mensaje de error.
Ejemplo de migración de datos entre sitios.
Arquitectura de HeMiDI.
Módulo de manejo de transacciones.
Módulo de transferencia de datos.
Estructura de comunicación tradicional del protocolo de
compromiso en dos fases.
Estructura de comunicación del protocolo implementado en
esta herramienta. Acciones del protocolo de compromiso en dos fases.
Acciones del protocolo de compromiso propuesto.
Migración de datos entre sitios.
Jerarquía de clases que integran HeMiDl en notación UML. Establecimiento de un circuito virtual entre procesos.
Primera fase de migración. Segunda fase de migración.
Diagrama de estados de transición del proceso coordinador.
primer caso de prueba. El coordinador (ci) falla en Su
primera etapa, antes de enviar instrucciones a 10s
participantes (pi ,pz).
Página
3 7
16
19
20
24
25
27
31
33
34
35
36
41
42 45
45
55
57
V i
20
21
22
23
24
25
26
27
28
29
30 - a
30 - b
31 - a
Segundo cas0 de prueba. El coordinador (cl) sufre una falla
mientras esperaba la respuesta de los participantes (pi ,p2),
Tercer cas0 de prueba. El coordinador (ci) falla antes de
Poder enviar su voto global a los participantes (p1,p2),
Cuarto caso de prueba. El coordinador (cl) no logra enviar el
voto global a todos (OS participantes (pl,p2), falla durante este proceso.
Quinto caso de prueba. El coordinador (cl) falla al recibir las
confirmaciones de terminación de los participantes (PI ,p2).
Diagrama de estados de transición del proceso participante.
Sexto caso de prueba. El .participante (p2) falla mientras
recibe las instrucciones del coordinador (cl).
Séptimo caso de prueba. El participante (p2) falla mientras
realiza una transferencia de datos.
Octavo caso de prueba. El participante (p2) falla mientras
intentaba enviar su voto al coordinador (ci).
Noveno caso de prueba. EL participante (p2) falla antes de
recibir el voto global por parte del coordinador (ci).
Décimo caso de prueba. El participante (pz) falla antes de
enviar su confirmación de terminación.
La falla se presenta antes de recibir alguna Confirmación.
EI proceso reinicia la transferencia de datos al recuperarse.
La falla se presenta antes de que todos 10s subProcesoS
confirmen.
58
59
60
61
62
64
65
66
67
68
71
71
72
31 - b El proceso reenvía las particiones que quedaron pendientes
al darse la falla. Transferencia de datos entre sitios usando FTP.
72
74 32
vii
Lista de Tablas
Tabla Página
1 Resultados representativos de las pruebas al módulo de 74
transferencia de datos.
I
I/
/ /
I,
I,
I/
I/
viii I/
Capitulo I Introducción
1 Introducción
En el capítulo se da una introducción y se ubica al lector en el contexto en el que
fue desarrollada la herramienta de migración de datos (HeMiDI), además de
presentar las metas a alcanzar y el estado del arte asociado a la solución del
problema de transferencia de datos a través de Internet.
/I
1.1 Antecedentes
HeMiDl fue desarrollada en el Centro Nacional de Investigación y Desarrollo
Tecnológico dentro del área de Sistemas Distribuidos. En el área se han venido
desarrollando con éxito durante 10 años, trabajos que han dado forma y que
complementan a un manejador de bases de datos distribuidas experimental
denominado SiMBaDD. El manejador es el único de su tipo desarrollado en
México.
A lo largo de esos diez años, SiMBaDD ha evolucionado pasando de una
plataforma de ejecución bajo el sistema operativo Windows en computadoras
personales, al sistema operativo Sun Solaris en estaciones de trabajo de Sun
Microsystems, siempre buscando explorar y adaptarse a las nuevas tecnologías,
en especial a aquellas referentes a los sistemas distribuidos y bases de datos
distribuidas.
HeMiDl forma parte de un nuevo paso en esta evolución: la búsqueda de la automatización del diseño de la distribución de los datos en el sistema. Con está
nueva característica el manejador será capaz de efectuar un rediseño optimizado
de la ubicación de sus datos entre los sitios de la red, liberará de la tarea de
reubicación al administrador de la base de datos. Además, se plantea un cambio
de plataforma de trabajo, pasando de una red local a Internet.
2
Capítulo I Introducción
Servicios de
B.D.D.
En la Figura 1 se muestra un diagrama a bloques de los módulos de SiMBaDD y
la ubicación de HeMiDI.
Optimización
Distribución
1
- Detección y Registro de Consultas Relevantes Modelo
Solución del
Servicios para el Cooperativas Administrador de la B.D.
HeMiDl
Tarea del Precompilador
Figura 1 Diagrama a bloques de SiMBaDD
Actualmente SiMBaDD se compone de tres módulos principales: el módulo de
tareas cooperativas, el módulo del precompilador y el módulo de servicios para el
administrador de la base de datos. Dentro del módulo de tareas cooperativas se
realiza el procesamiento de consultas, y en el módulo del precompilador se
implementa el lenguaje de definición de datos (LDD) y lenguaje de manipulación
de datos (LMD). A continuación se explica brevemente la función de los módulos:
Capitulo 1 Introducción
a) El Procesamiento de consultas distribuidas, que se realiza en el módulo de
tareas cooperativas, trabaja haciendo una explotación del paralelismo en las consultas. Lo logra mediante la descomposición de las consultas en
subconsultas, donde cada una puede ejecutarse en forma paralela en
diferentes máquinas de la red, para luego integrar los resultados de las
subconsultas con el fin de generar el resultado final de la consulta recibida. El
modelo utilizado es clientelservidor, en él, las máquinas designadas como
servidores reciben solicitudes de servicio, éstas son procesadas en forma local
y unicamente los resultados finales son enviados a través de la red a las
máquinas designadas como clientes, quienes originaron la petición. Las
consultas, expresadas en SQL, son emitidas por una computadora de la red
hacia un servidor que es el encargado de remitir los resultados a la máquina
solicitante. El servidor que recibe la consulta no es necesariamente el que la
procesará ya que éste hará un .análisis para determinar en cual de 10s servidores que contienen información involucrada en la Consulta, es n-~ás
conveniente para realizar el.procesamiento [Pérez et al, 1997al.
b) El precompilador recibe como entrada programas en Turbo Pascal para
Windows con instrucciones del lenguaje SQL intercaladas. Los programas
realizan las rutinas de altas, bajas, cambios, consultas e informes de cada una
de las tablas de la base de datos. Después de pasar por las etapas tipicas de
un compilador (análisis léxico, sintáctico, semantico), finalmente genera código
en Turbo Pascal para Windows con llamadas a la biblioteca del manejador, el
conjunto de llamadas a la biblioteca equivale semánticamente a las
operaciones en SQL intercaladas en el código fuente [Pérez et al, 1997bl.
En el módulo de servicios para el administrador de base de datos, tenemos a su
vez dos módulos, el de servicios de mantenimiento de bases de datos distribuidas
y el módulo de optimización de la distribución; en el primero se realizan tareas
tales como alta y baja de nodos del sistema, mantenimiento del diccionario de
datos, definición de privilegios de acceso, mientras que en el segundo se optimiza
4
Capítulo I Introducción
la ubicación de los datos de la base de datos. En el módulo de optimización de la
distribución se consideran tres sub-módulos:
1) El módulo de detección y registro de consultas relevantes, tiene como objetivo
dotar al manejador de la base de datos de la capacidad de registrar datos
estadísticos sobre las consultas distribuidas que se realizan en cada uno de los
sitios del sistema.
2) El módulo de solución del modelo, se refiere a la solución de un modelo
matemático denominado FURD que determina una ubicación optimizada de los
fragmentos de una tabla entre los sitios del sistema, basándose en los cambios
en los patrones de explotación de los datos.
3) HeMiDI, SU función principal es administrar la ejecución de transacciones
distribuidas a través de Internet, dotando al manejador de bases de datos
distribuidas con la capacidad de reubicar sus datos con base en los resultados
obtenidos de un programa optimizador que implemente algún módelo
matemático desarrollado para dicho fin.
1.2 Objetivos de HeMiDl
Para resolver el problema de la optimización de la distribución e incorporar a
SiMBaDD esta caracteristica, se han propuesto tres herramientas:
1 .- Un detector de consultas relevantes, cuya función será llevar estadísticas de los cambios en los patrones de explotación de los datos por parte de los usuarios.
2.- Un módulo en el cual se implements un modelo matemático, que determinará con base en estadísticas sobre los patrones de explotación, una nueva ubicación
optimizada de los datos. .I
Capitulo I Introducción
3.- Una herramienta de migración de datos a través de Internet (HeMiDI), la cual
se desarrolla en el presente trabajo de tesis, y cuyos objetivos se describen a
continuación.
Actualmente se cuenta con el modelo matemático FURD que determina una
ubicación optimizada de los datos en una red de computadores geográficamente
dispersos, de tal forma que los 'costos de comunicación entre nodos son
minimizados [Pérez et al, 19981.
Esto resuelve el problema de la reubicación, pero aún es necesaria la intervención
del administrador de la base de datos para ejecutar un programa de optimización
de la ubicación basado en el modelo matemático.
Además se ha visto que los mecanismos de comunicación a través de Internet no
son lo suficientemente seguros y confiables. Tomando en cuenta los puntos antes
mencionados, el presente trabajo de tesis fijó como metas alcanzar los siguientes
dos objetivos:
El primer objetivo es automatizar la migración de los datos de un sistema
manejador de bases de datos distribuidas (SiMBaDD) a través de Internet.
Lo que se busca es pasar en la red de un estado congruente A cuyos datos es
probable que ya no se encuentren ubicados de una forma optimizada, a un nuevo
estado funcional A'. El nuevo estado A' es obtenido a través de la ejecución de un
programa de optimización, y al igual que el estado A, es un estado congruente
(Figura 2). Para que al pasar entre estados congruentes se llegue a un estado
válido, se debe garantizar que los datos fueron migrados exitosamente entre los
nodos participantes.
Capítulo I Introducción
HeMiDl contempla dos formas en las que considera un nuevo estado como válido.
La primera forma se apega de forma rigurosa a la característica de atomicidad de
una transacción, se considera que la herramienta debe lograr hacer todos los
cambios establecidos por el programa de optimización en caso contrario deja los
datos en la ubicación del estado anterior congruente.
Cada uno de los cambios establecidos por el programa de optimización son
considerados como una sola transacción y se convierten en los datos de entrada
para la herramienta de migración de datos.
En la segunda forma se considera que la migración esta formada por un número
finito de transacciones independientes, donde cada transacción corresponde a los
pasos establecidos por el programa de optirnización. La característica de
atomicidad se aplica a cada una de estas transacciones, sin embargo es posible
considerar que se ha llegado a un nuevo estado válido aún cuando no se lograran
hacer todos los cambios establecidos por el programa de optimización (esto se
explica en el capítulo 3).
Esiadisticos dcl
Figura 2 Reubicación de la Información entre nodos, como resultado de la ejecución de un programa de optimización basado en el módelo matemático FURD.
Capitulo 1 Introducción
El segundo objetivo es garantizar que la migración de los datos necesaria
para pasar entre estados funcionales, se lleve a cabo de manera segura y
confiable.
De la misma forma que una transacción en un ambiente de bases de datos se
acepta únicamente si se ha efectuado satisfactoriamente, la reubicación de los
datos indicada por el programa de optimización sólo se llevará a efecto si la
migración de los datos a través de Internet fue exitosa.
Cuando hablamos de transacciones decimos que se acepta la transacción si todos
los pasos que involucra fueron satisfactoriamente efectuados; es por ello que se
logró hacer una analogia con el objetivo que se persigue.
En este contexto de seguridad y confiabilidad, lo que se buscó es que la
información fuera migrada de un nodo de la red a otro sin pérdida de información,
manteniendo la integridad de los datos y haciendo las modificaciones pertinentes
en los nodos, de forma que se asegure que el sistema continuará trabajando de
forma congruente. El propósito de HeMiDl es reubicar de manera dinámica objetos
de la base de datos, de manera que su ubicación responda a los cambios en los
patrones de explotación. HeMiDl incorpora los conceptos de transacción
distribuida y transmisión eficiente de datos en Internet.
1.3 Estado del Arte
En la actualidad, se considera el diseño de la distribución de manera estática, ésto
es, se establece con el diseño inicial de la base de datos distribuida (BDD), el cual
permanece fijo hasta que el administrador del sistema intervenga para realizar
cambios [Wolffson, 19921. Este razonamiento es válido para aquellos sistemas que
casi no cambian sus patrones de acceso a la BDD. Sin embargo, la naturaleza de
Capítulo 1 Introducción
los sistemas distribuidos es dinámica, con cambios en los patrones y frecuencias
de acceso, nodos, costos, y recursos [Wolffson, 1992; Xiaolin, 1988; Lee, 19921.
Un sistema distribuido con un diseño de la distribución estático puede irse
degradando severamente en su desempeño por su incapacidad de respuesta a los
cambios en la explotación y recursos del sistema [Wolffson, 19921.
El problema de diseño de la distribución en BDDs es un problema de optimización
muy complejo, por el número de variables que intervienen y las interrelaciones que
existen entre éstas. Existen numerosas publicaciones que demuestran la
complejidad del problema, por ejemplo en [Apers,l988], [Xuemin,l995]. Los
primeros trabajos son los relacionados con la ubicación de archivos (FAP, por sus
siglas en inglés) en los sitios de una red de computadoras, teniendo como
finalidad que los programas de aplica,ción accedan a esos archivos optimizando
tiempos de respuesta y/o costos. !En [Dowdy,l982] se da una excelente
descripción de los. trabajos en FAP. Eniestas investigaciones se divide el problema
en modelos que minimizan costos de comunicaciones y/o que optimizan tiempos
de respuesta.
En [Muthuraj et al, 19931 se aborda formalmente el problema de la fragmentación
vertical, utilizando una función objetivo que permite cuantificar esquemas de
fragmentación. En [Navathe et al, 19841 se proponen diferentes algoritmos para
realizar la fragmentación vertical y la ubicación, los cuales están basados en
funciones objetivo empíricas. En [Ceri et al, 19831 se propone un modelo de
optimización para la ubicación no replicada de datos y se introduce la replicación de datos a partir de la solución óptima no replicada. En [Apers, 19881 se investiga
el problema de la fragmentación mixta y ubicación. El modelo propuesto permite
comparar costos de ubicación.
En [Cornell, 19891 se trata de manera simultánea la ubicación de relaciones y la
ubicación del procesamiento de las operaciones de "reunión", y se utiliza
9
Capitulo I Introducción
Programación lineal como método de solución. [March, 19951 extiende el trabajo
de [Cornell, 19891 Para incluir replicación, control de concurrencia, y ubicación de datos y operaciones. [Xuemin, 19951 trata el problema de ubicación de fragmentos
por medio de programación lineal, teniendo como objetivo encontrar las rutas de
propagación de las actualizaciones'de manera que se minimicen los costos de
comunicación globales. En [Xiaoiii, 19881 se proponen estrategias para la
ubicación y replicación de datos en una topología que cambia dinámicamente;
esto es, con nodos que se descqnectan de la red y que pueden volver a
conectarse en otro punto distante.
En [Kulkarni, 19911 se presenta una metodología para la fragmentación horizontal
y ubicación. Se utiliza conocimiento semántico para formar diferentes alternativas
de diseño, las cuales son evaluadas en cuanto a su tiempo de respuesta y costo
total. En [Wolffson, 19921 se propone el algoritmo de ubicación dinámica de datos
DDA, el cual cambia dinámicamente el esquema de replicación de un objeto para
ajustarlo a los cambios en los patrones de lectura-escritura. El algoritmo toma
como base una copia primaria.
En [Perez et al, 1997al se propone un.modelo matemático (FURD) que considera a los atributos de las relaciones como unidades de datos con accesc
independiente. Se investiga la fragmentación vertical y la ubicación de datos de
forma simultánea en un ambiente distribuido en donde pueden cambiar las
transacciones y la cardinalidad de las tablas de manera dinámica. Esta
consideración da la libertad de ubicarlos de manera óptima en los diferentes nodos
de la red para satisfacer un conjunto de transacciones. Los atributos que son ubicados en un mismo nodo, forman de manera natural un fragmento vertical de la
relación. Se muestra mediante ejemplos cómo el modelo FURD mejora la
ubicación de datos propuesta por [Navthe et al, 19841 y es muy similar con el diseño de la fragmentación propuesta por [Muthuraj et al, 19931.
10
Capitulo I Introducción
En [Stonebraker et al, 19941 Se presenta el diseño de un sistema de bases de datos distribuidas, llamado Mariposa. Este sistema combina las mejores
caracteristicas de los sistemas tradicionales de bases de datos distribuidas, bases
de datos orientadas a objetos y sistemas de archivos distribuidos. Una de las
caracteristicas más importantes de Mariposa es el soporte a movimiento de datos;
en los sistemas de bases de datos distribuidas previos [Williams, 1981; Bernstein,
1981; Litwin, 1982; Stonebraker, 19861, se suponía que cada objeto tenía una
ubicación fija. En [Malone, 19881 se describe la implementación de un proceso de
migración de datos entre un conjunto de estaciones de trabajo conectadas a
través de una LAN.
Un modelo similar al propuesto en [Stonebraker et al, 19941 se presenta en
[Ferguson, 19931 donde los fragmentos de la BDD pueden ser movidos y
replicados entre los nodos de una red de computadoras; el acceso a los
fragmentos es efectuado por cada nodo asignando relaciones de precio-calidad a
cada fragmento, !a distancia de transferencia entre sitios y la demanda de los
mismos determina esta relación precio-calidad.
Cambiar la ubicación de un objeto es una operación compleja, que significa por
ejemplo: destruir y regenerar todos los i,ndices para dicho objeto. En Mariposa, se
espera que los objetos de datos, los cuales son llamados fragmentos, se muevan
libremente entre los sitios en una red de computadoras para lograr optimizar la
ubicación de un objeto con respecto a los requerimientos actuales de acceso. En
Mariposa es posible para un sitio el crear o borrar un objeto, o para dos sitios,
acordar mover un objeto de uno a otro haciendo sólo notificaciones entre ellos [Stonebraker et al, 19941.
1.4 Organización del Documento
El trabajo de tesis consta de cinco capitulos y dos apéndices, los cuales se describen a continuación:
I
I(
I i i I
'I
1 i
i 4
I I I
I ! I
1 I
1
Introducción Capitulo I I
En el capítulo 2, se hace una tlescripción del problema del diseño de la
distribución y del problema de la migración de datos, haciendo énfasis en los
problemas a resolver por HeMiDI. 1
El capítulo 3, trata sobre la implementación de la solución, para ello se presenta
la arquitectura de HeMiDl y la descripción de sus módulos, además del protocolo
de compromiso propuesto.
En el capítulo 4, se describen las pruebas realizadas y se presentan los
resultados obtenidos de las mismas? Básicamente hay dos tipos de pruebas,
aquellas relacionadas con el manejo de las transacciones y las relacionadas con la
transferencia de datos. I
En el capítulo 5, se presentan las conclusiones a las que se llegó al finalizar el
trabajo y se hacen recomendaciones para trabajos futuros.
El apéndice A, trata sobre las características del lenguaje de programación JAVA,
el cual fue usado en el desarrollo de la herramienta, se habla del manejo de
sockets y de los hilos de ejecución (subprocesos).
El apéndice 6, incluye las pantallas resultantes de la ejecución de los procesos
coordinador y participante. En ellas se presentan los momentos de fallo y la
recuperación ante ellos.
I
I
12
I
I A I
j!
I I
1
I I i I 1
Capítulo 2 Descripción del Problema
I
2 Descripción del, Problema
En el capítulo se habla del diseiío 'de la distribución de forma introductoria y del
problema de la migración de datos,! haciendo énfasis en los problemas a resolver
por la herramienta. I
Básicamente la problemática es la ausencia de funciones o mecanismos en
internet que incoorporen el concepto de transacción distribuida. Una
aplicación de base de datos necesariamente requiere efectuar transacciones para
explotar el contenido de la base de datos.
En el caso de bases. de datos distrilbuidas, las aplicaciones requerirán efectuar
transacciones distribuidas para la explotación de los datos, o como en el caso de
HeMiDI, para migrar datos entre sitios garantizando una transferencia segura y
confiable. Actualmente en Internet no contamos con herramientas o funciones que
nos permitan efectuar transacciones distribuidas, lo cual es una limitante grave si
queremos que las aplicaciones se comuniquen a través de Internet. . I .
2.1 Diseño de la Distribución
En las bases de datos distribuidas, las tablas (también llamadas relaciones)
pueden estar almacenadas en cualquier nodo de la red, y desde cualquier nodo,
una aplicación puede acceder a las \relaciones que residen en forma local o
remota. El acceso de una aplicación a las relaciones locales es rápido y barato, mientras que el remoto puede ser lento y caro, con una diferencia de varios
I
órdenes de magnitud. !
Si ubicamos al azar las relaciones en los nodos de la red, es muy posible que la
explotación de la base de datos sea lenta y cara, porque algunas aplicaciones
necesiten acceder frecuentemente a relaciones que residen en otros nodos.
I
14
-- Lapiruio 2
Descripción del Problema I
Un razonamiento válido seria que las relaciones deben ser ubicadas en el nodo
donde estén las aplicaciones que más frecuentemente las acceden [Pérez, 19991.
El diseño de la distribución tiene como objetivo el determinar las unidades de
datos adecuadas para su distribuc/pn, así como su ubicación Óptima en los
diferentes sitios de la red de manera que el procesamiento de las aplicaciones sea
optimizado.
I
! El problema de ubicación de datos ;en un sistema de BDDs, se define de la
siguiente manera: se supone que existe un conjunto de relaciones R = {ri, r z , r3, ...
,rn} y una red de comunicaciones para computadoras que consiste de sitios S =
{si, SZ, s3, ... ,s,}, en donde se ejecutan una serie de aplicaciones Q = {qi, qz, q3,
... ,q4}. El problema'de la ubicación consiste en encontrar la ubicación óptima de R
en S de manera que el procesamiento de las consultas de Q sea el más eficiente.
La ubicación de datos es un problema complejo y su solución no es trivial debido
al número de parámetros que intervienen en el modelado y a la complejidad de la
solución. La Figura 3 tiene como finalidad mostrar un ejemplo sencillo de un
diseno de la distribución. En dicha figura, se representa a' la red de
comunicaciones para computadoras como una nube, que permite a un conjunto de
nodos estar interconectados. En este caso los nodos se identifican con la letra s y
un subíndice, las aplicaciones se identifican con la letra q y un subíndice,
finalmente las relaciones, se identifican con la letra r y un subíndice, en este caso
la relación r, está replicada en tres nodos.
1
I
I
i 15 1
i
2.2 Migración de Datos
Capitulo 2 I I Descripción del Problema I
A
En la actualidad la responsabilidad de ubicar la información y de mantener un
monitoreo del sistema, recae en el administrador de la base de datos distribuida.
Los sistemas distribuidos son dinám\cos por naturaleza, con cambios en la
topología de red, explotación de los datos e incorporación de nuevos datos.
Incorporar al diserio el aspecto dinámico incrementa su complejidad, sin embargo,
el no hacerlo puede causar que sidtemas con cambios significativos en la
explotación de los datos puedan degridar de manera importante su desempeño
(Pérez et al, 1997~1.
I . .
Los manejadores actuales de bases I de datos distribuidas no cuentan con
I . .
mecanismos automáticos que optimicen la ubicación de la información que almacenan en base a su explotación, dsto hace el trabajo del administrador muy
complejo y excede su capacidad para oytimizar el sistema.
-- . _ x Capitulo 2 Descripción del Problema
I I II
La Solución propuesta consiste en el desarrollo de herramientas que proporcionen
las funciones necesarias para: I 1 i 1
Verificar continuamente el estadol I del sistema para determinar cuándo se ha
degradado en su desempeño. I , Optimizar la ubicación de los dato; dentro del sistema, tomando en cuenta los
patrones de explotación.
Migrar los datos entre sitios para pasar entre estados congruentes de la base de datos i
!
Se busca auxiliar al administrador de la BDD en la ejecución de las tareas
necesarias para realizar un rediseño de la distribución.
Para poder reubicar los datos entre los sitios de la BDD, es necesario que los
sitios se comuniquen entre sí a través de una red de comunicaciones. Actualmente
se puede intercambiar información a través de la red haciendo uso de la familia de
protocolos que usa Internet. La familia de protocolos se conoce como TCPIIP.
Los protocolos de TCPllP tienen incorporadas funciones que facilitan la
transferencia de datos a través de la red, sin embargo, no existen herramientas
que tengan las funciones de manejo de transacciones a través de la red. En el
caso de un sistema manejador de bases de datos distribuidas como SiMBaDD, la
falta de herramientas que soporten el manejo de transacciones a traves de la red,
impide garantizar la transferencia de la información, actividad básica en una base
de datos, lo cual es un problema grave.
Un ejemplo de una situación en la cual no se puede garantizar una transferencia
segura y confiable se da comúnmente cuando un usuario intenta establecer
comunicación con algún nodo del cual espera obtener algun servicio que involucra
la transferencia de información.
!
I I 1 !
I
1
i i
!
i !I i
I !
I !
ii I I I
I !
Descripción del Problema Capítulo 2
i
I
una excepción de “tiempo agotado”.
durante la sesión de trabajo, y aunque
El mensaje puede presentarse también
las causas que pueden originar el mensaje
4 Tiempo agotado
Figura 4, Fallo en la transferencia de datos entre sitios. Después de un tiempo “t“ el
servidor no es capaz de atender al cliente y se envía un mensaje de error.
Una de las herramientas más comúnes en Internet es el FTP (File Transfer
Protocol), la herramienta efectúa transmisiones de datos entre dos máquinas,
haciendo la comunicación entre ellas ‘punto a punto. FTP, al igual que otras
herramientas como el correo electrónico (e-mail) hace uso del protocolo TCPIIP. FTP no tiene la función para manejo de \ransacciones, lo cual lo hace inadecuado
para emplearse con éxito en aplicadones de bases de datos, dada su
característica de hacer una comunicación punto a punto, no permitiendo así
difundir los datos a diferentes destinos. Además no ofrece ninguna función para recuperarse ante fallos, siendo imposible, en ocasiones, establecer la
comunicación entre las máquinas que desean intercambiar datos.
1
18
Descripción del Problema Capitulo 2
Partiendo del supuesto de que tenemos I
denotados por O = {Oi,O2,03,04} donde I
un conjunto finito de sitios, denotado por
cada objeto tiene asociado un tamaño
I . N = {ni,n&, un conjunto finito de objetos de una base de datos distribuida
denotado por oit tal que f denota el tabaiio expresado en bytes.
Se establece que cada objeto se enclentra ubicado en algún sitio integrante de la
base de datos distribuida. Para indikar la ubicación de cada objeto usamos la
siguiente nomenclatura: (Q,nj) en doide o, E O y nj E N, e indica que el objeto o,
se encuentra ubicado en el sitio ni. Asi mísmo [oi,nj] indica que el objeto oi debe
ser reubicado en el sitio nj, En la Figura 5 se ilustra a manera de ejemplo, un
estado congruente de una base de datos distribuida y la migración de datos
necesaria para reflejar un rediseño de su distribución.
I . I
Figura 5 Ejemplo de mi&ación de datos entre sitios
- Descripción del Problema
-.Y~,i,UlU L
Como puede observarse los objetos o1 I y 03 se migrarán al sitio nl, mientras que el
I I
I objeto 0 4 se migrará al sitio n3. En la Figura 5 , tambien se aprecia que la
migración del objeto 03 es la que tornará un mayor tiempo y costo de transferencia
dado SU tamaño de 20 Mb. Un error durante la migración cuando ya fue transferido
de forma exitosa el 50% del objeto 0 3 lo cual equivale a 10 Mb), implicaría con las
herramientas actuales de transferencia de datos entre sitios, tener que efectuar la
transferencia nuevamente desde el 0% del objeto, es decir, el 50% enviado previo
al fallo se pierde totalmente al no existir mecanismos que permitan la recuperación
ante fallos, y mucho menos el control de todas las transferencias involucradas en
el ejemplo.
I
I
I El problema de la migración de datos a través de Internet hace evidente la
necesidad de incorporar mecanismos o herramientas que soporten el manejo de
transacciones.
I
20
- 1
I Implementación de la Solución Capítulo 3
I I 3 Implementación !e la Solución
En el capitulo se presentan la implementación de la solución, la arquitectura de
HeMiDl y la descripción de sus módulos, además del protocolo de compromiso
propuesto. I i
3.1 Enfoque de Solución
Para lograr resolver el problema de la transferencia de datos entre sitios a través
de Internet, se diseñó e implementó iHeMiDI, la cual incorpora el concepto de
transacción distribuida. HeMiDl hace énfasis en la caracteristica de atomicidad de
las transacciones y es capaz de recuperarse ante fallos, aumentando así la
confianza y la seguridad de que los datos sean migrados correctamente.
I . I !
Se diseñó HeMiDl de forma tal, que pueda funcionar como un módulo de un
manejador de- bases de datos distribuidas o como una herramienta independiente
para aplicaciones que requieran efectuar transferencias de archivos a manera de
transacciones a través de Internet. Ademas, HeMiDl automáticamente divide una transacción distribuida global en varias subtransacciones, permitiendo que cada
sitio administre la transferencia de los datos que tiene que migrar a algún otro sitio.
También se explota el paralelismo durante la ejecución, debido a que cada sitio
envía o recibe datos, al mismo tiempo &e otros sitios hacen lo mismo. Esto se
logra al usar dos canales de comunicación independientes, uno de ellos es usado para el intercambio de mensajes ende los procesos y otro para el envio y
recepción de archivos. También se iogrh igualar y en algunos casos disminuir el
tiempo de transferencia que se presenta al usar las aplicaciones comerciales que implementan el protocolo de transferencia de archivos FTP (File Transfer
Protocol) de Internet.
I
I
!
Capitulo 3 Implementación de la Solución
I
3.1.1 Arquitectura de HeMiDl
En la sección 3.1 se presenta la arqktectura de HeMiDI, y se describen cada uno
de SUS módulos, en la sección 4.2 se describen la implementación de la herramienta en el lenguaje de prograyación I . JAVA de Sun Microsystems.
arquitectura.
. Optiniizacióri 4 .
. . . . . . .^ _.l. .. .. , . . < Nueva ubicacidii optiniizada Mairiz dc
iiurvv estado
estado
Registros de Recii(xraciúii
I
Figura 6 Arquiibctura de HeMiDl
Implementación de la Solución Capítulo 3
I 3.1.1.1 Módulo de Manejo de Transacciones I
El módulo de Manejo de Transacciones recibe como entradas las direcciones de
sitio, así como SUS descripciones. L u salida está representada por un valor
booleano, que en caso de ser cierto indicará que la migración ha sido llevada a
los sitios a los que debe migrarse la i 1 formación, los datos que se migrarán a cada
cabo éxitosamente, y en caso de ser indicara que no ha podido realizarse la
migración. Su principal función es implementación de un protocolo de
compromiso similar al protocolo de en dos fases (two phase commit)
a través de Internet.
El módulo es el encargado de envial! los destinos y la información a migrar al
módulo de transferencia de datos y Lsperar su respuesta para llamar o no al
módulo de recuperación de errores. EA el módulo se proporcionaran las primitivas
necesarias para el manejo de transdcciones, apoyándose en los modulos de
transferencia de datos y de recuperacidn de errores (Figura 7).
Actual Nueva I 0100 0010
Matrices de Estallo I
Coordinador /
Participante
Participante
Mensajes I ,
Figura 7 Módulo de manejo de transacciones
25 !
! Irnplernentación de la Solución I
Capítulo 3
su destino.
2. Hacer llamados al módulo de
transferencia a realizarse.
El módulo ofrece un nivel de abstracción mas alto que la herramienta FTP y
transacciones. Algunas de las accionds más importantes que efectúa son:
proporciona funciones no encontradas I en el protocolo TCPllP para el manejo de
transferencia de datos, indicando cada vez, una
3.1.1.2 Módulo de Transferencia de datos
Es el encargado.de la migración de !os datos. El módulo de Transferencia de
Datos recibe como entradas la dirección de la máquina que será destinataria de la
información, la descripción de los datos que serán enviados y los datos mismos.
Con las entradas el módulo está listo para enviar los datos. Su salida se
representa por un valor booleano, que en caso de ser cierto significará que la
presentó algún fallo o condición de errorlque impide la transferencia de los datos.
I I I I
transferencia de datos ha sido exitosa, I en caso de ser falso significará que se
Básicamente la función del módulo ks transferir datos de un sitio a otro,
encargándose de todos los aspectos relacionados con la comunicacion entre
sitios, reportando al módulo Manejado) de Transacciones si tuvo éxito o no la
transferencia (Figura 8).
I .
Capítulo 3 - Creación y control
de hilos de ejecución
Figura 8 Módulo d
Algunas de las acciones más importan
I . Establecer un circuito virtual usanu
la transferencia de datos.
2. Hacer reintentos para establecer el
haya problemas con los canales de
3. Reportar las fallas que se presente
indicando si hubo éxito o no.
Implementación de la Solución
Servidor (Receptor)
~ 11- de hilos de ejecución
I
‘ransferencia de Datos
i que realiza son las siguientes:
sockets, entre los sitios que se efectuará
rcuito virtual entre sitios, en caso de que
rnunicación.
al módulo manejador de transacciones,
27
i \ I‘ E I I I I I
II
I I I
I
. .
Capítulo 3
3.1.1.3 Módulo de Recuperación ante Fallos
Implementación de la Solución
I El módulo recibe como entradas los registros de la bitácora, y su salida es un I mensaje al módulo manejador de transacciones en el cual se indica que ha I terminado con éxito la recuperación ante el error. E s llamado por el manejador de
I I
transacciones como resultado de una I falla en alguna de las operaciones que
conforma una transacción o en los casos en que no ha podido llevarse a cabo la
comunicación entre máquinas, al presentarse una falla perdurable.
I Su función es deshacer las operaciones que lograron efectuarse con el objetivo de
mantener la congruencia de la base de datos distribuida. Para ésto, obtiene
información de la bitácora y realiza las acciones necesarias para deshacer los
cambios efectuados. Básicamente en el módulo se determinan las operaciones I 1
necesarias para deshacer una
que no fue comprometida.
que no finalizó correctamente, es decir,
Algunas de las acciones más importante4 que este módulo realiza son:
1. AI inicio de cada sesión verificar ki en la bitácora existen transacciones
incompletas.
2. Deshacer cada uno de los cambios Lfectuados por una transacción que no
puede ser comprometida para así mantener a la base de datos en un estado I
congruente. I I
3. Rehacer pasos intermedios en la transacción, en aquellos casos en que Sc:
presenten fallos no perdurables en los Sitios.
28 I I
Capítulo 3 Implernentación de la Solución
3.1.2 Protocolo de Compromiso Pdopuecto
Con el propósito de garantizar la athmicidad de las transacciones y permitir una
compromiso en dos fases (two phase commit). El protocolo forma parte del módulo
de manejo de transacciones descrito en la sección 3.1.1.1 , a continuación se
presenta la justificación de implementar una variante del protocolo de compromiso
en dos fases, la descripción detallada de las acciones que efectúa el protocolo
además del paradigma de comunicaciones seleccionado. Asi mismo se describe
la terminación de una transacción admlnistrada por HeMiDI.
politica más flexible de compromiso, I se implementó una variante del protocolo de
I I I I .
3.1.2.1 Justificación I
Una base de datos distribuida una mayor disponibilidad de la
información y tolerancia ante fallos. al incluir mecanismos tales como
transacciones y operaciones atómicas.
Una transacción es una secuencia de dperaciones sobre uno o más objetos que
transforma un estado consistente (actual) de la base de datos a un nuevo estado
consistente. En otras palabras una transacción es una unidad de consistencia. I .
Una de las características más importantes de una transacción es la atomicidad, la
en su totalidad. Así puede lograrse que dna secuencia de operaciones, la cual en
esencia no es atómica, aparente serlo de L de un punto de vista externo.
cual se refiere a que: una transacción se 1 leva a cabo en su totalidad, o se cancela
I 29 I
Implementación de la Solución Gapítulo 3
I Para que un SMBDD pueda efectuar I transacciones, es necesario incluir un i componente encargado de dicha atomicidad
que se conoce como "manejador de i transacciones", en dicho componente, debe
implementarse un protocolo de compromiso I operaciones atómicas fundamentales: I (rollback). 1
operaciones atómicas y por consiguiente
que a su vez haga uso de dos
comprometer (commit) y deshacer
I, . . La operación comprometer señala el termino exitoso de la transacción: le indica al manejador de transacciones que se ha I finalizado con éxito una unidad lógica de
trabajo, y que se pueden comprometer I o hacer permanentes todas las modificaciones efectuadas por esa unidad de trabajo.
I
I La Operación deshacer, en cambio, señala el término no exitoso de la transacción:
indica al manejador de transacciones que algo salió mal, que todas las
modificaciones efectuadas hasta el momento por la unidad lógica de trabajo deben
retroceder o anularse.
I I
En la literatura al describirse el protocolo de compromiso en dos fases, se habla
de unidades lógicas de trabajo que deberán ser efectuadas por participantes del
sistema de forma local, es decir, cada b articipante en su propio sitio de forma
independiente a los demás integrantes ddl sistema distribuido. I
Los participantes reportarán a
que llegaron al efectuar las
reportarán al coordinador será a
al coordinador que el participante ha voto por abortar por el contrario, indicará
como coordinador el resultado al
de trabajo. La forma en que
Un voto por comprometer indica terminar su ejecución con éxito, un
coordinador que el participante no ha
terminado con éxito.
I Capítulo 3 I! Implementación de la Solución
i /I
Con los votos, !el sitio designado como coordinador decidirá enviar un voto global
por comprometer o por abortar a todos los participantes. En el protocolo original,
basta con que el coordinador reciba un voto por abortar de algún participante, para
que decida enbiar un voto global por abortar a todos los demás, dando por
anulada la transacción.
I1
II
I
I
En nuestro caso las unidades lógicas de trabajo que los participantes deben
efectuar son subtransacciones que invoiucran a varios sitios a la vez, por IO cua:
cada participante debe conocer el estado en que se encuentran aquellos
participantes con los que interactúa para lograr su propia subtransacción. Por ello
la estructura de :comunicación del protocolo de compromiso en dos fases original
(Figura 9) es inadecuada.
‘I
/I
I Coordiiiador Parlicipanies Coordinador i’ariicipaiiics Coordinador
C 7
I
I I I I I
C O i l l ~ i ~ O i i i C ~ C ~ / I C O ~ l ~ r O l l l i S O /
I aborto I
I aboriar prcparar
l b I I I tic111p0
Fase I I Fast 2
Figura 9 Estructura de comunicación tradicional del protocolo de compromiso en
dos fases. 13
I1 Capítulo 3 Implementación de la Solución
'I
Los participantes al efectuar sus subtransacciones, se comunican entre sí,
rompiendo de esta forma con la estructura de comunicación tradicional del
protocolo de compromiso en dos fases. Es por ello que la implementación usada
por la herramienta de migración de datos para su protocolo de compromiso, es
una variante del protocolo de compromiso en dos fases, en la cual los
participantes se comunican entre si y conocen el voto de los participantes con los
cuales han interahado.
Ii
I1
3.1.2.2 Descripción
Como se mencionó en la sección anterior, la implementación del protocolo de
compromiso usado por HeMiDI, está basada en el protocolo de compromiso en
dos fases. Hay dds diferencias esenciales en la implementación:
I 1
La estructura de comunicación utilizada
Las acciones efectuadas por el protocolo I
En la Figura 9 apreciamos la estructura de comunicación tradicional del protocolo
de compromiso en dos fases. Como se mencionó, la estructura de comunicación
no es adecuada dada la naturaleza de las transacciones que efectúa HeMiDI.
Dichas transacciorles consisten en la transferencia de datos entre sitios a través
de Internet.
!!
Para que un participante Pi lleve a efecto su transacción de forma exitosa debe establecer un circuito virtual con al menos otro participante Pi al cual enviarán
datos. El participante Pi deberá indicar si recibió correctamente los datos enviados
por el participante Pi. Y de esta forma se podrá emitir un voto de compromiso o de
aborto para la trans.acción por parte del participante Pi.
I/
1
li
32
1 Capitulo 3 Implementación de la Solución
I4
1;
Apegándose a la necesidad de comunicación entre participantes se seleccionó e
implementó una' nueva estructura de comunicación (Figura I O ) que se ajusta al
comportamiento' deseado para HeMiDI. En la nueva estructura existe un cambio
en la primera fase. En el protocolo de compromiso en dos fases, el coordinador
envia el mensaje de preparar a todos los participantes y éstos al terminar sus
unidades lógicas de trabajo reportan su voto al coordinador.
En la nueva estructura de comunicación, el coordinador envia el mensaje de
preparar, y losl participantes comienzan a comunicarse entre si para tratar de
terminar sus unidades lógicas de trabajo. Una vez que han acordado que las
transferencias de datos entre ellos finalizaron, se reporta al coordinador el voto. A
partir de ese pijnto se continúa con el protocolo de compromiso en dos fases de la
forma tradicional
II
I1
I
Coordinador 8 1 I'zirticipantcs Coordinador I'articipaiilcs Coiirdiiia<lor
I coiiiproiiiclcr /
I compromclcr I I abortarGloba1 coiiiproiiiiso I
I aborto abortar preparar 11 I I + !
111
I I I
Fasc I I 1:asc 2 tic111po
Figura 10 Estructura de comunicación del protocolo implementado en HeMiDl
I!
1
11 1
33
Capitulo 3 il Implementación de la Solución
El cambio en la estructura de comunicación también influyó en las acciones
efectuadas por !el protocolo. En la Figura 11 se muestra el diagrama de acciones
del protocolo de compromiso en dos fases y, en la Figura 12 el diagrama de
acciones del protocolo de compromiso propuesto.
Figura 11 Acciones del protocolo de compromiso en dos fases
I
34 il
Figura 12. Acciones del protocolo de compromiso propuesto
3.1.2.3 Consideraciones de Finalización del Protocolo
El cambio en la estructura de comunicación, hizo más compleja la implementación
del protocolo, sobre todo al implementar la función deshacer (rollback). Dado que
las transferencias de datos pueden ser muy grandes, se presentó el problema de
qué hacer cuando un participante falla y todos los demás logran terminar su
transferencia”de datos de forma exitosa. De acuerdo a lo establecido por la
35 I!
Capitulo 3 Implementación de la Solución
caracteristica de atomicidad de las transacciones, deben hacerse todas las
operaciones que incluye la transacción o no se llegará a un punto de terminación
válido. Supongamos por ejemplo que el sitio E es coordinador de una transacción
en la cual el sitio A debe enviar una cantidad de datos equivalente a 50 Mb al sitio
B y que el sitio C debe enviar una cantidad de datos equivalente a 300 Kb al sitio D (Figura 13).
li
i
II
,I
Sitio D
Transfcrcticia de datos
Paso dc Mciisdjcs eiiirc procesos -____
Figura 13 Migración de Datos entre Sitios I!
El sitio A termina con éxito su transferencia de datos hacia el sitio B y envía un
voto de comprometer al coordinador en el sitio E. Mientras tanto el sitio C no logra
transferir sus datos al sitio D, y después de una serie de reintentos, vota por
abortar. I(
36 II
Capitulo 3 'I Implementación de la Solución
El coordinador de acuerdo al protocolo de compromiso en dos fases, debe emitir
un voto global por abortar a todos los participantes. Sin embargo en el ejemplo es
claro que no es la mejor decisión dada la cantidad de datos que si lograron ser migrados con %éxito del sitio A al B. Resultaría más costoso deshacer la
transferencia de 50 Mb a causa de no haber podido migrar con éxito 300 Kb. Lo
ideal seria poder comprometer las transferencias que se efectuaron con éxito y
anular o dejar pendientes las que no fueron exitosas.
II
li Si no se efectúa toda la transacción, debe deshacerse para respetar la
característica de atomicidad. Es correcto si se considera que la transferencia de
datos entre los sitios A, B, C y D es una sola transacción, pero puede verse de
otra forma, podemos considerar que existe una transacción global o principal que
contiene transacciones anidadas o subtransacciones. La transferencia de datos
entre los sitioclA y B constituye una subtransacción y a su vez la transferencia de
datos entre los sitios C y D constituye otra subtransacción.
1
' e
AI terminar con éxito la transferencia de datos entre los sitios A y B se da por
terminada esa,subtransacción, por otro lado al no lograr terminar la subtransacción
entre C y D, el coordinador en el sitio E, puede comprometer la subtransacción
1
entre A y B sin violar la característica de atomicidad, pues ahora el coordinador
está administrando subtransacciones y no una transacción global, dejando pendiente la terminación de la transacción entre C y D o abortándola.
~
El protocolo se diseñó para funcionar en ambos casos, en el que se consideran
todas las transferencias de datos como una sola transacción, y en el caso en que se considera de forma independiente a cada transferencia como una
subtransacción. Para ello se determinó el comportamiento de las dos entidades
fundamentales en el protocolo: el coordinador y los participantes. En las
siguientes dos secciones se presenta el pseudocódigo de ambas. En la Figura 13
se muestra el biagrama de acciones del protocolo de compromiso propuesto.
I1
!I
I!
11 37
Capitulo 3 Implementación de la Solución
3.1.2.3.1 Pseudocódigo del coordinador
declara variables
msg: Mensaje !~
ev: Evento
LP: Lista de participantes j
Inicio
enviar mensaje de “preparar“ a todos los participantes en LP
espera (ev) ~
caso de (ev)
llegada de mensaje:
inicio ll guardar mensaje en msg
caso de,’(msg)
voto abortar:
inicio 1
si se considera una transacción global entonces
esdribir registro de abortar en bitácora
env,iar mensaje de “aborto global” a todos los participantes en LP
fin si
fin
voto comprometer: I
inicio
si se considera una transacción global entonces
actualizar lista de participantes que han contestado
si todos los participantes han contestado entonces
escribe registro de comprometer en bitácora II
Capitulo 3 Implementación de la Solución
enviar mensaje de “compromiso global” a los participantes en LP fin si
fin si
fin
il confirmación:
inicio
actdklizar lista de participantes que han confirmado
si todos los participantes en LP han confirmado entonces
escribe registro de “fin,de transaccion” en bitácora
caso contrario
enviar decisión global a los participantes que no han confirmado
fin si
fin caso de
fin
fin
fin caso de II fin
! 3.1.2.3.2 Pseudocódigo del participante
11 declara variables
msg: Mensaje
ev: Evento I/
inicio
espera (ev)
caso de (ev) I/
llegada de mensaje:
inicio
guardar mensaje en msg
caso de (msg) 1
39 I1
Capítulo 3 Implementación de la Solución
preparar:
inicio
si iistb para comprometer entonces
escribir registro de "listo" en la bitácora
enviar mensaje de "voto por comprometer'' al coordinador
caso contrario
escribir registro de "abortar" en la bitácora
e d r mensaje de "voto por abortar" al coordinador
fin si
fin
inicio aborto global:
escribir registro de "aborto" en la bitácora
fin
compromiso global:
inicio
escribir registro de "comprometer" en la bitácora I1
fin
fin caso he
fin
fin caso de
fin
3.2 Implementación 'I
HeMiDl fue desarrollada en el lenguaje de programación JAVA. El lenguaje
permitió un mayor control del funcionamiento de la herramienta y la incorporación
de caracterist,icas no planeadas en un inicio. Algunas de las características de
HeMiDl son:
40 II
Implementación de la Solución Capitulo 3
J Transparencia en el manejo de la concurrencia.
I Transparencia en la verificación de ¡ntegridad.de los datos que viajan a través
de los circuitos virtuales.
Comunicación bidireccional (full duplex) entre los procesos.
Facilidad para el manejo de hilos de ejecución (sub-procesos), con lo cual se
logra el paralelismo en ciertas actividades.
La herramientadesde el punto de vista de la programación consta de clases en las
cuales se irnplementan los diferentes módulos. La Figura 14 muestra las diferentes
clases y su jerarquía.
/ I
I
. . . h a
NISIONES . lnlqler
cliente RX I
,I
Figura No. 14 Jerarquía de clases que integran HeMiDl en notación UML.
41 I¡
-~ e
Capitulo 3 Implementación de la Solución
A continuación: se presenta una: descripción detallada de las etapas que se
presentarón enl;el desarrollo de HeMiDl :.
Etapa de comunicación y envío de bytes a través de sockets.
Etapa de verificación de la integridad de la información y detección de errores
del circuito virtual. Etapa de incorporación de concurrencia y multiprocesamiento a través de hilos
de ejecución.
Etapa de administración de las comunicaciones.
Etapa de implementación del protocolo de compromiso en dos fases.
Etapa de implementación de la bitácora.
il
3.2.1 Comunicación y envío de bytes a través de sockets I1
Implementación de las clases Tx.class y Rx.class, la primera se encarga de la
transmisión de bytes y la segunda de la recepción de bytes. Para ello se coordinan
para establecer un circuito virtual. La clase Rx, lanza un proceso que "escucha" permanentemente el medio de comunicación en un puerto determinado,
esperando una solicitud de conexión. Dicha solicitud es realizada por un proceso
lanzado por la clase Tx, dicho proceso puede ser ejecutado desde un sitio
diferente al de la ejecución del proceso lanzado por Rx, o puede ser lanzado desde el mismo sitio (Figura 15).
I
11
/I Proccso RY cscucliaiido cl iiiedio de coiiiuiiicacióii
Proccso Ts realiza iiiia
solicilod de coiicxióii
Silio A Siiio B
Figura 15 Establecimiento de un circuito virtual entre procesos.
42 i
Capitulo 3 il Implementación de la Solución
Una vez que se ha establecido un circuito virtual entre ambos procesos, se abren
flujos de transmisión de datos, los flujos son bidireccionales para que ambos
procesos se comuniquen entre si. A través del circuito, el proceso lanzado por Tx
enviará un flujo:,de bytes que serán recibidos por el proceso lanzado por Rx. Los
bytes que se envían son el contenido de un archivo cualquiera de entrada al
proceso de Tx. Tx envia a Rx el nombre del archivo y el tamaño del mismo. Rx al
recibir el flujo de bytes los guarda en forma de un archivo que tendrá el mismo nombre que indicó Tx.
!I
3.2.2 Verificación de la integridad de la información y detección de errores
del circuito virtual.
Las clases Rx y Tx incorporan en sus códigos rutinas para detectar errores en el
circuito virtual y además rutinas para verificar los datos que se envían y se
reciben. Los aigoritmos que tiene incorporados para efectuar “checksum”, son
CRC y Adler. Con ellos se verifica en todo momento la integridad de los bytes que
viajan por el circuito virtual. I1
3.2.3 Incorporación de Concurrencia y Multiprocesamiento a traves de hilos
de ejecución. ’,
Las clases Tx y Rx son hilos de ejecución, es decir procesos iniciados desde otros
procesos. La conveniencia de irnplementar esas clases de esa forma es que el
lenguaje JAVA’ proporciona mecanismos automáticos para controlar aspectos
referentes a la concurrencia y al multiprocesamiento de clases que se generen en forma de hilos.
‘I
43
Capitulo 3 Irnplernentacion de la Solución
Entonces, al cambiar las clases Tx y Rx a forma de hilos de ejecución ampliamos
la capacidad de ambas, pues puede haber varios ejemplares de cada una
accediendo a. los mismos recursos (archivos, bitácora) y ejecutándose
concurrentemente. Además se tiene un mayor control sobre los hilos, lo que
permite detener su ejecución, ponerlos en un estado de suspendidos, eliminarlos,
cambiar su pridridad, etc.
3.2.4 Administración de las comunicaciones. II
Las comunicaciones se hacen a través de las clases servidor.class y cliente.class,
en ellas se controla el número de conexiones necesarias para realizar la migración
global. Por ejemplo: supongamos que tenemos que migrar tres objetos de la base
de datos del sitio A al sitio B, lo primero que hacemos es pasar como entrada a la
clase cliente la lista de objetos y el destino al que se migrarán, a continuación se
crea un ejemplar de la clase Tx para cada objeto a migrar, la clase Tx se comporta
como ya hemos explicado.
il
I!
Por otro lado la clase servidor es un proceso que escucha el canal de
comunicaciones y recibe en el ejemplo la notificación de que recibirá tres objetos,
para ello hace tres ejemplares de la clase Rx, cada uno de los ejemplares
establece un circuito virtual con su contraparte Tx. 11
Las clases servidor y cliente administran todos los circuitos virtuales, y haceii
reintentos en los casos en que se den fallos, dado que saben con exactitud qué
circuito falló y qué hay que reenviar. En las Figuras 16 y 17 se muestran los
procesos creados para efectuar una migracion entre sitios. II
44
!I
Capítulo 3 Implementación de la Solución
a.obj
Si t i o D Port ic ipante
S i t i o A ___r Datos Coordinador t Mensajes . .. - ... . .
Receptor
e Emisor
il
i!
Figura 16 )Primera fase de migración
Par t ic ipante '",.., : .. I1 '.... . '.. .
.....
S i t i o c Por t ic iponte
Voto /
:.'
/' /'
I v o t o /
S i t i o A Globol Coordinodor - Mensajes Par t i c i pan tes
.._ - - - - -. t Mensojes Coordinodor
Figura 17 Segunda fase de migración /I
45 11
Capitulo 3 Irnplementación de la Solución
3.2.5 Implementación del protocolo de compromiso.
Las clases servidor y cliente sólo controlan las comunicaciones, es necesario
atiadir dos clases más para adaptar el funcionamiento de HeMiDl al protocolo de
compromiso propuesto. Las clases son cordinador.class y participante.class. En
ellas se implementan respectivamente el código del coordinador del protocolo y de
los participantes del mismo. La implementación se apega al pseudocódigo para
cada una de estas entidades, descrito en secciones anteriores.
El proceso coordinador al iniciar leerá la migración anterior y la nueva y
determinará qué subtransacciones son necesarias para pasar a un nuevo estado
funcional. Los participantes se implementaron como procesos que todo el tiempo
están escuchando a través de un puerto las instrucciones enviadas por el proceso
coordinador.
/I
;i 3.2.6 Implementación de la Bitácora.
1 Existen tres bitácoras implementadas en HeMiDI: la bitácora del coordinador, la
bitácora del participante y una bitácora para registro de los datos que se han
enviado.
Las bitácoras del coordinador y del participante son similares, ambas guardan el
estado actual !de ejecución de los procesos. En caso de fallas el módulo de
recuperación ante fallos se basa en el Ultimo.estado registrado en bitácora para
continuar la ejecución del proceso. Además en las bitácoras se guardan las
decisiones y votos que se han emitido para poder recuperarse sin necesidad de
volver a consu'itar al coordinador o a los participantes del voto que emitieron antes
de la falla.
'I
46 I!
Capitulo 3 Implementación de la Solución
La tercera bitácora sólo se lleva en los procesos participantes, esta tiene como
finalidad registrar el avance de la transferencia de datos entre los sitios. En caso
de presentarse un fallo, el módulo de recuperación de datos iniciará el proceso
nuevamente desde el último registro en la bitácora principal del participante, e
inmediatamente verificará la bitácora para continuar enviando los datos que no
lograron ser enviados antes de la falla. Para registrar un dato como enviado en la
bitácora, se necesita que el sitio destino de los datos confirme su recepción.
I1
3.2.7 Configuración
HeMiDl consta de dos programas: el programa para ejecutar al coordinador y el
programa para ejecutar al participante. El programa coordinador se ejecuta en un
único sitio para cada migración, el sitio es el mismo donde es ejecutado el
programa de .optimización que indica la nueva configuración. Todos los sitios
integrantes del sistema deben ,ejecutar el programa participante al iniciar la
migración. Los programas deben estar en ejecución antes de que se ejecute el
programa coirdinador, el cual debe ejecutarse al finalizar el programa de
optimización.
Ambos programas, el programa coordinador y el programa participante, hacen uso
de archivos de inicialización que permiten al administrador del sistema establecer
10s parámetros necesarios para el funcionamiento de la herramienta,. los archivos
de inicializacion se describen a continuación:
II .
I¡
ij
I/
Archivo de configuración config.mig
¡I Es común tanto para el coordinador como para el participante. En el archivo se
registran los yalores de parámetros importantes para la ejecución de ambos
procesos, tales como el máximo número de reintentos en situaciones de falló, el
número de fragmentos en que se dividirá el archivo a migrar, etc. Un ejemplo del
contenido del archivo es: !I
li 47
-
Capitulo 3 Implementación de la Solución
MAX_INTENTOS=7
TIEMPO_ESPERA=65556
NUMERO-SITIOS=4
NUMERO_OBJETOS=2
TODO-O-NADA=O
FRAGMENTOS=3
I1
Donde MAX-INTENTOS es una variable que indica el número máximo de veces
que el coordinador o el participante deberán reintentar recuperarse ante algún fallo
antes de anular la migración. I'
TIEMPO-ESPERA indica el tiempo en milisegundos que el coordinador o el
participante deberá esperar las respuestas de su contraparte. Por ejemplo, si el
coordinador está esperando el voto de un participante y el tiempo establecido se
excede, entonces el coordinador considerará que el participante no puede emitir
su voto y dará por anulada la transacción de ese participante o la transacción li
global dependiendo del caso.
I
NUMERO-SITIOS y NUMERO - OBJETOS indican respectivamente el número
máximo de sitios que podrían participar en la migración, y el número de objetos
sistema participarán en todas las migraciones, habrá ocasiones en que los datos a
migrar no involucren a todos los sitios, sin embargo la herramienta debe estar
preparada para el caso extremo en que todos los sitios sean participantes en la
migración.
Ij migrables que,se !I encuentran en el sistema. Típicamente no todos los sitios en el
La variable de configuración TODO-O-NADA es una de las más importantes. Los
valores que puede tener son 1 y O. Cuando el administrador establece su valor en
1, significa que la herramienta considerara a todas las transferencias de datos
como integrantes de una sola transacción global. Si se presenta un fallo y alguno
,:
48
Capítulo 3 Implementación de la Solución
de los participantes emite un voto por abortar, entonces todos los demás
participantes recibirán un mensaje de abortar por parte del coordinador.
It
Por otra parte; si el valor es O significa que la herramienta considerará a cada
transferencia de datos entre sitios como una subtransacción y permitirá que se
comprometan aquellas que terminen exitosamente, anulando únicamente aquellas
que no lo logren.
I!
En la sección 3.2.4 se mencionó que la clase cliente divide un archivo de entrada
en "n" nuevos'archivos o fragmentos del original y crea un ejemplar de la clase Tx para cada uno de ellos. La variable de inicialización FRAGMENTOS, indica el
número de divisiones que la clase cliente hará de los archivos de entrada que
reciba, eso significa también que la variable determina el número de hilos de
ejecución (subprocesos) que se encargarán de la transferencia de datos entre
sitios.
,\
il
1 Archivo de configuración sitios.mig
Contiene lasedirecciones URL 'de todos los sitios que conforman el sistema
distribuido. ES esencial tanto para el coordinador como para el participante ya que
sin las direcciones URL no podrían establecerse los circuitos virtuales y no habría
comunicación1 entre sitios. Es importante mencionar que debe estar replicado en
todos los sitiok y debe contener una lista de direcciones URL en un mismo order?.
Un ejemplo de su contenido es el'siguiente:
II
148.208.92.99
148.208.92.100
148.208.92.1 O1
148.208.92.1 31
49
Capitulo 3 ~ Implementación de la Solución
Nótese que Por claridad las direcciones están ordenadas numéricamente de
menor a mayor. Es importante que en todos los sitios se respete el mismo orden para que no,,existan confusiones I' en cuanto a la dirección de los sitios que
participan en la migración.
I/ Archivo de configuración objetosmig
Contiene la descripción de los objetos que pueden ser migrados por HeMiDI. AI igual que el archivo de sitiosmig , el archivo de inicialización debe ser replicado a
todos los sitios en el sistema, y también se debe mantener el mismo orden interno.
Un ejemplo de su contenido es el siguiente:
I1 .
Proveedores. bd l
Partes.bd1 !I
Clientes. bd 1
I.
Matrices de estado
Por último, tenemos dos archivos de inicialización que sólo son usados por el
coordinador, y deben por consiguiente ubicarse únicamente en el sitio en que éste
sea ejecutado, los archivos son: anteriormig y nuevamig. Los archivos
representan dos matrices en las cuales se indica la ubicación de los objetos en los
sitios del sistema. En el archivo antenormig se encuentra la ubicación actual de
los objetos y en el archivo nuevamig se encuentra la nueva ubicación a la que se
desea llegar. ~ El archivo nuevamig es donde se guardan los datos de salida del programa de ,optimización. A continuación se muestra un ejemplo del contenido de ambos archivos:
I!
II
nueva.mig II
1000 0001
0001 1 O00
anteriormig
I/
Capítulo 3 Implementación de la Solución
Las posiciones,en las que aparece,un 1 indican la posición del objeto. Los objetos
están representados por las filas de la matriz y los sitios por las columnas. En el
ejemplo mostrado, el primer objeto se encuentra en el sitio representado por la
primera columna y se desea que sea migrado al sitio representado por la cuarta
columna, de la! misma .forma el segundo objeto representado por la segunda fila:
está ubicado en el sitio representado por la cuarta columna y se desea que sea migrado al sitio representado por la primera columna.
Durante la ejecución de ambos programas se crean archivos para registrar los
eventos en las3 diferentes bitácoras, la bitácora del coordinador se llama bc.log ,
la bitácora del participante bp./og y la bitácora de la transferencia de datos se
llama fragmenfoslog. Todos son archivos temporales, dado que si no son
borrados al iniciar una nueva migración el módulo de recuperación los identificará
y procederá como si se hubiera presentado un error en la ejecución anterior. Es
por ello que son eliminados después de una migración exitosa.
!!
'!
I1
I I'riiebas
Capítulo 4 ,, \
Se describen las pruebas realizadas y se presentan los resultados obtenidos de
las mismas. Básicamente hay dos tipos de pruebas, aquellas relacionadas con el
manejo de las transacciones y las relacionadas con la transferencia de datos. /I
4.1 Descripción del Ambiente de Pruebas
Una de las metas principales 'es efectuar transacciones distribuidas a través de
Internet. Las transacciones hacen uso de la red Internet la cual está formada por
otros muchos $pos de subredes, 'las cuales varían en sus anchos de banda y
capacidad del canal de comunicación. Se hace aún más evidente en países en
vías.de desarrollo como los de América Mina, países en los que la infraestructura
de comunicaciones no tiene 'aún un desarrollo equiparable a paises
industrializados como Estados Unidos.
'!
El ambiente de pruebas estuvo formado por una red de área local (LAN) instalada
en el Centro Nacional de Investigación y Desarrollo Tecnológico la cual es una red
Ethernet 10 T'(10 Mblseg.) clase "C" con topología tipo estrella. Las máquinas
usadas en las pruebas fueron las siguientes: !I
Una PC IBM a 166 Mhz con 32 Mb de memoria RAM, disco duro de 2 GB y 11
sistema operativo Windows 98 (Sitio $5,).
Una PC a,400 Mhz con 128,Mb de memoria RAM, disco duro de 6 GB y sistema operativo Linux (Sitio S2).
53 II
Pruebas Capítulo 4
En las siguientes dos secciones se presentan las diferentes pruebas realizadas a
HeMiDI, describiendo lo que se pretendió observar con cada una de ellas y los
resultados obtenidos. De forma general se experimentó con la herramienta para
observar su comportamiento en situaciones reales y para comprobar su
funcionamiento ajustándose a los requerimientos establecidos en los objetivos.
I1
I*
4.2 Manejo de Transacciones
Las pruebas re1,acionadas con el manejo de transacciones buscan verificar que la
herramienta pueda efectuar transacciones distribuidas a través de Internet.
HeMiDl implementa un protocolo de compromiso que administra transacciones
asegurándose de que el sistema pase de un estado inicial que es congruente a
uno nuevo que también lo sea. La implementación del protocolo como una
herramienta de migración de datos se hizo identificando a dos entidades
principales: el coordinador de la migración y los participantes en la migración. Las
entidades fueron desarrolladas como módulos separados que se comunican entre
si a través de Internet para efectuar la migración. Además cada entidad implementa todas las funciones necesarias para la comunicación entre procesos a través de la red Internet.
'I
I1
I1 I
Hay posibilidades de que se presenten fallos tanto en el proceso coordinador,
como en los procesos participantes, incluso puede presentarse una falla que
afecte a ambo; (por ejemplo un"corte en el suministro de energía eléctrica), es
por ésto que 1-las pruebas para verificar el buen funcionamiento del protocolo
propuesto, se dividieron en dos partes: las pruebas al coordinador del protocolo y
las pruebas a los participantes del protocolo.
11
I1
54
Pruebas Capítulo 4
4.2.1 Fallas del Coordinador
Durante la mig;ación, el coordinador envia y recibe mensajes de los participantes
que le indican el avance de la misma. AI enviar y recibir mensajes el coordinador va pasando de un estado actual de transición a otro. Los estados de transición del
coordinador se muestran en la Figura 18. Una falla puede presentarse en
cualquier momento y puede ser desde la pérdida del circuito virtual, hasta la
suspensión o terminación forzada del proceso coordinador
I : iiiiciar E : esperar A : abortar C : coiiiproiiieter
Voto comproineter
global
I1
iniciar
Preparar
Voto abo&
.I
Figura 18 Diagrama de estados de transición del proceso coordinador.
Para asegurar que la herramienta pueda recuperarse en cualquier situación de
error, se lleva una bitácora que registra el estado actual en el que se encuentra ei
proceso. Los estados en los que puede encontrarse el proceso coordinador se
listan a continuación:
li
I . En el primer estado, el coordinador envía el nombre de la transacción global,
las instrucciones para la transferencia de datos y el mensaje de preparar a
todos los sitios involucrados en la migración y que se consideran participantes
de la misma.
55
7 PI Liebas Capitulo 4 '
2. En e\ segundo estado, el proceso coordinador se encuentra esperando la respuesta de compromiso o aborto' de cada .uno de los participantes, para poder emitir ;un voto global. AI recibir las respuestas el coordinador guarda en la bitácora cada una de ellas.
3. En el tercer estado, el coordinador decide cuál es su voto global, lo registra en
II
!I
la bitácora y,lo envía a todos los participantes.
4. En el cuarto estado, el coordinador se encuentra nuevamente en espera de
respuestas de los participantes, con las confirmaciones de terminación por
Parte de lossitios involucrados.' Al recibir la confirmación de los participantes el
proceso coordinador termina ,su 'ejecución y se registra el término de la transacción en la bitácora.
Las situaciones de error contempladas, de las cuales se hicieron pruebas de
recuperación se describen a continuación.
Caso de prueba No. 1 !I
Descripción: El proceso coordinador (c,) falla antes de pasar al segundo estado de
transición, es decir, CI presenta un error al enviar los datos necesarios para que
los participantes (p1,p~) inicien la migración, los datos son: el nombre de la
transacción, las instrucciones de los datos a migrar y el mensaje de preparar.
I1
Obietivo: La ptueba busca verificar que c1 al recuperarse, vuelva a establecer los
circuitos virtual.es con PI y p2, y reenvie todos los datos necesarios para iniciar la
migración. En 'la Figura 19 se muestra un diagrama que representa el momento del fallo.
Condiciones de prueba: Dos procesos participantes (pI,p2) y el proceso
coordinador (ci). Los procesos pi! y CI se ejecutan en el sitio sl, el proceso p2 se
ejecuta en el s,¡tio sz . Dos objetos migrables con un tamaño expresado en bytes de
01=2 Mb y 0 2 = 4 Mb.
56
I!
Pruebas Capitulo4 "
Espeeando respuestas
Fallo
Figura 19 Primer caso de prueba. El coordinador (cl) falla en su primera etapa, antes de enviar instrucciones a los participantes (pl,p2). s
Resultado: El resultado es la recuperación de cj, que continúa con el protocolo. En
la Figura B'i del Anexo B se presentan las pantallas de ejecución de e1 antes y después de la recuperación.
Caso de prueba No. 2 ,I
Descripción: El proceso c1 logra enviar todos los datos necesarios para iniciar la
migración perolfalla mientras se encuentra esperando las respuestas de pi y p2.
Obietivo: La prueba busca verificar que c1 al recuperarse vuelva a establecer los
circuitos virtuales con pi y p2, notificando que está listo para recibir sus
respuestas. La Figura 20 muestra un diagrama que representa el caso y las
acciones que efectúa CI al recuperarse. Después de la recuperación cí continuará con el protocolo de manera normal.
I
1
II
i!
Condiciones de prueba: Dos procesos participantes (pl,pz) y el proceso
coordinador (cI). Los procesos PI y CI se ejecutan en el sitio SI, el proceso p2 se
ejecuta en el sitio s2. Dos objetos migrables con un tamaño expresado en bytes de
!'
O I = 2 Mb y 02=4 Mb. II
II 57
1'1 LICV'l>
Capítulo 4
s2 s1
Pz P i Tiempo ''
Fallo
Transferencia de Datos __--- Mensajes - - - - - - -
Figura 20 Segundo Caso de prueba. El coordinador (c,) sufre una falla mientras esperaba la respuesta de los participantes (p1,p2).
Resultado: Elllresultado es la recuperación de c1, verifica la bitácora y continúa
esperando los votos de pi y p2. ,En la Figura 62 del Anexo 6 se presentan las pantallas de ejecución de CI antes y después de la recuperación.
I!.
'!
Caso de prueba No. 3
Descrirxión: El proceso c1 ha recibido las respuestas de p i y p2, y las ha
registrado en ,la bitácora, pero se presenta una falla antes de que logre emitir SL'
voto global y enviarlo a los participantes.
I . I
Obietivo: La prueba busca verificar que c1 al recuperarse lea de la bitácora las
respuestas de p i y p2, con ellas debe decidir si la transacción se compromete o se
aborta, para después establecer nuevamente la comunicación con los sitios
participantes y continuar con el protocolo enviando su voto global. En la Figura 21
se muestra esquemáticamente el caso.
'I
11
Sriiebas Capítulo 4 '
II I
,I
Condiciones de prueba: Dos procesos participantes (pi,pz) y el proceso
coordinador (ci).: Los procesos pi y c1 se ejecutan en el sitio SI, el proceso p2 se
ejecuta en el siti) s2. Dos objetos migrables con un tamaño expresado en bytes de
01=2Mby02=,$Mb. ./
!I s2 SI I
Tiempo Pl
'I Envio de instrucciones
II Esperando respuestas
't i
i Envio de ,voto global-
11
.c i
Transferencia de Datos _____ v Mensajes - - - - - _ _
Fallo
11
II Figura 21 Tercer caso de prueba. El coordinador (cl) falla antes de poder enviar su voto
global a los participantes (p,,p2). 1
Resultado: El resultado es la recuperación de CI. Después de recuperarse verifica
la bitácora, lee los votos de pi y, p2, determina el voto global, y ¡o envia. En la
Figura B3 del' Anexo B se presentan las pantallas de ejecución de CI antes y I1
después de la'irecuperación. ,I
'I 'I
Caso de prueba No. 4
I!
li Descripción: El proceso c1 ha recibido las respuestas de PI y p2 y ha decidido cuá:
es su voto global, pero se presenta una falla mientras envia el voto global a los
participantes, ,de forma que no se tiene la seguridad de que todos recibieron el
mensaje. 1
1
59 1 I1
ri ucud> Capítulo4 II
I
Obietivo: La prueba busca verificar que C.^ lea de la bitácora el voto global al que
habia llegado dntes de que se presentara la falla y lo envíe a todos los
participantes, estableciendo nuevamente todos los circuitos virtuales. En la Figura
22 se muestra esquemáticamente el caso.
Condiciones de prueba: Dos procesos participantes (pl,p2) y el proceso
coordinador (cI)~ Los procesos p i y c1 se ejecutan en el sitio s1, el proceso p2 se
ejecuta en el sitio sz . Dos objetos migrables con un tamaño expresado en bytes de
II I I
01=2 Mb y 02=? 'I Mb.
Fallo
Transferencia de Datos ---_- ---_--_ I/ +
Figura 22 Cubrto caso de prueba. El coordinador (cl) no logra enviar el voto global a
,dodos los participantes (p1,p2), falla durante este proceso.
Resultado: El resultado es la recuperación de c1 Después de recuperarse verifica
la bitácora, lee los votos de pi y p2, determina el voto global, y lo envía
nuevamente. En la Figura B4 del Anexo B se presentan las pantallas de ejecución
de c1 antes y después de la recuperación.
I1 I
II
I1 Ilruebas Capítulo4 , I,
Tiempo 1 P2
Caso de prueba,No. 5
c1 P i
'. Fallo
II
I1 Transferencia de Datos ----- Mensajes - _- - - - -
Figura 23 Quinto caso de prueba. Elcoordinador (c,) falla al recibir las confirmaciones de terminación de los participantes (pi,p2). i
II
il !
I!
I1 61
Pruebas Capítulo 4 1
1 Resultado: El resultado es la recuperación de cl, verifica la bitácora para saber si
envió su voto global, y espera las confirmaciones de pi y p2. En la Figura B5 del
Anexo B se presentan las pantal1a.s de ejecución de c1 antes y después de la
recuperación. 1
II 1)
4.2.2 Fallas de los Participantes
De la misma forma que el proceso coordinador pasa de un estado a otro, e!
proceso participante también tiene estados de transición entre los cuales se
mueve durante 'su ejecución. El proceso participante es ejecutado en todos los
sitios que interv,ienen en la migración, es decir, se ejecuta una copia del proceso
en todos los sidos. En la Figura 24 podemos observar el diagrama de estados de
transición del proceso participante. Las fallas también pueden presentarse en
cualquier momento durante la ejecución del proceso, e involucran desde la pérdida
de las comunicaciones , como la suspensión del proceso de manera forzosa. En el
proceso participante hay más intercambio de mensajes y datos entre procesos que
en el coordinador y por ello hay diferentes casos de prueba.
I/ I/
II
'i
II
I : iiiiciar L : listo
C : coinproiiieter Voto abortat.; Voto coinproineter A : abortar
Cotnproiiiiso global
Confiriliacióii Confirinacióii
Figura 2b Diagrama de estados de transición del proceso participante
li I1
62
I
Capitulo4 11 Pruebas
En el proceso participante también: se lleva una bitácora que registra el estado
actual de ejecu&n del proceso. El registro del estado actual es Útil para efectos
de recuperación en caso de fallos. A continuación se describen los diferentes
estados en que puede encontrarse un proceso participante durante su ejecución:
11
I1
I1 !I 1. En el primer estado el participante está esperando que se establezca el circuito
virtual con el proceso coordinador, el cual puede estar ubicado en un sitio
remoto o eniel mismo sitio de alguno de los participantes. AI establecerse el circuito, el participante espera los datos necesarios para iniciar su migración de
datos y el mensaje de preparar.
!I !
I1 :I
II 2. En el segunao estado, el participante comienza la transferencia de sus datos
hacia el sitio indicado, intercambiando mensajes y esperando una confirmación
del resultado de la transferenci:. El proceso participante no cambia de estado
hasta que todas las transferencias que le corresponden dentro de la migración
han sido efelctuadas o cancelad&.
i
I1
3. En el terceriiestado, decide su'voto en base a la terminación exitosa o fallida
de sus transferencias y lo registra en bitácora.
1 4. En el cuarto! estado el participante envía su voto al coordinador y espera el voto
global. )I 11
5. El quinto estado es el final, en éste dependiendo del voto global se
comprometen los cambios o se anulan, el participante envía un mensaje de confirmación al coordinador y finaliza su ejecución.
Las situaciones de error consideradas para el proceso participante, de las cuales
se hicieron pruebas de recuperación, se describen a continuación. Las pruebas
aplican a todos los ejemplares de este proceso en ejecución:
I1
1 63
Pruebas '! Capitulo 4 '1
P2 ' --
I
I/ I!
- - - - - - - - -. Rekepcion de instrucciones
Transferencia de! datos
!I I I!
I1 I/
Caso de prueba No. 6 I
C1 P i 1 I Fallo
- -__---____________ - - - - - -
DescriDción: El participante (p2) no logra pasar al segundo estado de transición
debido a una falla durante la recepción de las instrucciones necesarias para
efectuar la migración, y el mensaje de preparar por parte del coordinador (cI).
!;
Ij Obietivo: La 6rueba busca verificar que p2 al recuperarse, espere recibir
nuevamente un mensaje de c, y solicite el reenvio de las instrucciones necesarias
para la migraCion y el mensaje de preparar. En la Figura 25 se muestra
esquemáticamente el momento de la falla.
I)
I! Condiciones de prueba: Dos procesos participantes (p1,p2) y el proceso
coordinador ( ~ 1 ) . Los procesos p i y CI se ejecutan en el sitio s1 y el proceso p2 se
ejecuta en el sitio s2. Dos objetos migrables con un tamatio expresado en bytes de I1
I 01=2 Mb y 024 4 Mb.
!I - s i
Figura 25 Sexto caso de prueba. El participante (p2) falla mientras recibe las instrucciones
del coordinador (c,). II
II 64
Pruebas Capitulo 4 I! I
Recepcibndei P2
1 Tiempo
ins~~ucciones _____-_ - -. - - - - -- j
Transferencia de datos
Envio de respuesta
- . . . . - . . - . .- . . -.
II Resultado: El resultado es la recuperación de p2. En la Figura B6 del Anexo B se
presentan las pantallas de ejecución I/ de p2 antes y después de la recuperación. '!
~ 1 C l o, , P i _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.- - - - - - - - - - - - - - - -
. . -. . -. -. . -. . -. . -. . -. . -. . -. .- . - . . -. . -
Caso de prueba No. 7
Descripción: El proceso p2 ha recibido correctamente las instrucciones necesarias
para efectuar la' migración y el mensaje de preparar y ha iniciado la transferencia
de datos entre sitios cuando se presenta la falla.
Obietivo: La prueba busca verificar que p2 logre recuperarse del fallo. Debe volver
a llamar al módulo de transferencia de datos y éste será el que determine el
estado en el que se encontraba la,,transferencia al momento de la falla. Los casos
de prueba de la transferencia de datos se describen en la sección 4.3. El proceso
p2 esperará a que el módulo de transferencia de datos le notifique de qué forma
terminó la traniferencia y así podrá tomar una decisión sobre su voto. En la Figura
,I
II I1
!I
11
11
I1
Fallo
11 8)
1 Figura 26;Séptimo caso de prueba. El participante (p2) falla mientras realiza una
transferencia de datos. ,/
Capitulo4 ,i Pruebas
.i Resultado: El resultado es la recuperación de pz. Continúa transfiriendo los datos
desde el punto e,n que se presentó el fallo. ,En la Figura 87 del Anexo B se
presentan las pantallas de ejecución de p2 antes y después de la recuperación.
Caso de prueba No. 8
Descripción: El proceso p2 ha terminado la parte de la migración que le
correspondía y de'cide su voto registrándolo en la bitácora, pero se presenta una
falla antes de enviarlo a cl. 11
Obietivo: La prueba busca verificar que el p2 al recuperarse acceda a SU bitácora y
lea el voto al que había llegado antes de la falla, para poder así , enviarlo a CI
cuando éste lo contacte nuevamente y continuar normalmente con el protocolo El
Fallo
Figura 27 Octavo caso de prueba. El participante (p,) falla mientras intentaba enviar su voto al coordinador (c,).
! Condiciones de prueba: Dos procesos participantes (pl,p2) y el proceso
coordinador (c1). Los procesos p l y c1 se ejecutan en el sitio s1 y el proceso p2 se
ejecuta en el sitio s2. Dos objetos migrabies con un tamatio expresado en bytes de
01 = 2 Mb y 0 2 = 4 Mb.
11
1
. . 66
I 'i
I'riiebac I1 Capítulo4 s.
Resultado: El resqltado es la recuperación de p2. Verifica su bitácora y lee el voto
al que había llegado antes del fallo. En la Figura B8 del Anexo B se presentan las
pantallas de ejecución de p2 antes y después de la recuperación. i/
0 Caso de prueba No. 9
Descripción: El proceso p2 ha enviado su voto y se encuentra esperando la
respuesta de c1 cuando se presenta la falla. 1 ¡I Obietivo: La prueba verifica que al recuperarse de la falla, p2 establezca
nuevamente la comunicación con ci y reciba el voto global para continuar así con
el protocolo de forma normal. El caso se muestra en la Figura 28
I1 . . 'I
Fallo
-b Transferencia de Datos -____ 1; Mensajes _ _ - - - - -
por parte del coordinador (c,). Figura 28 Noveno caso de prueba El participante (p2) falla antes de recibir el voto global I/
Condiciones de Iprueba: Dos procesos participantes (p1,pz) y el proceso
coordinador (cl). Los procesos pi y c1 se ejecutan en el sitio SI y el proceso p2 se
ejecuta en el sitio sz . Dos objetos migrables con un tamaño expresado en bytes de I
/I 01 = 2 Mb y 02=4 Mb.
I
Capítulo4 Ii Pruebas
confirmación de terminación.
Resultado: El resu,ltado es la recuperación de p2. Verifica su bitácora y lee el voto
al que habia llegado antes del fallo, y lo reenvía a c1. En la Figura B9 del Anexo B
se presentan las pantallas de ejecución de p2 antes y después de la recuperación.
Caso de prueba NO. 1 O
'1
I \
// Descripción: El proceso pz ha recibido el voto global' y está comprometiendo o
anulando los camgios hechos, y antes de emitir su confirmación a c1 se presenta
la falla. '.
li Objetivo: La prueba verifica que p2 sea capaz de recuperarse y actu.alizar o anular
los cambios hechos dependiendo del voto global registrado en la bitácora, para
después de restablecer la comunicación con cl, y enviar el mensaje de
confirmación. Esquemáticamente se muestra el caso en la Figura 29.
I1
-+ _ _ _ _ _ Transferencia de Datos
b Mensajes
. - - - - - -
- Fallo
I1
Capítulo 4 Pruebas
Condiciones de llprueba: Dos procesos participantes (pi,p2) y el proceso coordinador (cI). Los procesos p i y CT se ejecutan en el sitio s1 y el proceso p2 se
ejecuta en el sitio S Z . Dos objetos migrables con un tamatio expresado en bytes de
4
01 = 2 Mb y 02=4 Mb.
Resultado: El resultado es la recuperación de p2. Verifica su bitácora y envía la
confirmacion de terminación. En la Figura B10 del Anexo B se presentan las
pantallas de ejecukión de p2 antes y después de la recuperación I1
En todos los casos, tanto en las pruebas al proceso coordinador, como al proceso
participante, existe un tiempo máximo de espera para recuperarse, es decir, si por
ejemplo el fallo se da en un participante el coordinador intentará restablecer la
comunicación un número preestablecido de veces y si se encontraba esperando
una respuesta, lo hará sólo un tiempo también predeterminado. Si no se logra en
esos reintentos o en el tiempo determinado, entonces el coordinador aborta
unilateralmente la transacción para todos los participantes o para un participante
en especial, dependiendo de la forma en que se esté ejecutando HeMiDI.
!
I1 '!
I I
i/. I
4.3 Transferencia :de Datos I
HeMiDl también se desarrolló para proporcionar seguridad y confiabilidad en la
transferencia de datos entre sitios. Las pruebas de transferencia de datos buscan
verificar que se cumpla con los requerimientos definidos en los objetivos. En la
implementación de, HeMiDl hay un módulo de transferencia de datos que es el
encargado de todos los aspectos relacionados con la migración de datos entre
!I
I
sitios. !I
Capítulo4 I/ Pruebas
El módulo es llamado por el proceso participante al momento de iniciar la
migración. En él!; se irnplementaron funciones para establecer un circuito virtual
seguro entre sitios, para verificar la integridad de los datos que viajan a través del
circuito virtual y funciones para la recuperación en caso de fallas.
I1
11 I1
Los casos de prueba del módulo son independientes de los del protocolo, ya que
el módulo actua como un auxiliar del proceso participante y lleva su propio registro
de bitácora. En e,' caso de prueba No. 7 se explica que cuando se presenta una
falla en la migración de datos, es el módulo de transferencia de datos el que se
encarga de la recuperación y notifica al participante del resultado.
I1
I1
Básicamente el módulo establece una comunicación punto a punto entre dos sitios
y envía un conjunto de datos a través de un flujo de bytes hacia el otro sitio
utilizando un circuito virtual, su tarea es asegurarse de que los datos lleguen a su
destino y esperarla que dicho destino confirme la llegada de los mismos.
11 1
u Originalmente, el participante envía un solo conjunto de datos, el cual es
particionado para: enviar por separado cada partición a su destino. Durante una
transferencia de datos existen varios subprocesos ejecutándose
concurrentemente, cada uno de ellos enviando una parte del conjunto de datos
original a su destino.
I
'1
I1 . Se explota el paralelismo y se aumenta la confiabilidad en cuanto a que los datos
lleguen correctamente a su destino. En caso de error el módulo debe reintentar
enviar los datos. Existen diferentes casos de prueba, los cuales se presentan en la siguiente
!I
Capí tu lo4 ,, Pruebas
II 'I
4.3.1 Fallas en la transferencia de datos
Existen varias posibilidades en las que el módulo de transferencia de datos debe
estar preparado I1 para recuperarse. A continuación se describen las fallas
consideradas y las acciones que se toman para recuperarse ante ellas.
/I
II Caso de prueba No. 7 7 : El proceso de transferencia de datos falla antes de que
alguno de los subprocesos que envían particiones del conjunto original de datos
confirme su envio. (Figura 30-a). La falla podría ser una caída de los circuitos
virtuales o una interrupción del suministro de energía en el sitio donde se ejecuta el participante que 'I emite ' o recibe los datos.
a
subprocesos emisor
.........................
......................... c.0 ............ ............ u ........
!I
Falla de los circuitos virtuales
subproceso .............................................................................. ............. ........................ ......................................... ........ ......... ',-c+cl
......... ........... ........ ................. receptor
J ................ ........ ........
subproceso .........................................................................................................
........... ....... ;:,,, -c+cl receptor
J
subprocesos Reinteiitos de traiisferencia subproceso
-0t-O -..-. . - - - . . - : ..... ............ receptor
. . . . - ,- ........... ............................ L . . ..........
................. ............................ ................. ....... Transferencia Exilosa
11, Figura 30 a) la falla se presenta antes de recibir alguna confirmación; b) el proceso
reinicia la transferencia de datos al recuperarse.
I! Capítulo 4 Pruebas
........ subproceso -
............................................................................... ...................... ...................... _ ............. ......... ......... ............ ........... ............ ........ receptor
..................
............................
.............................. ........ .......... ;..A,% “0-4J \ Falla de los
circuitos virtuales @ ya confimo
b
sub procesos
........................ ........................ ......... ........................................... .................................. ................. ........... ........ ................... receptor ............ ............ .................... ................
u Figura 31 a) la falla se presenta antes de que todos los subprocesos confirmen, b) el
proceso reenvia las particiones que quedaron pendientes al darse la falla.
Capitulo 4 Pi-uebas
I1 . Como se puede apreciar en la prueba, pueden fallar los subprocesos que envían
las particiones y el módulo se recuperará enviando sólo aquellas que quedaron
pendientes. Lo cual es útil para intentar disminuir los tiempos de transferencia, a
diferencia de lo que sucede con una transferencia típica de datos entre sitios
usando FTP.
I
'I II
lj 4.3.2 Comparación con FTP
FTP ha madurado ampliamente como un estándar en muchos tipos de
computadoras que son usadas para sistemas modernos de comunicación,
esencialmente en los sistemas con acceso a Internet, además de otras redes
similares en las cuales también se usa el protocolo TCPIIP. Sin embargo las
implementaciones varían básicamente en las características soportadas.
I I1
I El desempeño ha :sido extremadamente bueno para transferencias de archivos de
texto entre rnáqui'nas similares, pero para aplicaciones más complicadas como
transferencia de imágenes esto cambia. FTP proporciona un nivel muy bajo de
funcionalidad a causa de los muchos detalles que tienen que ser negociados para
estabilizar las ruta,s de transferencia y el manejo de la misma. FTP no resulta un
protocolo adecuado para ser usado por todo tipo de aplicaciones, un ejemplo que
10 ilustra es el siglliente:
I
I1
Se desea enviar el archivo x.obj del sitio A al sitio B, el archivo tiene un tamatio de
20 Mb. Si hacemok la transferencia usando FTP y se presenta una falla cuando se han logrado enviar por ejemplo 11 Mb al sitio B, es como si esos 11 Mb no
hubieran sido enviados, pues no hay funciones que lleven una bitácora para poder
recuperarse ante: fallas en FTP (Figura 32). Si deseamos continuar la
transferencia, ésta ,comienza nuevamente a enviar los datos desde el inicio del
archivo x.obj , con'lo cual hemos perdido el tiempo que ocupó enviar los anteriores
11Mb y el costo de conexión aumenta por consiguiente."
0
I1
I
'! Pruebas Capítulo 4
Número de Bytes
Enviados
21,342,120 i e 4,636,401
1,580,322 ,
Falla e l sitio a
Tiempo Aplicación Tiempo
Comercial HeMiDl
4:23:17 hrs. 4:10:15 hrs.
0:43:12 hrs. 0:42:33 hrs.
0:28:33 hrs. 0:25: 17 hrs.
52 %enviado sitio b
b
I x.obj (20 MB) x.obj ( I I MB)
I I/ Figura 32 Transferencia de datos entre sitios usando FTP.
Por otra parte, si usamos HeMiDI, el archivo x.obj se divide en "n" partes que
pueden ser definihas en un archivo de configuración, de esta forma HeMiDI.envía
de forma indeperkente cada parte y registra cuáles de ellas han sido enviadas de
forma exitosa a su destino . Si se presentara una falla sólo se tienen que volver a
enviar las partes \que no lograron enviarse antes de la falla, disminuyendo así el
tiempo de transferencia y conexión que tendriamos en el caso anterior usando
FTP. En la Tabla 1 se presentan los resultados obtenidos al evaluar una
aplicación comercial que implementa FTP y el módulo de transferencia de datos
de HeMiDI. El factor que se evaluó fue el tiempo de transferencia, y los resultados
obtenidos indican que se obtiene un mejor desempeño al hacer uso de la
herramienta de migración de datos.
!I
11
II 11
I1 74
Capítulo 4 Pruebas
Las condición necesaria para utilizar HeMiDi es que los archivos que reubica no
sean accesados por otros procesos en el momento en que éstan siendo migrados.
Las restricciones I/ que se consideraron durante las pruebas de HeMiDi son las
siguientes:
Los archivos deben tener un tamaño de al menos 100 Kb. No se aceptan
archivos. vacíos o sin extensión. Tampoco archivos cuyo nombre exceda 12
caracteres ya incluidos el punto y los tres caracteres de la extensión.
El tiempo de espera puede ser de O a infinito en el rango de los números
enteros.
El valor de los parámetros FRAGMENTOS, MAX-INTENTOS,
NUMERO-SITIOS y NUMERO-OBJETOS debe ser un valor entero, en el
caso de FRAGMENTOS puede tomar un valor de 2 a 10, en el caso de MAX-INTENToS de 1 a 10, NUMERO-SITIOS de 2 a 10, y
NUMERO-OBJETOS de 1 a IO.
En el caso de iODO-O-NADA solo puede tomar los valores O y 1. El valor por
defecto es O.
El archivo sitios.mig debe ser exactamente igual en todos los sitios.
El archivo objetos.mi,g puede ser diferente en cada sitio, pero se recomienda
que también sea exactamente el mismo en todos los sitios. Además los
archivos listados en él deben existir en el directorio actual de trabajo.
I1
I
II
.I(
'1 I\
11 Conclusiones Capítulo 5 II
5 Conclusiones
Se presentan las conclusiones a las que se llegó al finalizar el trabajo,
enmarcando las' principales aportaciones, y se hacen recomendaciones para
trabajos futuros.
5.1 Conclusion&
Se desarrolló una herramienta para la migración de datos a través de Internet. La
herramienta incorpora el concepto de transacción distribuida, ademas de
seguridad y confiabilidad en la transmisión de datos. La herramienta es una parte
fundamental para la solución del problema de la reubicación optimizada de datos
en un sistema de'bases de datos distribuidas a través de Internet.
4
11
1 La aportación principal del trabajo fue la incorporación del concepto de
transacción distribuida a Internet. Como se mencionó en el capítulo 2, el
problema principal es la falta de funciones o mecanismos proporcionados por el
protocolo TCPllP usado por Internet, que permitan a las aplicaciones de bases de
datos efectuar transacciones a través de la red.
11
//
Se aporta también una modificación al protocolo de compromiso en dos
fases (two phase commit).que ofrece confiabilidad y seguridad en las
transferencias de datos. La modificación al protocolo permite efectuar
transferencias deidatos en condiciones de operación con fallas en los equipos de
cómputo, el medio de transmisión o en el suministro de energía, incorporando un mecanismo de recuperación y aplicando criterios para el reintento de operaciones
necesarias durante la migración de los datos.'
!I.
11
I1
I1 Conclusiones Capítulo 5 it
La herramienta hace uso de dos circuitos virtuales, uno es usado para el paso de
mensajes correspondientes al protocolo de compromiso y otro para la
transferencia de datos, io cual permite obtener una pequeña mejora en el desempeño en comparación con otras aplicaciones comunes de FTP comerciales.
En el capítulo 4 se muestran resultados representativos en los que se muestra el
desempeño de la herramienta. Con estos resultados se garantiza que la
herramienta iguala el desempeño de una herramienta comercial para la
transferencia de archivos.
/I:
!
1
‘I
/I.. . El uso de los dos circuitos virtuales permitió también hacer un mejor uso del ancho
de banda para la transferencia exclusiva de datos. La herramienta explota el
paralelismo en la transferencia de datos, disminuyendo así el tiempo de
transferencia, además se aprovechan las ventajas del lenguaje de programación
Java, haciendo a la herramienta multiplataforma.
I1
Ill Las metas a alcanzar establecidas por los objetivos se cumplieron totalmente. Se
administran transacciones distribuidas que involucran a varios sitios de un sistema
de bases de datos’ distribuidas. Además se ofrece confiabilidad y seguridad en las
transferencias de datos. I1
5.2 Recomendaciones para trabajos futuros
Las siguientes son recomendaciones para mejorar y ampliar las capacidades de la
herramienta desarrollada:
// I 1
I!
Incorporar paralelismo en otros módulos de la herramienta para mejorar su
desempeño y tiempo de ejecución. Actualmente la herramienta hace uso del
paralelismo en el módulo de transferencia de datos y se logró disminuir el
tiempo de transferencia.
Capitulo 5 11 Conclusiones
Añadir a la herramienta un modulo que lleve estadísticas de desempeño. Con
las estadísticas la herramienta podria ser^ capaz de determinar cuál es ei
número ideal de divisiones que deben hacerse del archivo a migrar, cuál es la
mejor hora del día para efectuar las transferencias, y tener tiempos variables
de espera de acuerdo al sitio que presenta más fallos y aquel que no.
!I
II . . .
Diseñar una interfaz gráfica para configurar la herramienta y una interfaz para
ver el desarroilo de la migración entre sitios, ésto como una función adicional
proporcionada..al administrador de la base de datos.
'I
11
Permitir que la herramienta pueda realizar transferencias pendientes que no
pudieron completarse a causa de fallas. II
II 'I
I
‘i Lenguaje JAVA Anexo A I1
A Lenguaje I JAVA I1
El anexo trata sobre las características del lenguaje de programación JAVA, el
cual fue usado en el desarrollo de la herramienta, se habla del manejo de sockets
y de los hilos de Jjecución (subprocesos).
A.l Características del lenguaje
Java es un lenguaje de programación orientado a objetos, desarrollado por Sun
Microsystems, una empresa reconocida por sus estaciones de trabajo UNlX de
alta calidad. Moldeado en base a C++, el lenguaje Java se diseñó para ser
pequeño, sencillo ,;y portátil a través de plataformas y sistemas operativos, tanto a
nivel de código fuente como en binario.
/I , >
‘1
I1
Con frecuencia, se dice que Java es un lenguaje para agregar animación a
páginas Web a través de apliquetes (applets). Los apliquetes aparecen en una
página Web de una manera muy parecida a las imágenes, pero a diferencia de
éstas, los appliquetes son dinámicos e interactivos; se utilizan para crear
animaciones, figuras o áreas que pueden responder a entradas del usuario, juegos
u otros efectos interactivos en las mismas páginas Web entre el texto y los
gráficos.
I1
I¡
11
Sin embargo, Java es mucho más que esto. Java se concibió como un lenguaje de
programación completo, donde es posible realizar las mismas tareas y solucionar
el mismo tipo de problemas que con otro lenguaje de programación, como C o
C++.
I/
d Lenguaje JAVA 11
Anexo A
La independencia de la plataforma es una de las ventajas más sobresalientes que
tiene Java sobre otros lenguajes de programación, en particular para los sistemas
que necesitan fu(cionar en varias plataformas. Java mantiene esta independencia
de la plataforma tanto a nivel del código fuente como del binario.
A nivel del códigb fuente, los tipos primitivos de datos de Java tienen tamatios
consistentes, en todas las plataformas de desarrollo. Los fundamentos de
bibliotecas de Java facilitan la escritura del código, el cual puede desplazarse de
plataforma a plataforma sin necesidad de volver a escribirlo para que funcione con
esa plataforma.
11
!
11
La independencia:de la plataforma, sin embargo, no se detiene a nivel del código
fuente. Los archivos binarios Java también son independientes de la plataforma, y
pueden ejecutarse en múltiples plataformas sin necesidad de volver a compilar el
código fuente. Los archivos binarios Java se encuentran en una forma llamada
bytecode. Los bytecodes son un conjunto de instrucciones muy parecidas al
código de máquina, pero que no son especificas para algún procesador.
I . .
'I
11.
'1 Cuando se compila un programa escrito en C o en cualquier otro lenguaje, por lo
general el compilador traduce el programa a códigos de máquina o instrucciones
del procesador que son especificos para el procesador que la computadora
ejecuta. Por lo tafto, si se desea utilizar el mismo programa en otro sistema,
tendrá que volverse a compilar el código fuente original en ese sistema.
I
1
Este panorama es distinto cuando se escribe código Java. El ambiente de
desarrollo Java tiene dos partes: un compilador y un intérprete Java. El compilador
Java toma el programa con el código fuente y en lugar de generar códigos de
máquina para sus archivos fuente, genera un bytecode. Para ejecutar este
programa Java, debe ejecutarse un intérprete de bytecodes, el cual a su vez
ejecuta el programa original.
I1
I
11
Lenguaje JAVA Anexo A 'I
La desventaja dd utilizar bytecodes se halla en la velocidad de ejecución. Puesto
que los programas específicos del sistema corren directamente en el hardware en
que se compilaron, éstos, se ejecutan más rápido que los bytecodes de Java los
que, a su vez, deben ser procesados por el intérprete.
A.2 Sockets en JAVA 11
LOS sockets son': puentes de comunicación entre dos máquinas. Sirven para
establecer circuitos virtuales a través de los cuales puede intercambiarse
información entre sitios.
En Java los sockets se implementan en la clase del mismo nombre. Existen dos
roles principales que puede tomar un socket en Java, puede ser un cliente o un
servidor. En Java los sockets cliente se definen en la clase Socket y los servidores
en la clase ServerSocket. En ambos'casos sólo es necesario indicar el puerto al
que están asociados y en el caso del cliente la dirección de la máquina con la cual
se establecerá el circuito virtual.
ii
, , 11 :I : " "
El siguiente ejemplo muestra la declaración de un socket cliente:
. . i.
class psocket { 1;
I1 Socket misocket = null;
public static void main(String args[ I) { '. '..I, . A , ,. Ir try {
misocket = new Socket("148.208.92.131",6000);
} catch (SocketException e) {
e.printStackTrace();
I!
> ." I
" , . . 1 !I
t
/I 83
Lenguaje JAVA Anexo A
11 involucrado la implementación de mecanismos al estilo de los hilos en forma
manual para darle a un programa una sensación más amistosa a sus usuarios.
/I La máquina virtual de Java permite que una aplicación tenga múltiples hilos de
ejecución corriendo concurrentemente. Cada hilo tiene una prioridad. Los hilos con
mayor prioridad son ejecutados preferentemente a aquéllos con menor prioridad.
Cada hilo puede o no, ser marcado como demonio. Cuando el código de un hilo
crea un nuevo hilo, este último tendrá la misma prioridad del hilo que lo crea, y si
el hilo que lo crea es un demonio, el hilo creado también lo será.
I
I
I1
Cuando inicia la \máquina virtual de Java, existe usualmente un hilo sencillo no
demonio (que tipicamente llama al método main de alguna clase designada). La
máquina virtual de Java continua la ejecución de hilos hasta que alguna de las
siguientes condiciones ocurra:
I1
Y El método exit,de la clase Runtime ha sido llamado.
Todos los hilos no demonios han terminado su ejecución, al terminar
normalmente O al lanzar una excepción que se propaga a través del método
run.
.I1
1 Hay dos formas en Java de crear un nuevo hilo de ejecución. Una es declarar una
clase como subclase de la clase Thread. Esta subclase debe implementar el
método run de la clase Thread. Un ejemplar de esta subclase puede entonces ser
iniciado. I1
Por ejemplo un /Ihilo que compute números primos mayores que un valor
establecido se escribiria de la siguiente forma:
1
Lenguaje JAVA Anexo A
class PrimeThread extends Thread {
long minPrime;
PrimeThread(1ong minPrime) {
this.minPrime = minPrime;
1 public void run() {
I#
< II
II
// computa números primos mayores que minPrime
El siguiente código crearía el hilo y lo iniciaría:
I
PrimeThread p = new PrimeThread(l43); , .
p.start(); 11
La otra forma de crear un hilo es declarar una clase que implemente la interfaz
Runnable. Esa clase implementa entonces el método run. Un ejemplar de la clase
puede entonces ser usado, pasándolo como un argumento cuando se crea el hilo
a través de un ejemplar de la clase Thread. El mismo ejemplo en este otro estilo
se ve de la siguiente manera:
II
class PrimeRun implements Runnable { I/
long mindime;
PrimeRun(1ong minPrime) { 'I
this.minPrime = minPrime;
1
I
86 !I
Anexo B . . . . .
- ... .-
C: \TESIS\final> java coordinador
De: 148.208.92!131 a: 148.208.92.184 obj:2
NUMERO-PARTICIPANTES: 2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Contactando a:,;148.208.92.131 Sitio contactado: 148.208.92.131 Contactando a: 11148.208.92.184 Exception: Connection refused: no further information
C:\TESIS\final>java coordinador
RECUPERACION: La falla fue antes de enviar la migracion
De: 148.208.92.il31 a: 148.208.92.184 obj:2
I¡ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NUMERO-PARTICIE?ANTES : 2
I' Contactando a: 148.208.92.131 Sitio contactado: 148.208.92.131
Contactando a:!1148.208.92.184 Sitio contactado: 148.208.92.184
Generando Transaccion: tgl Transaccion: tgl
De: 148.208.92.131 a: 148.208.92.184 obj: O
Pulse <ENTER> $ara continuar. . . Subtransacciones enviadas. Esperando resplesta de: 148.208.92.131 Respuesta: 1 Esperando respuesta de: 148.208.92.184
C: \TESIS\final$java coordinador RECUPERACION: La falla fue al esperar las respuestas. Esperando respuesta de: 148.208.92.184 Respuesta: i
Pulse <ENTER> para continuar . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
_ _ _ _ _ _ _ - _ _ _ _ _ _ _ _ - _ _ _ - _ - - _ - - - - - - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 89
,~ .. ~~~ . I/
Esperando respuesta de: 148.208.92.131 Respuesta: 1 Esperando rescuesta de: 148.208.92.184 Respuesta: 1 Pulse <ENTER> 'ilpara continuar. . . Votos recibidos.
C: \TESIS\final'> Java coordinador RECUPERACION: La Falla fue antes de enviar el voto global Envio Comprometer Transaccion a:148.208.92.131 Envio Comprom&er Transaccion a: 148.208.92.i84 Pulse <ENTER> para continuar . . . Esperando de: 148.208.92.131 Respuesta: 7
Respuesta: 7
'I
de: 148.208.92.184
1:igura 8.3 E I caordi~indor liillú BIXCS dc c!lviar su voto glal)al.
.. . . . -. . .
Esperando respuesta de: 148.208.92.131 Respuesta: 1 , Esperando respuesta de: 148.208.92.184 Respuesta: i 1' Pulse <ENTER> para continuar . . . Votos recibidos. Envio Comprometer Transaccion a:148.208.92.131
C:\TECIC\final> java coordinador RECUPERACION: La Falla fue al enviar el voto global Envio Comprometer Transaccion a:148.208.92.131 Envio Comprome&er Transaccion a: 148.208.92.184 Pulse <ENTER> para continuar . . . Esperando respüesta de: 148.208.92.131 Respuesta: 7 Esperando respuesta de: 148.208.92.184 Respuesta: 7
I1
'1
!I ' Confirmaciones recibidas
. . __;-A-__. ~ l̂r__-y;gy1i55.1<l
.. . .. . . , . .. . . . .. .. . . . . . . . . . . . .. . . . . . . . .. .. .. L.*,.;..,i.....;...;;.; ___*_- ~ - , .. -_- - I_ ~ i g u r s R.4 EI &ordinador no ~ogm enviar CI voto global a todos 105 participantes. raila diirniite el proceso
90
Esperando8respuesta de: 148.208.92.131 Respuesta;: 1
Respuesta: 1 Pulse <ENSER> para continuar . . . Votos recibidos. Envio Comprometer Transaccion a:148.208.92.131 Envio Comprometer Transaccion a:148.208.92.184 Pulse <ENTER> para continuar.. . Esperando, respuesta de: 148.208.92.131
C:\TESIS\final> java coordinador RECUPERACION: La Falla fue al esperar las confirmaciones Esperando respuesta de: 148.208.92.131 Respuesta: 7 Esperando! respuesta de: 148.208.92.184 Respuesta: 7
Confirmaciones recibidas
Esperando, 1 respuesta de: 148.208.92.184
I
'I
.~ .,.. . , ~~ .. ..... . I_.I. - - - .- . . ___..- - ~ - - I _-..I_.-.-.." .... ,
1 Iiigiirn 1t.S El coordiiiador fdl0 nnics dc recihir las confirmaciones de iermioaci6n de los pariicipantes.
C:\TESISxfinal> java participante <<< Participante Preparado >>> <<< RECEPTOR DE ARCHIVOS >>> Circuito Virtual Establecido.
De: 148.208.92.131 a: 148.208.92.184 obj: O
Pulse <ENTER> para continuar . . . Migracion Recibida.
C:\TESIS\final> java participante < c < Participante Preparado >>> <<< RECEPTOR DE ARCHIVOS >>> Circuitorvirtual Establecido.
De: 148.208.92.131 a: 148.208.92.184 obj: O
Pulse <ENTER> para continuar . . . Migracion Recibida.
t
________i______________-__--_-- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - - - - _ - _ _
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ________________--------------- I/
'1
1 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - - _ _ - - _ - - - - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ _ - - - - - - - - t
_ _ _ _ _ _ _ _ - - - _ _ _ _ _ - - - - _ _ - _ - - - - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ _ - - - - - _ - -
Icigtirn ll.6 El panicipanic fa116 miciilras recibí8 las insinmiones del coordinador. ¡I I
91
.. .. . . . . .. .
Iniciando sub-transaccion Nombre solo: icq c < Dividido > > ' Enviado : icq. 111 Pulse CENTER> para continuar . . . Enviado: icq.2
t
Enviado: icq.2
Pulse CENTER> para continuar . . . Enviado: icq.4 Pulse <ENTER> para continuar . . . Enviado: icq.5
Figurn 8.7 Ei participaiiic faila itiieiitras d i m una iransfcrcncia de dalos
Enviado: icq.4 Pulse <ENTER> para continuar . . . Enviado: icq.5 Pulse <ENTER> para continuar . . . Objeto: icq.exe migrado. Pulse <ENTER> para continuar . . . Sub-transaccion terminada. Mi voto es COMPROMETER Pulse <ENTER> dara continuar.. .
C:\TESIS\finai> lava participante Mi voto es COMJROMETER Pulse <ENTER> para continuar . . . Voto enviado ad coordinador. Esperando el vdto global.. . Pulse <ENTER> para continuar . . .
:I '1
I/
I
r
,'-.
.... - . - . . - . ~ . ~ . . .--.-!1
Figura 8.8 El panieipanie falló mimtrm iiiiciitaba enviar su vola al cwrdinador
92
I
Sub-transaccion terminada. Yi voto es COMPROMETER Pulse <ENTER> para continuar . . . Pulse CENTER> para continuar . . . Voto enviado a l coordinador. Esperando el voto global . . . Pulse <ENTER> para continuar . . .
C:\TESIS\finai> java participante Esperando el voto global . . . Voto global recibido. Diccionario Modificado. .........................................
Objeto: icq.exe borrado.
<temporal> vacio Pulse <ENTER> Itpara continuar. . . Confirmación enviada.
'I Termina proceso participante
1)
________________________________________- ___________________-------_--_-----------
Gigura R.<) El p8riicipariic 11i11ó iliiles dc rccibirel vol0 global. 1
Voto enviado al coordinador. Esperando el voto global . . . Pulse <ENTER> para continuar . . . Voto global recibido. Diccionario Modificado.
Objeto: icq.exe borrado.
<temporal> vacio Pulse <ENTER> 'para continuar . . .
C:\TESIS\final,> java participante Confirmación enviada. Termina proceso participante <temporal> vacio
'I
C:\TESIS\final>
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I\
I . . .-,
93
Glosario 1
Clase
Clase base Cliente
Código
Ejemplar Jerarquía
Lenguaje de
ij Tipo definido por el usuario en JAVA. Grupo de Objetos que codparten las mismas propiedades y relaciones. En JAVA, una claie se puede utilizar para definir un nuevo tipo de dato. Una clase a partir de la cual se deriva otra. Un objeto o clase que utiliza los servicios de otro objeto o clase. El objeto que proporciona el servicio es el servidor. Conjunto de instrucciones escritas en un lenguaje de programación. Un objeto definido por una clase. Conjunto de clases derivadas de clases base que se pueder. disponer en estructuras tipo árbol con la clase base raíz en la parte superior del árbol. Conjunto de reglas que sirven para escribir instrucciones de Io
Mensaje
Método
Objeto
Parámetro
Programa
Protocolo
Ruta de acceso Servidor
- . programación computadora. Lenguajes de programación orientados a objetos son
C++, Smalltalk, Eiffel, JAVA, etc. Proceso de invocar una operación sobre un objeto. En respuesta a un mensaje, el método correspondiente se ejecuta en el objeto. Un metkaje es el nombre de un método pasado a un ejemplar de un tipol objeto. Cuando se envía un mensaje a un ejemplar de un objeto se llama a uno de sus métodos. Para enviar un mensaje a un ejemplar de un objeto se especifica el objeto y el método que se debe invocar. Una . operación sobre un objeto. Los métodos son implementaciones de las operaciones relevantes a una clase de objetos. Los métodos se invocan en respuesta a mensajes. Combinación de datos y colección de operaciones que actúan sobre los datos. Lista de variables encerradas entre paréntesis que siguen al nombre de una función o un procedimiento. Los parámetros indican el numero y el tipo de argumentos que se envían a la función o procedimiento. Conjunto de instrucciones que indican a la computadora las tareas a realizar. Espkcificación de los modos en que se pueden realizar opeFaciones sobre un objeto. Ruta que se recorre desde el directorio raíz a un subdirectorio esphcífico cuando se trata de localizar un archivo. Un /[objeto que proporciona servicios que se utilizan por otros objetos. Los objetos que utilizan los servicios son clientes.
94
Refe re nc i ás ¡I
[Apers, 19881 P.M.G. Apers. "Data Allocation in Distributed Database Systems" ACM Trans. On Database Systems. Vol. 13, no. 3, pp. 263-304, sept. 1988.
[Bernstein, 198l],P.A. Bernstein, N. Goodman, E. Wong, C.L. Reeve, y J. Rothnie, "Query Processing in a System for Distributed Databases (SDD-I)", ACM Trans. On Database Systems. Vo1.6, no. 4, Dec. 1981.
[Ceri, 19841 S.Ceri y G. Pelagatti. "Distributed Databases: Principles&Systems" New York, N.Y. ; McGraw-Hill, 1984.
[Ceri et al, 19831 S . Ceri, S . Navathe, y G. Wiederhold. "Distribution Design of Logical Database' Schemas" I€€€ Trans. On Software Engineering, vol. SE-9, no. 4, pp. 487-503, july 1983.
[Cornell, 19891 D.!W. Cornell y P.S. Yu. "On Optimal Site Assigment for Relations in the Distributed Database Environment" I€€€ Trans. On Software Engineering, vol. 15, no.8, pp. 100?l-1009, August 1989.
[Date, 19951 C.J! Date. "An Introduction to Database Systems" Volume I, 6Ih ed. Addison-Wesley Publishing Company, 1995.
[Dowdy, 19821 L.W. Dowdy y D.V. Foster. "Comparative Models of the File Asigment Problem" ACM Computing Surveys, vol. 14, no. 2, pp. 287-314, june
'I
I!
!I
1982. 1
[Ferguson, 19931 D. Ferguson, C. Nikolaou y Y. Yemini. "An Economy for Managing Replibated Data in Autonomous Descentralized Systems" Proc. Inf. Symp. On Autonomous Descentralized Systems (ISADS 93), Kawasaki, Japan, 1993. 'I
[Kulkarni, 19911 U.R. Kulkarni y H.K. Jain. "Using Semantic Knowledg of Partitioning and' Allocation of Data in Distributed Databases" Proc. 24"' Hawaii International Conference on Systems Sciences, vol. 2, pp. 146-1 54, 1991.
[Lee, 19921 Heeseok Lee y Oh ia R. Liu Sheng. "Optimal Data Allocation in a Bus Computer Network Proc. Second Workshop on the Management of Replicated Data. pp. 62-65, 1992.
[Litwin, 19821 W. Litwin et al., "SIRIUS System for Distributed Data Management" In Distributed Databases, H.J. Schneider (ed.), North-Holland, 1982.
I1
li
I1
i I!
95
/I [Malone, 19881 T.W. Malone, R.E. Fikes, K.R. Grant y M.T. Howard. "Enterprise: A Market-like TasklScheduler for Distributed Computing Environments" The Ecology of Computati0n;B.A. Huberman (ed.), North-Holland, 1988.
[March, 19951 S.7. March y S. Rho. "Allocating Data and Operations to Nodes in Distributed Database Desing" Transactions on Knowledge and Data Enginnering, vol. 7, no. 2, 1995.
[Muthuraj et al, 19931 R. Muthuraj, S. Chakravarthy, R. Vadarajan y S.B. Navathe. "A'Formal Approach to the Vertical Partitioning Problem in Distributed Database Design'' Proc. I€€€, ISBN:O 8186 3330 1, 1993.
[Navathe et al, 19841 S. Navathe, S. Ceri, G. Wiederhold, y J. Dou. "Vertical Partitioning Algorithms for Database Design" ACM Trans. On Database Systems. Vol. 9, no. 4, pp. 680-710, Dec. 1984.
[Ozsu, 19911 M. Ozsu y P.Valduries "Principles of Distributed Database Systems" Englewood Cliffs,llN.J.: Prentice-Hall, 1991.
[Pérez et al, 1997al Joaquín Pérez, Miguel A. Ortiz, y Rodolfo A. Pazos. "Procesamiento en Paralelo de Consultas en SQL en Bases de Datos Distribuidas" Memorias de la Conferencia lnternacional ClMAF'97, La Habana, Cuba, Marzo 24- 28. 1997.
[Pérez et al, 1997bl Joaquín Pérez, Claudia H. Ibarra, Rodolfo A. Pazos, y Victor Sosa. "Diseño y Arquitectura de un Generador de Prototipos Rápidos a Partir del Esquema de la i/Base de Datos" Memorias de la Conferencia internacional ClMAF'97, La Habana, Cuba, Marzo 24-28, 1997.
[Pérez et al, 1997~1 Joaquín Pérez, Rodolfo A. Pazos, Juan Frausto, y Ana Guadalupe Vélez;' "Fragmentación, Ubicación y Reubicación Dinámica de Datos en Bases de Datos Distribuidas", /I Jornadas de Investigación y Docencia en Bases de Datos, julio 1997, pp. 11 1-120.
[Pérez et al, 19981 Joaquín Pérez, Rodolfo A. Pazos, Guillermo Rodriguez O.,Juan Fausto S,, Sandra Ramirez P., y Fernando Reyes S. "Un Modelo para la Fragmentación Vertical y Reubicación Dinámica en Bases de Datos Distribuidas", Memorias de la Conferencia lnternacional ClMAF'98, La Hababa, Cuba, 1998.
[Pérez, 19991 Joaquín Pérez Ortega, "Integración de la Fragmentación Vertical y Ubicación en el ;Diseño Adaptativo de Bases de Datos Distribuidas'' , Tesis Doctoral, InstitutoiTecnológico y de Estudios Superiores de Monterrey Campus Morelos, Abril 1999, Cuernavaca, Morelos.
[Stonebraker, 19861 Michael Stonebraker, "The Design and Implementation of Distributed INGRES", The lNGRES Papers. Addison-Wesley, Reading, MA, 1986.
ll
I/
I/
I/
96
I¡ [Stonebraker et al, 19941 Michael Stonebraker, Robert Devine, Marcel Kornacker, Witold Litwin, Av¡ Pfeffer, Adam Sah, y Carl Staelin "An Economic Paradigm For Query Processing and Data Migration in Mariposa" Computer Science Div., Dept. of EECS University of California, 1994.
[Tanenbaum, 19971 Andrew S. Tanenbaum, "Redes de Computadoras", Prentice Hall, 3ra Edición, :1997.
[Williams, 19811 : R. Williams, D. Daniels, L. Haas,G. Lapis, B. Lindsay, R. Obermarck, R. Selinger, P. Walker, P. Wilms, y R. Yost. "R*: An Overview of the Architecture, IBMIResearch Report RJ3325", IBM Research Laboratory, San Jose, CA, Dec. 1981. 11 [Wolffson, 19921 O. Wolffson y S. Jajodia. "An Algorithm for Dynamica Data Distribution". Proc. Second Workshop on the Management of Replicated Data, pp.
'!
I/
I1 62-65, 1992.
[Xiaolin, 19881 D; Xiaolin, y F.J. Maryanski. "Data Allocation in a Dynamically Reconfigurable knvironment". froc. Fourth lnternafional Conference on Data Engineering, pp. 74-81, 1998.
[Xuemin, 19951 L. Xuemin, y M. Orlowska. "An Integer Linear Programming Approach to Data Allocation with the Minimun Total Communication Cost in Distributed Database Systems" lnformation Sciences, pp. 1-10, 1995.
97