Dissertação - CoDIMS

Transcrição

Dissertação - CoDIMS
Cristiano Biancardi
Distribuição e Execução de Wrappers em
Ambiente de Grid para o CoDIMS
Vitória - ES
2005
Cristiano Biancardi
Distribuição e Execução de Wrappers em
Ambiente de Grid para o CoDIMS
Dissertação apresentada ao Programa de
Pós-Graduação em Informática do Centro
Tecnológico da Universidade Federal do Espírito Santo, como requisito parcial para obtenção do Grau de Mestre em Informática, na
área de concentração em Banco de Dados.
Orientador:
Prof. Dr. Álvaro C. P. Barbosa
Universidade Federal do Espírito Santo - UFES
Centro Tecnológico
Departamento de Informática
Vitória - ES
2005
Distribuição e Execução de Wrappers em
Ambiente de Grid para o CoDIMS.
COMISSÃO EXAMINADORA
Prof. Dr. Álvaro Cesar Pereira Barbosa
Universidade Federal do Espírito Santo
Orientador
Prof. Dr. Bruno Richard Schulze
Laboratório Nacional de Computação Cientíca
Membro Externo
Prof. Dr. José Gonçalves Pereira Filho
Universidade Federal do Espírito Santo
Membro Interno
Vitória, 21 de junho de 2005.
Dedico esta dissertação aos meus pais, cujo exemplo de
honestidade, trabalho, companheirismo e perseverança
tem sido um norteador para a minha vida. Obrigado por tudo.
Amo vocês.
Agradecimentos
A Deus, pela vida, pelas conquistas e por me dar forças para superar os obstáculos
encontrados no decorrer desses anos.
Ao professor, orientador e amigo Álvaro Cesar Pereira Barbosa pela oportunidade
concedida, pelos ensinamentos e pelas valiosas contribuições no fechamento deste trabalho.
Ao amigo Leonardo Jose Silvestre, companheiro de Mestrado, Graduação, alojamento
(seção 12) e república (ÊtaNóis), pelas inúmeras horas de discussões (e bota inúmeras) que
foram fundamentais para a conclusão deste trabalho e pelos momentos de descontração
(é mui difíci).
Ao meu irmão Edson, por acreditar em mim, pela oportunidade concedida e pela
ajuda constante no decorrer da minha vida, valeu mano!
A minha irmã Rosângela e ao meu cunhado José Ailton dos Santos, pela ajuda e por
me ter como exemplo para os seus lhos.
A minha irmã Maristela, pelo incentivo constante.
Aos meus tios Sinval e Emília, pela ajuda e incentivo. E aos seus lhos, Vinícius,
Thiago e Gabriel, pelo bem querer. Vocês são a minha segunda família.
Aos amigos do LPRM e do mestrado, Gustavo Gaburro, Rodrigo Bonfá, Ricardo Rios,
Camilo, Roberto e Adilson, pela troca de conhecimento e pelos inúmeros momentos de
descontração.
Aos demais professores do DI/UFES, em especial Saulo Bortolon e Davidson Cury,
pelo conhecimento recebido.
A todos aqueles que direta ou indiretamente contribuiram para a realização deste
trabalho.
E nalmente, a Daniele Marinho, pela compreensão em minhas ausências, pelo carinho, pelo companheirismo e por sempre me dar forças e me incentivar nos momentos
difíceis. Sua contribuição foi fundamental para a realização deste trabalho.
Os ignorantes, acham que sabem de tudo, privam-se de
um dos maiores prazeres da vida: APRENDER.
Autor desconhecido
Resumo
Nos dias de hoje, a quantidade de dados disponíveis vem aumentando consideravelmente. Assim, é cada vez mais notável a necessidade de sistemas capazes de prover acesso
integrado a esses dados. Na tentativa de solucionar esse problema, sistemas middleware
de integração de dados, tal como o CoDIMS (Congurable Data Integration Middleware
System), vem sendo desenvolvidos com o objetivo de fornecer, a partir de fontes de dados
essencialmente heterogêneas e distribuídas, uma visão única, uniforme e homogênea.
Para isso, os dados a serem integrados devem ser convertidos para um único modelo de
dados, utilizado pelo sistema integrador e chamado modelo de dados comum. Esta função
é desempenhada pelos wrappers, que, além disso, fazem a comunicação com as fontes de
dados. Na versão atual do CoDIMS, os wrappers estão implementados internamente
no componente de Acesso aos Dados, e executando em um mesmo servidor. Isso causa
sobrecarga deste servidor e, conseqüentemente, um overhead na execução das consultas.
Dentro deste contexto, este trabalho tem por nalidade desacoplar os wrappers do
componente Acesso aos Dados e alocá-los em um ambiente distribuído, mais precisamente,
em um Grid, podendo utilizar de uma maneira consistente, transparente e segura múltiplos
recursos computacionais distribuídos. Isso é feito através da criação de uma camada de
Wrapper -Grid, que estende os serviços Grid dentro do cenário de integração de dados.
Com essa abordagem cria-se a possibilidade de reduzir a sobrecarga do servidor Acesso
aos Dados através da execução, em paralelo, dos wrappers e das sub-consultas. Além disso,
armazena os conjuntos-resultado provenientes da execução das sub-consultas nas fontes
de dados em um ambiente distribuído, permitindo executar o PEC (Plano de Execução
de Consutlas) de forma distribuída.
Abstract
Nowadays the amount of available data is increasing substantially. Thus, the need
of systems to provide integrated access to these data is notable. Middleware systems for
data integration, such as CoDIMS (Congurable Data Integration Middleware System),
are being developed in the attempt to solve this problem. The goal is to supply, from
heterogeneous and distributed data sources, an unique, homogeneous and uniform vision.
To achieve this goal, the data to be integrated must be converted to an unique data
model, used by the integrator system, and called common data model. Wrappers do
this task and communicate with the data sources. The current version of CoDIMS, the
wrappers and Data Access component are in the same server, because the wrappers are
implemented internally in the Data Access component. Thus, generating overload of this
server and overhead in the execution of queries.
In this context, this work has the purpose to decouple wrappers from the Data Access
component and allocate them in a distributed environment, more precisely in a Grid.
Making it is possible to use multiple distributed computational resources in a consistent,
transparent and secure way. To do this, Wrapper-Grid layer was created. It extends the
Grid services inside the data integration scene. This approach makes it possible to reduce
the overload of the Data Access server, with the parallel execution of wrappers and the
sub-quereis. Morover, the result-sets originated from the execution of the sub-queries are
stored in a distributed environment, allowing the query execution plan to be execute in a
distributed form.
Lista de Figuras
1
Camanda intermediária - Middleware. . . . . . . . . . . . . . . . . . . . . . 18
2
Middleware para Integração de Dados. . . . . . . . . . . . . . . . . . . . . 19
3
Wrappers em um sistema integrador . . . . . . . . . . . . . . . . . . . . . . 20
4
Uma possível conguração do CoDIMS (BARBOSA, 2001). . . . . . . . . . 21
5
O CoDIMS e seus componentes básicos. . . . . . . . . . . . . . . . . . . . . 22
6
Arquitetura do CoDIMS-G (FONTES et al., 2004). . . . . . . . . . . . . . . 28
7
Arquitetura de Serviço do OGSA-DAI (OPEN. . . , 2004a). . . . . . . . . . . 29
8
Serviços OGSA-DAI (OPEN. . . , 2004a). . . . . . . . . . . . . . . . . . . . . 30
9
Framework OGSA-DAI: Interação cliente - OGSA-DAI(QI, 2004). . . . . . 30
10
Camada arquitetural do OGSA-DQP (ALPDEMIR et al., 2003a). . . . . . . 31
11
Interação entre os frameworks OGSA-DQP e OGSA-DAI (OPEN. . . , 2004b). 32
12
Interações durante uma execução de consulta no OGSA-DQP (ALPDEMIR
et al., 2003a). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
13
Arquitetura do MOCHA(RODRIGUEZ-MARTINEZ; ROUSSOPOULOS, 2000). 34
14
Arquitetura do MOCHA - RMI. . . . . . . . . . . . . . . . . . . . . . . . . 35
15
Arquitetura do SkyQuery (MALIK et al., 2003). . . . . . . . . . . . . . . . 36
16
Arquitetura de um Grid e seu relacionamento com a arquitetura de protocolo da Internet (FOSTER; KESSELMAN; TUECKE, 2001). . . . . . . . . . 46
17
Arquitetura de um Grid na visão dos programadores de aplicações (FOSTER; KESSELMAN; TUECKE, 2001). . . . . . . . . . . . . . . . . . . . . .
49
18
Uma visão geral do sistema Globus Toolkit (FERREIRA et al., 2002). . . . 50
19
O processo de invocação de um Web Service (SOTOMAYOR, 2003). . . . . 53
20
Tipos de portTypes que um Grid Service pode estender (SOTOMAYOR,
2003). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
21
Interação entre as partes componentes (SOTOMAYOR, 2003).
. . . . . . . 55
22
Arquitetura do CoDIMS sem Grid . . . . . . . . . . . . . . . . . . . . . . . 58
23
Arquitetura do CoDIMS em um ambiente de Grid. . . . . . . . . . . . . . 58
24
Interação entre os sub-componentes do Processmento de Consultas com os
components do CoDIMS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
25
Interação entre a MEC, Acesso aos Dados(AD) e os wrappers para execução
do PEC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
26
Fila de sub-consultas a serem executadas. . . . . . . . . . . . . . . . . . . . 61
27
Wrapper Grid Component (WGC). . . . . . . . . . . . . . . . . . . . . . . 62
28
Em cada WGC existem WSs para todas as fontes. . . . . . . . . . . . . . . 63
29
Criação de uma instância WS. . . . . . . . . . . . . . . . . . . . . . . . . . 64
30
Fila de sub-consultas já executadas. . . . . . . . . . . . . . . . . . . . . . . 65
31
Processo de execução de sub-consutlas de forma assíncrona. . . . . . . . . . 65
32
Exemplo de execução de uma consulta. . . . . . . . . . . . . . . . . . . . . 67
33
Dependência entre os pacotes AcessoDados, ProcessamentoConsulta e Wrap-
per -Grid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
34
Classes do pacote AcessoDados. . . . . . . . . . . . . . . . . . . . . . . . . 69
35
Classe FachadaAcessoDados do pacote AcessoDados. . . . . . . . . . . . . 69
36
Classe ExecutaSubConsulta do pacote AcessoDados. . . . . . . . . . . . . . 70
37
Classe ExecutaWrapperThread do pacote AcessoDados. . . . . . . . . . . . 71
38
Classe NoticaMec do pacote AcessoDados.
39
Classe ConcretObservable do pacote AcessoDados. . . . . . . . . . . . . . . 71
40
Classes do pacote Wrapper -Grid. . . . . . . . . . . . . . . . . . . . . . . . 72
41
Classe WrapperBDImpl do pacote WrapperGrid. . . . . . . . . . . . . . . . 72
42
Classes do pacote ProcessamentoConsulta. . . . . . . . . . . . . . . . . . . 73
. . . . . . . . . . . . . . . . . 71
43
Classe MEC do pacote ProcessamentoConsulta. . . . . . . . . . . . . . . . 74
44
Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
45
Diagrama de sequência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
46
DTD da fonte XML "ambulatorio". . . . . . . . . . . . . . . . . . . . . . . 78
47
Esquema da fonte relacional "paciente".
48
Esquema global visto pelos usuários. . . . . . . . . . . . . . . . . . . . . . 79
49
Consulta enviada ao CoDIMS, na linguagem SQL. . . . . . . . . . . . . . . 79
50
Sub-consulta enviada ao wrapper relacional. . . . . . . . . . . . . . . . . . 80
51
Sub-consulta enviada ao wrapper XML. . . . . . . . . . . . . . . . . . . . . 80
52
Sub-consulta no modelo de dados nativo da fonte (fonte relacional). . . . . 81
53
Infra-estrutura de teste - wrappers centralizados. . . . . . . . . . . . . . . . 82
54
Infra-estrutura de teste - wrappers centralizados - dividida em camadas. . . 83
55
Descrição do serviço Grid WrapperWSImpl em GWSDL. . . . . . . . . . . 84
56
Descrição do serviço Grid WrapperBDImpl em GWSDL. . . . . . . . . . . 85
57
Infra-estrutura de teste - wrappers distribuídos. . . . . . . . . . . . . . . . 86
58
Infra-estrutura de teste - wrappers distribuídos - dividida em camadas. . . 87
59
Gráco de comparação entre as duas abordagens: Centralizada concor-
. . . . . . . . . . . . . . . . . . . 78
rente; Distribuída. Fontes de dados: Bancos relacionais. . . . . . . . . . . . 89
60
Gráco de comparação entre as duas abordagens: Centralizada concorrente; Distribuída. Conjuntos-resultado com tamanho xos. . . . . . . . . . 89
Lista de Tabelas
1
Comparação entre os sistemas. . . . . . . . . . . . . . . . . . . . . . . . . . 37
2
Conguração das partes integrantes da infra-estrutura de teste centralizada. 82
3
Conguração das partes integrantes da infra-estrutura de teste distribuída.
86
Lista de abreviaturas e siglas
CoDIMS
Congurable Data Integration Middleware System
DAISGR
Data Access and Integration Service Group Registry
DAP
Fornecedor de Acesso aos Dados
DQEP
Plano de execução de consulta distrubuído
GDQS
Grid Distributed Query Service
GDS
Grid Data Services
GDSF
Grid Data Services Factories
GQES
Grid Query Evaluation Service
GSH
Grid Service Handle
GSR
Grid Service Reference
GWSDL
Grid Web Services Description Language
MDC
Modelo de Dados Comum
MEC
Máquina de Execução de Consultas
MM
Gerenciador de Metadados
OGSA
Open Grid Services Architecture
OGSI
Open Grid Services Infrastructure
OV
Organização Virtual
PEC
Plano de Execução de Consutlas
QE
Máquina de Consulta
QEM
Gerenciador da Máquina de Execução
QO
Otimizador de Consulta
QPC
Coordenador de Processamento de Consultas
SDE
Service Data Elements
SGBDs
Sistemas Gerendiadores de Banco de Dados
UDDI
Universal Description, Discover and Integration
UML
Unied Modeling Language
URI
Uniform Resource Identier
WGC
Componentes Wrapper Grid
WSDL
Web Services Description Language
Sumário
1 Introdução
1.1
16
Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1.1
Middleware para Integração de Dados . . . . . . . . . . . . . . . . . 17
1.1.2
Wrappers
1.1.3
CoDIMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2
Motivação do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3
Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.4
Contribuições Esperadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.5
Metodologia de Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.6
Organização da Dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2 Trabalhos Relacionados
27
2.1
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2
CoDIMS-G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3
OGSA-DAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4
OGSA-DQP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5
MOCHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.6
SkyQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3 Conceitos e Tecnologias
3.1
38
GRID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.1
Benefícios de um Grid . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2
Grid vs Computação Distribuída
. . . . . . . . . . . . . . . . . . . . . . . 42
3.3
Grid vs Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.1
Deciência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.2
Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.3
3.3.2.1
Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.2.2
Descrição da Arquitetura de Grid . . . . . . . . . . . . . . 45
Ferramentas de Desenvolvimento . . . . . . . . . . . . . . . . . . . 49
3.3.3.1
Globus Toolkit . . . . . . . . . . . . . . . . . . . . . . . . 49
4 Especicação Funcional
57
4.1
A Camada de Wrapper-Grid do CoDIMS . . . . . . . . . . . . . . . . . . . 57
4.2
Componente Wrapper Grid - WGC . . . . . . . . . . . . . . . . . . . . . . 60
5 Modelagem
5.1
5.2
68
Diagramas de Pacotes e de Classes . . . . . . . . . . . . . . . . . . . . . . 68
5.1.1
Classes do pacote AcessoDados . . . . . . . . . . . . . . . . . . . . 68
5.1.2
Classes do pacote Wrapper-Grid . . . . . . . . . . . . . . . . . . . . 71
5.1.3
Classes do pacote ProcessamentoConsulta . . . . . . . . . . . . . . 73
Diagrama de Sequência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6 Estudo de Caso
77
6.1
Descrição da Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2
Cenários de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.3
6.2.1
Centralizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.2
Distribuído . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7 Conclusões
91
7.1
Conclusões gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.2
Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.3
Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Referências
96
16
1
Introdução
1.1 Contexto
Com a globalização da economia, a internacionalização das empresas, o aumento dos
negócios e com a conseqüente competitividade de mercado, surgiu a necessidade da criação de mecanismos que atendam aos requisitos deste novo cenário, em um tempo cada
vez menor. O advento da Internet e a criação das redes de alta velocidade viabilizaram
uma diminuição das distâncias no que se refere à localização das fontes de dados. Dentro
deste cenário, torna-se necessário prover uma infra-estrutura de suporte às aplicações que
demandem uma visão integrada dos dados que estão armazenados em diferentes fontes,
que podem estar localizados em diferentes partes dentro de uma empresa, em diferentes empresas localizadas em um mesmo país ou em países distintos, e armazenados em
plataformas operacionais diferentes (HAKIMPOUR; GEPPERT, 2001). Na tentativa de
fornecer uma solução para esse problema, sistemas de integração de dados vêm sendo
desenvolvidos.
A integração de dados de múltiplas fontes é um problema que vem demandando pesquisa na comunidade de Banco de Dados por mais de uma década (SHETH; LARSON,
1990; LITWIN; MARK; ROUSSOPOULOS, 1990; SILBERSCHATZ; ZDONIK, 1997; ABITEBOUL et al., 2003; HALEVY, 2003; BIANCARDI; SILVESTRE; BARBOSA, 2004; ZIEGLER;
DITTRICH, 2004), tendo recebido, nos últimos anos, um impulso signicativo, devido à
necessidade de se integrar a grande quantidade de informação disseminada. Integração
de dados refere-se a combinar dados heterogêneos e distribuídos de forma que uma única
visão, uniforme e homogênea, seja apresentada para o usuário (HAKIMPOUR; GEPPERT,
2001).
As plataformas operacionais de integração de dados, são, geralmente, formadas por sistemas de hardware e software distribuídos, heterogêneos e autônomos. A heterogeneidade
se manifesta sob diferentes formas, tais como: diferentes sistemas operacionais, modelos
de dados, servidores de dados, sistemas de comunicação e hardware. Já a autonomia está
17
relacionada ao fato de cada sistema operar sob um controle local. A distribuiçâo, heterogeneidade e autonomia são representadas como dimensões ortogonais entre si (ÖZSU;
VALDURIEZ, 2001; HASSELBRING, 2000).
Muitas aplicações necessitam de informações de diversas fontes, onde os dados relacionados podem diferir tanto na representação quanto na tecnologia utilizada para o armazenamento. Diversos tipos de soluções para o problema de integração de dados têm sido
propostas. Historicamente, pode-se destacar os Sistemas de Gerenciamento de Bancos de
Dados Heterogêneos (SGBDH) (LITWIN; MARK; ROUSSOPOULOS, 1990; SHETH; LARSON, 1990; THOMAS et al., 1990; PITOURA; BUKHRES; ELMAGARMID, 1995; SILBERSCHATZ; ZDONIK, 1997; CONRAD et al., 1997) e os Sistemas Mediadores (WIEDERHOLD;
GENESERETH, 1997; WIEDERHOLD, 1998). Mais recentemente, sistemas integradores
têm sido classicados, de uma maneira geral, como middleware para integração de dados
(BARBOSA, 2001; HAAS; MILLER; AL., 1999; RODRIGUEZ-MARTINEZ; ROUSSOPOULOS, 2000). Isto porque, para a integração destes dados, a maioria dos sistemas propostos
apresenta uma arquitetura semelhante às denidas nos ambientes cliente/servidor de três
camadas: uma representando as fontes de dados a serem interligadas; outra representando as aplicações clientes; e a camada intermediária com a função de integração de
dados, surgindo então o conceito de middleware para integração de dados (BARBOSA,
2001).
1.1.1
Middleware para Integração de Dados
Middleware é um componente de software que tem a nalidade de interligar processos
clientes a processos servidores, disponibilizando um conjunto de serviços e visando reduzir
a complexidade do desenvolvimento e da execução de uma aplicação (BARBOSA, 2001).
Também pode ser visto como uma ferramenta que libera os desenvolvedores de se envolver
com detalhes de cada fonte (LINTHICUM, 1997), sendo uma camada que existe entre
a aplicação cliente e as complexidades da rede, do sistema operacional e dos possíveis
servidores de recursos, em particular os servidores de dados (Figura 1).
Um middleware deve possuir interfaces padronizadas e protocolos de comunicação
para possibilitar a distribuição, portabilidade e interoperabilidade entre aplicações. A
descrição de uma interface é composta pelas assinaturas completas das operações (métodos) oferecidas, incluindo o nome, tipo do valor de retorno, tipos dos parâmetros e
exceções.
O objetivo de um middleware para integração de dados é fornecer informação inte-
18
Figura 1: Camanda intermediária - Middleware.
grada sem a necessidade de se integrar as fontes de dados, ou seja, um mediador permite
a interoperação de informação, somente selecionando resultados derivados das fontes de
dados (KIM, 1995) (WIEDERHOLD, 1999). Ele permite o acesso e a recuperação de dados relevantes de múltiplas fontes heterogêneas, a abstração e a transformação dos dados
recuperados (homogeneização), a integração dos dados e o seu processamento para disponibilizar o resultado, liberando assim o seu usuário de enviar a consulta diretamente para
as fontes de dados, de conhecer detalhes e de interagir, individualmente, com elas.
Para viabilizar a integração de dados, torna-se necessário realizar a integração de
esquemas (RAHM; BERNSTEIN, 2001). O problema é que os esquemas dos diferentes
bancos de dados componentes podem estar expressos em diferentes modelos de dados.
Assim, torna-se necessário, inicialmente, transformar todos os esquemas para um mesmo
modelo de dados, denominado de Modelo de Dados Comum (MDC). No caso de sistemas
componentes não baseados em banco de dados, deverá existir um mecanismo que simule
a existência de um esquema (metadados) para permitir o processo de integração. O esquema conceitual de cada banco de dados componente é denominado de esquema local.
Este esquema, expresso no modelo de dados do sistema componente, deve ser transformado para o MDC para poder ser integrado. O esquema derivado desta transformação
é denominado de esquema de exportação. Um esquema global (ou federado ), descrito no
MDC, é então criado pela integração de múltiplos esquemas de exportação. Finalmente,
são denidos os esquemas externos (visões ) sobre o esquema global, para atender às necessidades de um grupo especíco de usuários ou de aplicações, ou ainda, por razões de
19
controle de acesso. Para efetuar a tradução entre modelos (esquema externo para esquema
local ) são utilizados os wrappers (W1, W2, W3 e Wn na Figura 2).
Figura 2: Middleware para Integração de Dados.
1.1.2
Wrappers
São programas que encapsulam fontes de dados e são usados para fazer a tradução
entre o modelo de dados comum, utilizado no sistema integrador, e o modelo de dados de
cada fonte. Por exemplo, para se integrar três fontes, sendo a primeira XML, a segunda
Relacional e a terceira Orientada a Objetos, assumindo o modelo global com sendo Relacional, deve-se primeiro converter de XML e OO para Relacional possibilitando realizar
a integração (Figura 3). Tal conversão é realizada pelos wrappers. Além disso, eles são
utilizados para prover a comunicação com as fontes de dados.
Segundo (OBJECT. . . , 1997) os wrappers podem ser classicados em classes, de acordo
com as suas funcionalidades:
• Genérica: refere-se às operações de acordo com o tipo de fonte de dados. Por
exemplo, conversões de consulta SQL3 para SQL;
20
Figura 3: Wrappers em um sistema integrador
• Fonte especíca: diz respeito às operações de acordo com o conteúdo da fonte de
dados. Por exemplo, operações sobre o esquema da fonte de dados;
• Estrutura de controle: corresponde ao modo em que as requisições e as respostas
são passadas. Por exemplo, uma fonte de dados pode ser traduzida por um wrapper
assíncrono que armazena respostas até que uma requisição seja efetuada;
• Relatórios de erros: wrappers podem retornar erros para quem o chamou, noticando
mensagens de erro gerada pela fonte de dados, como por exemplo: erro de conversão
para o formato desejado ou erro de uma operação de recuperação;
• Chamada para serviços externos: wrappers podem chamar serviços externos para
executar serviços mais complexos do que aqueles executados pelo wrapper. Um
exemplo seria o uso de uma máquina de ontologia externa para transformar semanticamente uma consulta antes de ser encaminhada para o wrapper da fonte.
Para realizar a seleção de wrappers, a ser usado pelo middleware, devem ser analisadas
quais as fontes de dados serão tratadas pelos mesmos, se elas estão bem documentadas,
quais são as suas funções, como foram construídas e as arquiteturas internas das fontes.
Além disso, é importante ter em mente o local no qual os wrappers irão executar. Assim,
os wrappers são de fundamental importância para os sistemas middleware de integração
de dados.
21
1.1.3 CoDIMS
O CoDIMS (Congurable Data Integration Middleware System ) (BARBOSA, 2001;
BARBOSA; PORTO; MELO, 2002; TREVISOL, 2004) é um middleware para integração
de dados que vem sendo desenvolvido pelo grupo de pesquisa em Banco de Dados da
Universidade Federal do Espírito Santo - UFES. Sua principal característica é o fato de
ser baseado na técnica de composição de frameworks, possibilitando, com isso, exibilidade e conguração, podendo ser adaptado para ser utilizado em diversos domínios de
aplicação que exigem diferentes tipos de serviços (BARBOSA, 2001). Flexível, no sentido
de que permite: integrar diferentes fontes de dados; utilizar diferentes técnicas de comunicação, tanto entre os componentes internos quanto com as fontes de dados; possibilitar
a utilização de diferentes modelos de dados internamente. Congurável, de forma que
o middleware pode ser congurado apenas com os componentes necessários para uma
aplicação especíca e que seja instanciado de acordo com os requisitos da aplicação e das
características das fontes de dados que se deseja integrar.
Figura 4: Uma possível conguração do CoDIMS (BARBOSA, 2001).
A Figura 4 mostra uma possível conguração do CoDIMS. Os componentes Controle, Gerência de Metadados, Processamento de Consultas e Acesso aos Dados são os
componentes básicos, ou seja, aqueles que devem existir em todas as congurações. Já
os componentes Gerência de Regras, Gerência de Transação, Controle de Concorrência
poderiam não estar presentes, dependendo do domínio da aplicação para o qual está sendo
gerado o sistema. Já aplicações mais complexas, como por exemplo aquelas que tratam
dados no formato de multimídia, podem requisitar novas funcionalidades, que devem ser
incorporadas quando do processo de conguração, através da inclusão de novos compo-
22
nentes.
Na Figura 5, é mostrada uma conguração do CoDIMS com seus componentes básicos,
assim como as possíveis interações entre os mesmos. O componente Controle é a essência
do ambiente CoDIMS, pelo fato de disponibilizar os mecanismos que implementam as
congurações física e lógica. A conguração física diz respeito à seleção e ao registro dos
componentes que farão parte do sistema a ser congurado, incluindo os serviços oferecidos
e requisitados por cada um destes componentes. A conguração lógica é modelada através
de um mecanismo baseado no conceito de workow, sendo responsável por efetuar um
escalonamento dos serviços, ou seja, determinar a seqüência de execução dos serviços
oferecidos pelos componentes necessários para o processamento de um comando submetido
ao sistema congurado. O componente Gerência de Metadados é responsável por gerenciar
os esquemas envolvidos no processo de integração de dados. O componente Processamento
de Consulta analisa, re-escreve, otimiza e executa as consultas de usuário submetidas ao
sistema. Por m o componente Acesso aos Dados é responsável por, através dos wrappers,
traduzir e encaminhar as sub-consultas a serem executadas sobre as fontes de dados e
recuperar os resultados das mesmas. É importante ressaltar que, na versão atual do
CoDIMS, seus componentes são implementados como Web Services (TREVISOL, 2004).
Figura 5: O CoDIMS e seus componentes básicos.
Para o processo de conguração, customização e modelagem de uma instância do
CoDIMS, são necessárias as etapas de conguração física, conguração lógica e carga dos
metadados
1
de acordo com os requisitos de uma aplicação especíca. Um exemplo de
instância do framework CoDIMS é o CoDIMS-G (FONTES et al., 2004), que vem sendo
1 Para
uma descrição mais detalhada do processo de conguração consulte (BARBOSA, 2001).
23
desenvolvida no LNCC
2
com o objetivo de suportar aplicações de visualização cientícas
executando em um ambiente de Grid.
Congurada uma certa instância do CoDIMS, um usuário, através de uma aplicação
Web, submete sua consulta, que é repassada para a camada de Integração. Nesta camada, o componente Controle é responsável por receber a consulta e repassá-la para o
componente Processamento de Consultas. Este componente interpreta e analisa a consulta global recebida, produz as sub-consultas que serão submetidas a cada uma das fontes
de dados, gera um plano de execução global otimizado e procede a execução da consulta.
As sub-consultas geradas são encaminhadas para o componente Acesso aos Dados que,
por sua vez, as repassa para os wrappers. Estes exercem papel de tradução entre modelos e comunicação com as fontes, ou seja, recebem do componente Acesso aos Dados
uma sub-consulta no MDC do CoDIMS, convertem-na para o modelo da respectiva fonte,
interagem com a fonte gerando o resultado da sub-consulta, convertem o resultado para
o MDC e o enviam para o componente Acesso aos Dados, que repassa o mesmo para o
componente Processamento de Consulta para que seja feita a composição do resultado
nal, a partir dos resultados das diversas sub-consultas.
No processo atual de desenvolvimento do CoDIMS, estão sendo avaliadas e incorporadas técnicas recentes ou difundidas, objetivando, por exemplo, aprimorar a execução das
sub-consultas pelos wrappers.
1.2 Motivação do Trabalho
A integração de dados heterogêneos e distribuídos tem recebido grande atenção da
comunidade de pesquisa em banco de dados. Na literatura, diversos sistemas e propostas
são encontrados, focando em tal problema. O número considerável de soluções pode,
erroneamente, indicar um problema já resolvido. Pelo contrário, é um tópico importante,
com diversas questões em aberto, o que pode ser observado por publicações recentes
(ZIEGLER; DITTRICH, 2004).
Uma das questões é: como incrementar o desempenho dos sistemas de integração?
Para isso, é importante tirar vantagem dos recursos disponíveis, distribuídos no ambiente.
Isso pode ser feito pela distribuição das funcionalidades do sistema, tais como processamento de consultas e execução de wrappers. Para tanto, é importante que sejam avaliadas, dentre as abordagens de computação distribuída, aquelas que permitam uma melhor
2 Laboratório
Nacional de Computação Cientíca - http://www.lncc.br/frame.html
24
utilização dos recursos disponíveis, possibilitando a distribuição de funcionalidades e, conseqüentemente, a execução paralela de tarefas. Por sua vez, um ambiente computacional
de Grid (FOSTER et al., 2002; FOSTER, 2002) é aquele no qual aplicações podem utilizar,
de forma segura, coordenada, efetiva e transparente, recursos computacionais múltiplos
que podem estar dispersos geogracamente. Considerando que o ambiente de integração
de dados é essencialmente distribuído, e que as execuções dos wrappers são independentes
entre si, o uso da tecnologia de Grid mostra-se como uma boa opção. No que diz respeito
aos bancos de dados, têm sido propostos padrões para o desenvolvimento de serviços Grid
de banco de dados, com foco principalmente em prover acesso consistente a bancos de
dados existentes e autônomos (GRIDFORUM, 2004).
Na versão atual do CoDIMS, os wrappers estão implementados internamente no componente Acesso aos Dados, e executando em um mesmo servidor. Isso acarreta sobrecarga
desse servidor, quando os conjuntos-resultado provenientes das sub-consultas, executadas
nas fontes de dados, começam a crescer. Isso porque existe uma concorrência pelos recursos de uma única máquina, gerando lentidão na sua execução e, conseqüentemente, no
sistema integrador como um todo.
Dessa forma, no caso dos wrappers, torna-se interessante que os mesmos possam ser
executados em máquinas distribuídas, para:
• reduzir a carga do servidor Acesso aos Dados;
• serem executados em paralelo;
• permitir executar, em paralelo, as sub-consultas a serem encaminhadas a cada fonte
de dados;
• permitir armazenar o conjunto resultado proveniente da execução de cada subconsulta em um ambiente distribuído, permitindo o uso de transações distribuídas
(ÖZSU; VALDURIEZ, 2001) durante a execução do Plano de Execução de Consultas
(PEC).
Assim, os sistemas de integração de dados, tal como o CoDIMS, podem se beneciar
de um ambiente de Grid para obter um melhor desempenho, pela alocação de wrappers
em nós de Grid para que os mesmos possam ser executados em paralelo.
25
1.3 Objetivo
O objetivo principal deste trabalho é incorporar ao CoDIMS uma sistemática de distribuição e execução de wrappers em um ambiente distribuído, de forma que se possa
utilizar de uma maneira consistente, transparente e segura múltiplos recursos computacionais distribuídos, visando com isso um melhor desempenho do sistema como um todo e
uma redução do tempo de resposta na execução das consultas.
1.4 Contribuições Esperadas
Este trabalho apresenta uma proposta para estender o CoDIMS com um mecanismo
de distribuição, alocação e execução de seus wrappers em um ambiente de Grid, através da incorporação de uma nova camada denominada Wrapper-Grid. A partir desta
abordagem, espera-se os seguintes resultados: execução em paralelo das sub-consultas a
serem encaminhadas a cada fonte de dados; execução em paralelo dos wrappers, através
da alocação destes em um ambiente distribuído, mais precisamente alocação de instâncias
Wrapper-Services em nós de um Grid; disponibilização dos conjuntos resultados oriundos
das fontes de dados em um ambiente distribuído, proporcionando a execução distribuída
do PEC, objetivando um melhor desempenho; especicação e incorporação da camada de
Wrapper -Grid e do seus componentes (Componentes Wrappers -Grid); redução da carga
do servidor Acesso aos Dados; criação de uma infra-estrutura de Grid; implementação
de um protótipo com relação ao estudo de caso; implementação de uma la para troca
de mensagens entre os componentes Processamento de Consultas (MEC) e o componente
Acesso aos Dados, permitindo a execução assíncrona e distribuída do PEC.
1.5 Metodologia de Trabalho
Para a realização deste trabalho foi necessário um estudo profundo sobre o tema de
integração de dados heterogêneos e distribuídos, e sobre os trabalhos mais diretamente
relacionados, vericando seus pontos positivos e deciências. Além disso, foram analisadas as algumas tecnologias de computação distribuída levando em consideração as suas
vantagens e desvantagens, objetivando com isso escolher a mais adequada para ser usada
neste trabalho. Após este passo, foi criada uma infra-estrutura de Grid com a nalidade
de suportar a distribuição das funcionalidades do CoDIMS e criados serviços Grid que
encapsulam as funcionalidades dos wrappers. Foram estudados alguns padrões de pro-
26
jeto para a implementação de um mecanismo de noticação assíncrono através de las
de mensagens para a execução de sub-consultas. Foi elaborada a especicação funcional,
a respectiva modelagem em UML (Unied Modeling Language ) e a implementação do
presente trabalho. Por m, foram denidas estratégias para a execução de testes com o
objetivo de vericar a eciência da sistemática proposta.
1.6 Organização da Dissertação
O restante deste trabalho é organizado nos seguitnes capítulos:
• No capítulo 2, são apresentados e discutidos alguns trabalhos existentes na literatura
sobre a integração de dados heterogêneos e distribuídos, relacionados com o presente
trabalho;
• No capítulo 3, são apresentados alguns conceitos e tecnologias estudadas para a
realização deste trabalho, tais como: Computação distribuída, Cluster, Grid, Servico
Web, Serviço Grid, OGSA, OGSI, Globus Toolkit ;
• No capítulo 4, é apresentada a especicação funcional deste trabalho, descrevendo
a arquitetura do CoDIMS em ambiente de Grid; a camada de Wrapper - Grid e seus
componentes; e o seu funcionamento;
• No capítulo 5, é apresentada a modelagem UML do trabalho, bem como a descrição
das principais classes;
• No capítulo 6, é apresentado um estudo de caso;
• No capítulo 7, é apresentada uma síntese do trabalho realizado, suas principais
contribuições e a indicação de alguns trabalhos futuros para a continuidade desta
pesquisa.
Por m, são listadas as referências utilizadas.
27
2
Trabalhos Relacionados
2.1 Introdução
Na literatura da área, são encontrados diversos sistemas e propostas tentando resolver
o problema de integração de dados. Dentre eles e mais diretamente relacionados à proposta do presente trabalho, ou seja, que buscam distribuir funcionalidades, encontram-se:
CoDIMS-G (PORTO et al., 2004; FONTES et al., 2004; SILVA et al., 2004), OGSA-DAI
(ATKINSON; BAXTER; HONG, 2002; OPEN. . . , 2004a), OGSA-DQP (ALPDEMIR et al.,
2003a; OPEN. . . , 2004b), MOCHA (MIDDLEWARE. . . , 2000; RODRIGUEZ-MARTINEZ;
ROUSSOPOULOS, 2000; RODRIGUEZ-MARTINEZ et al., 2000; MART; ROUSSOPOULOS,
2000) e SkyQuery (MALIK et al., 2003). A seguir, os mesmos serão descritos em maiores
detalhes.
2.2 CoDIMS-G
O CoDIMS-G (PORTO et al., 2004; FONTES et al., 2004; SILVA et al., 2004) é um
sistema de integração de dados e programas gerado a partir de uma conguração do CoDIMS (BARBOSA; PORTO; MELO, 2002; BARBOSA, 2001), que vem sendo desenvolvido
no LNCC. Também pode ser visto como um serviço de integração de dados e programas
para Grid, o qual fornece para os usuários um acesso transparente para dados e programas
distribuídos no Grid, assim como gerenciamento e alocação de recursos dinâmicos. Nele
também é proposto um novo algoritmo de escalonamento de nós e projetada uma máquina
de consulta distribuída adaptativa para o ambiente de Grid. Assim, no CoDIMS-G, os
usuários podem expressar consultas que combinam processamento distribuído de dados
com a invocação de programas sobre os mesmos.
A arquitetura do CoDIMS-G pode ser observada na Figura 6. Nela, o componente
Controle (Control ) armazena, gerencia, valida e verica uma instância de conguração.
O Controle orquestra a comunicação entre os componentes. Usuários acessam o serviço
28
Figura 6: Arquitetura do CoDIMS-G (FONTES et al., 2004).
através uma aplicação Web. A requisição de um usuário é encaminhada para o componente Controle, que a envia para o componente Analisador (Parser ). Este transforma
a requisição do usuário em uma representação de grafo de consulta. O Otimizador de
Consulta (Query Optimizer - QO) recebe o grafo e gera um plano de execução de consulta distribuído (DQEP), usando um modelo de custo baseado em estatísticas de dados e
programas armazenadas no Gerenciador de Metadados (Metadata Manager - MM). Para
DQEPs que incluem operações para a avaliação de programas de uso paralelo, o otimizador chama o componente Escalonador (Scheduler - SC). Este último acessa o MM para
capturar o histórico de desempenho de execução de nós do Grid e custos de avaliação de
programas de usuário, além de estatísticas dos resultados intermediários. Baseado nas
estatísticas coletadas, o SC aplica um algoritmo de escalonamento de nós do Grid para
encontrar um sub-conjunto de nós a serem alocados pelo gerenciador da máquina de execução (Query Engine Manager - QEM), onde serão executados os programas do usuário.
O QEM é responsável por implantar os serviços da máquina de execução de consulta (QE)
nos nós especicados no DQEP, e gerenciar os seus ciclos de vida durante a execução da
consulta. O QEM gerencia o desempenho, em tempo real, dos QEs por consultar as estatísticas de vazão de dados e decidir por realocação, em tempo de execução, das QEs
com um plano re-otimizado. Os QEs são implementados como instâncias do framework
de execução de consulta (AYRES; PORTO; MELO, ). Cada QE recebe um fragmento de
um DQEP completo, e é responsável pela instanciação dos operadores e pelo controle de
execução, incluindo a comunicação com outros fragmentos para recuperação das tuplas.
Como parte do DQEP, o operador scan acessa as fontes de dados com wrappers, que
preparam os dados de acordo com o formato de dados comum.
O CoDIMS-G está voltado para o desenvolvimento de soluções para problemas de
29
aplicações cientícas, tal como o desenvolvimento de um serviço para suportar um estágio
de processamento de aplicações de visualização cientíca que simulam um uxo de uído
através de um caminho (PORTO et al., 2004). Nesse sentido, o CoDIMS-G usa o ambiente
de Grid para a execução em paralelo de programas sobre uma grande base de dados, não
tendo o objetivo de ser uma extensão do CoDIMS de forma a adaptá-lo, de maneira mais
geral, ao ambiente de Grid para efetuar integração de dados essencialmente heterogêneos
e distribuídos.
2.3 OGSA-DAI
O projeto OGSA-DAI (Open Grid Service Architecture Data Access and Integration )
(ATKINSON; BAXTER; HONG, 2002; OPEN. . . , 2004a) visa construir um middleware
para ajudar no acesso e integração de dados a partir de fontes de dados via Grid. Ele
permite a representação de banco de dados como serviços Grid, que são então acessíveis a
partir de outras máquinas de uma maneira segura e transparente. Com isso o OGSA-DAI
possibilita expor as fontes de dados para o mundo, baseando-se na abordagem de serviços
Grid, tendo como base o middleware Globus Tookit (GLOBUS, 2004). A gura 7 ilustra
a arquitetura de serviço do OGSA-DAI.
Figura 7: Arquitetura de Serviço do OGSA-DAI (OPEN. . . , 2004a).
Três principais tipos de serviços (Figura 8) são denidos para descoberta e acesso
a recursos: Data Access and Integration Service Group Registry (DAISGR), Grid Data
Services Factories (GDSF) e o Grid Data Services (GDS). O DAISGR é um serviço persistente que fornece a informação necessária para clientes descobrirem serviços e recursos
dinamicamente. O DAISGR lista as GDSFs que fornecem um método persistente para a
criação de GDSs. A gura 8 representa este procedimento.
O GDS fornece uma representação transiente e statefull de alguns recursos de dados
30
Figura 8: Serviços OGSA-DAI (OPEN. . . , 2004a).
ou serviços, sob os quais um número de atividades pré-denidas podem ser executadas
(MUNRO, 2004). Ele representa um link primário para o banco de dado sendo acessado,
podendo ser usado para funções de acesso, integração e entrega de dados. Assim, uma
instância de GDS pode interagir com um banco de dados para criar, recuperar, atualizar ou
remover dados. O GDS é a contribuição central do OGSA-DAI (ALPDEMIR et al., 2003b).
O cliente interage com o GDS por enviar um documento escrito em XML, chamado de
Perform. Este documento contém descrições de uma ou mais atividades que o GDS deverá
executar. A Figura 9 ilustra o framework básico do OGSA-DAI para a interação com
um cliente.
Figura 9: Framework OGSA-DAI: Interação cliente - OGSA-DAI(QI, 2004).
Apesar do OGSA-DAI ser uma implementação de referência sobre acesso e integração
de dados do Global Grid Forum (GLOBAL. . . , 2004), neste trabalho não é feito o uso do
mesmo pois, não foram encontradas as funcionalidades de tradução de modelos, mapeamentos e conversões. Segundo (ATKINSON, 2004), muitos desaos importantes ainda
permanecem em aberto OGSA-DAI, como, por exemplo: adaptação automática de esquemas e transformação nos dados em resposta à mudanças nas fontes; otimização integrada
de computação, gerenciamento e movimentação de dados; apresentação em alto nível de
transformação, composição, análise de dados e operações.
31
2.4 OGSA-DQP
OGSA-DQP (Open Grid Service Architecture - Distributed Query Processor ) (ALPDEMIR et al., 2003a; OPEN. . . , 2004b) é um framework de integração de dados e orquestração
de serviços no qual é possível fazer a coordenação e a incorporação de serviços Web para
efetuar análise e recuperação de dados (ALPDEMIR et al., 2003a).
Figura 10: Camada arquitetural do OGSA-DQP (ALPDEMIR et al., 2003a).
Como pode ser observado na Figura 10, o OGSA-DQP usa os serviços oferecidos
pelo framework OGSA-DAI para acessar, de forma homogênea, as fontes de dados, potencialmente heterogênas. Em um nível menor, temos a camada GT3, que é usada tanto
pelo OGSA-DAI quanto pelo OGSA-DQP para criação de instâncias, acesso do estado
e gerenciamento do tempo de vida das instâncias de serviços. A Figura 11 mostra a
interação entre os frameworks OGSA-DQP e OGSA-DAI.
No OGSA-DQP, instâncias de serviço de execução de consulta são implantadas em nós
de Grid para implementar paralelismo de programas de usuário. Operadores algébricos,
tais como exchange e operation-call, implementam comunicação entre nós e invocação de
programas de usuário, respectivamente.
Para cumprir com as suas funções, OGSA-DQP fornece dois serviços: O Grid Dis-
tributed Query Service (GDQS) e o Grid Query Evaluation Service (GQES). O GDQS é
construído sobre o Polar* (SMITH et al., 2002), encapsulando as funcionalidades de compilação e otimização. O GDQS fornece uma interface primária para o usuário e atua como
um coordenador entre a máquina de otimização/compilação de consultas e as instâncias
GQES. O GQES, por outro lado, é usado para avaliar um sub-plano de consulta associado
a ele pelo GDQS. O número de instâncias GQES e sua localização no Grid é especicado
pelo GDQS baseado nas decisões tomadas pelo otimizador, e representado como um escalonamento para partições de consulta (sub-planos). As instâncias GDES são criadas e
32
Figura 11: Interação entre os frameworks OGSA-DQP e OGSA-DAI (OPEN. . . , 2004b).
escalonadas dinamicamente e suas interações coordenadas pelo GDQS.
Um cliente, assim como no OGSA-DAI, pode submeter uma consulta embutida dentro de um documento XML chamado Perform. Essa consulta é compilada e otimizada
dentro de um plano de execução de consulta, cujas partições são escalonadas para serem
executadas em diferentes instâncias GQES. O GDQS usa esta informação para criar instâncias GQES em seus nós de execução, e dispacha os sub-planos para serem executados
em seus respectivos GQES. GQES podem interagir com outras instâncias GDS para obter
dados. Os resultados se propagam através das instâncias GQES até alcançarem o cliente.
Esta visão geral das interações durante uma execução de consulta poder ser observada na
Figura 12.
Assim como o OGSA-DAI, o OGSA-DQP possui algumas restrições que devem ser
explicadas. Dentre elas estão as que foram herdadas do próprio OGSA-DAI, já que o
mesmo é utilizado pelo OGSA-DQP, e outras pertencentes somente ao OGSA-DQP. Uma
delas está relacionada com a obtenção dos esquemas das fontes de dados, pois nenhuma
integração de esquemas e resolução de conitos é suportada durante a importação dos
esquemas. Os esquemas importados são simplesmente acumulados e mantidos localmente.
Isso pode ocasionar diculdades ao usuário nal, pois ele terá que integrar, de maneira
manual, os esquemas e resolver conitos semânticos e/ou estruturais entre os mesmos. Um
outra restrição diz respeito ao plano de execução de consulta gerado pelo OGSA-DQP, o
33
Figura 12: Interações durante uma execução de consulta no OGSA-DQP (ALPDEMIR et
al., 2003a).
qual é estático. Além disso, existe a possibilidade de um ou mais nós alocados para este
plano estático carem sobrecarregados, ou a fonte com a qual eles se comunicam não estar
mais respondendo. Neste sentido, no OGSA-DQP, não é possível fazer uma análise, em
tempo de execução, dos nós alocados no Grid para que, se necessário, seja feita a geração
de um novo plano e a realocação dos seus operadores.
2.5 MOCHA
MOCHA (Middleware Based On a Code SHipping Architecture ) (MIDDLEWARE. . . ,
2000) é um sistema middleware projetado para interconectar fontes de dados distribuídas sobre uma grande área de rede (RODRIGUEZ-MARTINEZ et al., 2000). MOCHA é
construído baseado na noção de que um middlware, para um ambiente distribuído, deve
ser auto-extensível (RODRIGUEZ-MARTINEZ; ROUSSOPOULOS, 2000). Isso signica que
novos tipos de dados e operadores especícos de uma aplicação, necessários para o processamento de uma consulta, são implantados em sites remotos de uma maneira automática
pelo sistema middleware. No MOCHA, isto é realizado através do envio de classes Java,
implementando estes tipos ou operadores, para o site remoto, onde eles podem ser usados
para manipular dados de seu interesse. Todas as classes Java são primeiro armazenadas
em um ou mais repositórios de dados, a partir do qual são posteriormente recuperados e implantados de acordo com suas necessidades. O objetivo principal da idéia de
34
implantação automática de código é suprir a necessidade por componentes de processamento especícos da aplicação em sites remotos que não os fornecem. Assim, MOCHA
capitaliza-se em sua habilidade de implantação de código automática para fornecer um
serviço de processamento de consulta eciente. Pelo fato de enviar código de operadores
de consulta, MOCHA pode produzir planos ecientes que colocam poderosos operadores
de redução de dados (ltros) para executarem nas fontes de dados, diminuindo com isso
o tráfego que dados entre o site e o sistema.
A motivação do MOCHA é que os dados armazenados em diversos sites são baseados
em tipos de dados complexos, e que a Web tem se tornado, de fato, uma interface de usuário para aplicações em rede. Assim, os usuários necessitam de uma solução que permita,
facilmente, integrar os clientes baseados em Web e visualizar os dados disponibilizados
pelos mesmos.
Figura 13: Arquitetura do MOCHA(RODRIGUEZ-MARTINEZ; ROUSSOPOULOS, 2000).
A arquitetura do MOCHA, mostrada na Figura 13, é composta de quatro componentes principais: Aplicação Cliente - um applet, um servlet ou uma aplicação Java usada
para submeter consultas ao sistema; Coordenador de Processamento de Consultas (QPC)
- fornece serviços tais como análise de consulta, otimização de consulta, escalonamento
de operador de consulta, gerenciamento de catálogo e execução de consulta, além de ser
o responsável por implantar todas as funcionalidades necessárias para o cliente e para
os sites remotos, a partir dos quais os dados serão extraídos; Fornecedor de Acesso aos
Dados (DAP) - fornece ao QPC um mecanismo de acesso uniforme para uma fonte de
dados remota, e executa alguns dos operadores na consulta (aqueles que ltram os dados
sendo acessados); e o Servidor de Dados - armazena um conjunto de dados de um site em
35
particular. A comunicação entre os seus componentes, Figura 14, é feita usando RMI
(Remote Method Invocation ).
Figura 14: Arquitetura do MOCHA - RMI.
No MOCHA, pode-se enxergar os DAPs como sendo wrappers. Os mesmos têm capacidade de processamento de consulta, podendo utilizar tipos de dados e operadores
especícos de uma aplicação, necessários para o processamento de uma consulta, os quais
são implantados nos DAPs de uma maneira automática pelo sistema middleware. Para
cada tipo de fonte existe um DAP especíco. Nesse sentido um DAP só pode acessar a
sua fonte. Além disso, os DAPs são previamente instalados em máquinas, podendo ser
no próprio site remoto ou próximo a ele, nos quais irão executar. Como as máquinas nas
quais os DAPs estão instalados podem car sobrecarregadas e um DAP não pode acessar
outras fontes diferentes daquela a qual está associado, o sistema integrador pode ter sua
execução afetada, dado que o QPC pode car parado esperando os dados proveniente de
um DAP que está com o processamento lento ou até mesmo parado. Além disso, os DAPS
não possuem a funcionalidade de tradução entre modelos.
2.6 SkyQuery
SkyQuery (MALIK et al., 2003) é um middleware que busca criar uma federação de
bancos de dados na área de astronomia que estão separados geogracamente. Ele possui
uma interface Web que permite aos astrômonos efetuarem consultas sobre dados espaciais
armazenados em bancos de dados participantes da federação. Web Services são implantados em cada banco de dados, sendo a principal interface de comunicação e encapsulamento
tanto para o processador de consulta quanto para o tradutor de fontes de dados.
36
Figura 15: Arquitetura do SkyQuery (MALIK et al., 2003).
A sua arquitetura (Figura 15) é baseada em wrapper-mediator, sendo implementada
através de Web Services. Esta possui três componentes principais, que são: os Clientes,
o Portal e os SkyNodes. O Portal é o mediador e os SkyNodes contém os wrappers que
encapsulam os bancos de dados. Os Clientes são interfaces Web que aceitam consultas
de usuários e repassam para o Portal. O Portal faz a mediação entre os Clientes e os
SkyNodes. Isso é feito por aceitar as consultas dos usuários e coordenar os SkyNodes com
o intuito de avaliá-las. Cada SkyNode implementa serviços que atuam como wrappers,
encapsulando os SGBDs (Sistemas Gerenciadores de Banco de Dados) e outros detalhes
especícos da plataforma na qual eles estão executando.
Em cada SkyNode existem APIs (Applications Programs Interfaces ) que são especícas para cada banco de dados que o mesmo manipula, sendo utilizadas para fornecer
acesso aos dados e metadados do banco de dados associado ao SkyNode. Assim, um SkyNode apresenta uma visão uniforme para o Portal. Contudo, pelo fato de cada SkyNode
encapsular um banco de dados distinto, não é possível que um SkyNode faça o acesso
a outro banco de dados senão aquele ao qual está associado. Ele também não possui a
funcionalidade de tradução de modelos. Além disso e, tal com o CoDIMS-G, o SkyQuery
é um middleware para uma aplicação especíca, no caso, para a integração de dados astronômicos. O mesmo não está voltado para a integração de dados em um contexto mais
geral.
O MOCHA e o Skyquery, utilizam uma abordagem de distribuição de wrappers baseada, respectivamente, no uso de RMI (Remote Method Invocation ) e de Web Services.
RMI apresenta alguns problemas com relação a tráfego sobre http e rewalls, além de cli-
37
A
B
C
D
E
F
G
H
CoDIMS-G
não
não
não
não
sim
não
Grid
não
Tabela 1: Comparação entre os sistemas.
OGSA-DAI/DPQ MOCHA
SkyQuery
sim
sim
sim
não
não
não
não
não
sim
restrita
restrita
restrita
não
não
não
não
sim
não
Grid
RMI
Web Service
sim
sim
sim
CoDIMS
não
sim
não
sim
sim
não
Grid
sim
ente e servidor serem fortemente acoplados e terem que ser desenvolvidos em Java. O uso
de Web Services resolve esse problema. Estes, entretanto, não são muito versáteis, pelo
fato de não oferecerem suporte para serviços de persistência, noticação, gerenciamento
de ciclo de vida, transações, recursos etc.
Para facilitar o entendimento, na tabela 1, é feito uma comparação das funcionalidades dos sistemas apresentados. Por questão de espaço foi utilizada a seguinte legenda: AMonolítico, B- Integração de esquema e Resolução de conitos, C- Aplicação Especíca,
D- Funcionalidades de Wrappers, E- Realocação de instância de serviço, F- Problema com
Firewall, G- Tecnologia de computação distribuída, H- Integração de Dados.
De forma diferente dos trabalhos descritos neste capítulo, o CoDIMS apresenta-se
como um sistema integrador completo, provendo facilidades de resolução de conitos
através de integração de esquemas, com conseqüente elaboração de um esquema global.
Além disso, os wrappers são implementados através da utilização de Grid Services, que
podem ser vistos como uma evolução de Web Services, o que permite adicionar ao CoDIMS
uma sistemática para a alocação e execução de wrappers em nós de Grid. Isso possibilita
a execução distribuída e paralela do Plano de Execução de Consultas (PEC), tornando
possível um melhor desempenho do sistema como um todo.
Além dos sistemas explicados anteriormente, existem na literatura diversos outros
para integração de dados. Contudo, estes sistemas não possuem as características de
exibilidade e conguração apresentadas no CoDIMS (BARBOSA, 2001), nem uma distribuição dos wrappers . Um estudo sobre os mesmos pode ser encontrado em (SILVESTRE;
BIANCARDI; BARBOSA, 2004).
38
3
Conceitos e Tecnologias
3.1 GRID
Um é Grid uma infra-estrutura de hardware e software que permite acesso a capacidades computacionais geogracamente distribuídas, de forma conável, consistente,
econômica e transparente. O conceito é relativamente antigo (meados da década de
90), contudo, vem sendo apresentado com uma nova dinâmica (FOSTER; KESSELMAN,
1997, 1999; FOSTER; KESSELMAN; TUECKE, 2001), em que se pode utilizar a capacidade
de computação dos recursos disponíveis a serem compartilhados (ex. armazenamento,
CPU) sem ter que se preocupar de onde vem e como é mantida, fazendo uma metáfora às
redes elétricas, nas quais um usuário utiliza a eletricidade sem ao menos saber na qual ela
foi gerada, sendo totalmente transparente aos seus usuários. Nesse sentido a tecnologia
de Grid visa fornecer o acesso compartilhado a recursos de computação, de uma maneira
a quem for utilizá-los não necessite de conhecer os detalhes dos componentes computacionais envolvidos, onde eles estão localizados, como gerenciá-los, como corrigir erros ou
mesmo como efetuar uma atualização. Dessa forma, a infra-estrutura Grid conecta diversos recursos de hardware, software e dados através de uma rede, fornecendo um acesso
exível e seguro para aplicações e dados (MALAIKA; EISENBERG; MELTON, 2003).
A tecnologia de Grid possibilita agregar recursos computacionais variados e dispersos
em um único supercomputador virtual, acelerando a execução de um variado tipo de
aplicações e diminuindo custos com o uso de recursos compartilhados. Em um Grid, os
serviços podem ser executados em diferentes nós com o objetivo de balancear a carga de
trabalho e aumentar o desempenho.
Grid visa suportar a demanda das organizações virtuais para um compartilhamento
coordenado de recursos e a resolução de problemas em escala global, tais como aquelas que necessitam de computação intensiva e que manipulam muitos dados (GOBLE;
ROURE, 2002). Um Organização Virtual (OV) (FOSTER; KESSELMAN; TUECKE, 2001)
pode ser vista como uma infra-estrutura que habilita o compartilhamento de recursos de
39
forma coordenada, transparente, segura e exível entre coleções dinâmicas de indivíduos
ou instituições, ou seja, chama-se de Organização Virtual quando existem participantes
que desejam compartilhar recursos para poder concluir uma tarefa. Além disso, o compartilhamento está além de apenas troca de documentos, podendo envolver acesso direto
a software remoto, computadores, dados, sensores dentre outros recursos.
De uma forma simples, um ambiente de Grid é aquele no qual as aplicações podem
utilizar múltiplos recursos computacionais que podem estar distribuídos geogracamente.
Mais recentemente, tem-se os recursos de dados, como por exemplo os bancos de dados.
Levando em consideração que cada nó de um Grid executa tarefas distintas, as aplicações mais adequadas ao Grid são as que possuem tarefas independentes, ou seja, tarefas
que não dependem da execução de outras e podem ser executadas em qualquer ordem e,
a princípio, em qualquer nó do Grid.
Da mesma maneira que a Internet, a computação em Grid teve seu desenvolvimento
nas comunidades acadêmica e de pesquisa. Entre os fatores que inuenciaram o seu
desenvolvimento, podem ser considerados importantes:
• o fato de pesquisas incluírem um grande número de pesquisadores e estes, geralmente, encontrarem-se em locais dispersos, notou-se a necessidade de criar um ambiente computacional para compartilhar recursos e resultados dinamicamente;
• a importância de escalonar serviços e dados facilmente, para poder acomodar uma
quantia cada vez maior de dados e poder computacional;
• redução de custos.
Esses requisitos são suportados pela arquitetura dos Grids, na qual é possível escalonar, de maneira dinâmica, os recursos computacionais. Além disso, um Grid pode englobar
máquinas localizadas em lugares diferentes, utilizando seus recursos ociosos. Com isso, é
possível utilizar hardware comum, não sendo necessário fazer a utilização de máquinas de
grande porte como supercomputadores.
3.1.1 Benefícios de um Grid
Com relação aos benefícios que o Grid pode trazer, pode-se citar, segundo (BERSTIS,
2003), os seguintes:
40
• Explorar recursos subutilizados e recursos adicionais: A princípio, uma aplicação
pode ser executada em qualquer máquina que faça parte de um Grid, desde que esta
possua acesso a determinados recursos solicitados pela aplicação. Pode-se escolher
esta máquina utilizando-se diversos parâmetros, como por exemplo: a que estiver
com menor carga de processamento, a que possuir disponível certo tipo de dispositivo
ou determinados dados.
Existem alguns tipos de aplicações que podem melhor utilizar as características
dos Grids. Um exemplo seria o de aplicações que exigem grande processamento de
dados e pouca interação com o usuário, podendo ser melhor escalonadas através do
Grid. Além dos recursos de processamento, muitas máquinas também possuem seus
discos rígidos subutilizados. Assim, o Grid pode ser utilizado como um Data Grid,
alocando o espaço disponível como se fosse um disco apenas. Outra forma de alocar
o espaço seria dividir os dados de forma que as aplicações possam ser executadas
em uma máquina mais próxima de onde se encontram os dados que processa, ou
para garantir uma maior disponibilidade caso alguma máquina falhe.
Diversos outros recursos podem ser compartilhados em um Grid. Para uma aplicação que demande um maior acesso à Internet, por exemplo, pode-se dividir o
trabalho entre outras máquinas que também possuam acesso à rede, acelerando os
resultados. Outros exemplos podem abranger uma impressora remota com maior
qualidade, um gravador de DVD ou equipamentos médicos e cientícos avançados
como um microscópio eletrônico ou um robô. Com isso, os recursos de uma instituição ou empresa podem ser melhor utilizados, diminuindo despesas e aumentando a
eciência e a competitividade.
• Capacidade de processamento paralelo: Outra característica interessante é a possibilidade de melhor utilizar o processamento paralelo através de Grids. Em alguns
tipos de aplicações tais como cientícas, nanceiras, processamento de imagens e simulações, a utilização de processamento paralelo pode trazer bastante ganhos com
relação ao desempenho. Uma aplicação que faça uso de algoritmos e técnicas de
programação paralela pode ser dividida em partes menores e estas podem ser separadas e processadas independentemente. Cada uma destas partes de código pode
ser executada em uma máquina distinta no Grid, melhorando o desempenho.
Existem algumas barreiras que podem impedir que uma aplicação utilize todo este
potencial. Por exemplo, se a aplicação deve ser dividida em um número xo de partes
independentes, isso torna-se uma barreira que impede sua escalabilidade. Outra
41
forma de problema encontrado é quando as partes não podem ser completamente
independentes e precisam comunicar-se entre si, causando uma possível espera para
que as comunicações sejam sincronizadas ou o tempo necessário para as mensagens
serem transmitidas. Essas características devem ser levadas em conta no momento
de se utilizar a funcionalidade de processamento paralelo, mas isso não impede a
grande utilização dos Grids como uma excelente arquitetura para o processamento
paralelo.
• Dispositivos e Organizações Virtuais: A colaboração entre os mais diversos tipos
de usuários e aplicações é outra capacidade que pode ser desenvolvida com o advento dos Grids. Recursos e máquinas podem ser agrupados e trabalharem juntos
formando o que pode ser chamado de uma Organização Virtual (OV).
Uma OV (FOSTER; KESSELMAN; TUECKE, 2001) é uma entidade que compartilha
recursos através do Grid, utilizando uma determinada política de compartilhamento.
Uma OV varia tremendamente em seus propósitos, escopo, tamanho, duração, estrutura, comunidade e sociologia. Pode ser denida de acordo com sua área de
pesquisa ou de negócio, juntando usuários e aplicações com propósitos semelhantes,
colaborando em prol de uma razão comum, como por exemplo: empresas, centros de
pesquisa e universidades. Esses recursos podem abranger processamento, dados, licenças, entre outros, e podem ser virtualizados para melhor interoperabilidade entre
os participantes do Grid.
• Conabilidade: Existem diversas maneiras de aumentar a conabilidade em um
sistema computacional. Processadores e discos são duplicados, de modo que caso
um falhe o outro assuma seu lugar, fontes de energia e circuitos redundantes, geradores elétricos, entre outros. Todas estas formas comprovadamente aumentam
a disponibilidade e a conança em um sistema, mas seus custos podem torná-las
impraticáveis. Utilizando-se uma abordagem baseada em Grids, com máquinas espalhadas em diversos lugares diferentes, quando uma falha atinge uma parte do Grid
as demais podem continuar sua operação normalmente. Sistemas de gerenciamento
podem executar novamente processos importantes caso seja detectada alguma falha ou estes podem ser executados redundantemente para garantir sua consistência.
Dados podem ser duplicados ou separados em diversas partes através do Grid, aumentando sua disponibilidade. Um grande avanço nessa área serão sistemas que
podem automaticamente detectar uma falha e tomar as medidas necessárias para
contornar o problema.
42
3.2 Grid vs Computação Distribuída
De uma maneira geral, computação distribuída é um conceito que vem dos anos 80
e 90, e consiste na possibilidade de resolver um determinado problema computacional
através da utilização de recursos distribuídos geogracamente, utilizando diferentes plataformas de hardware ou diferentes sistemas operacionais, podendo pertencer a diferentes
empresas ou instituições.
Grid é um caso particular da computação distribuída, uma vez que são orientados para
aplicações que precisam de uma grande capacidade de cálculos ou enormes quantidades
de dados transmitidos, ou ambas. Além disso, com a evolução da tecnologia de grids
percebeu-se que a composição automática de um conjunto de recursos para servir uma
aplicação criava a oportunidade de oferecer serviços sob demanda. Assim, surgiu a idéia
de um Grid onde seja possível prover sob demanda qualquer serviço computacional (não
somente serviços para computação de alto desempenho). O Grid, portanto, seria uma
rede na qual o individuo se conecta para obter serviços computacionais que agregam
recursos sob demanda (ex.: ciclos, armazenamento, software, periféricos, etc) (CIRNE;
NETO, 2005).
A computação distribuída passa a ser uma computação em Grid no momento em
que existe uma infra-estrutura de hardware e software que permita criar a ilusão de
um supercomputador virtual, em grande escala, facilmente gerenciável e com uma grande
quantidade de recursos (ciclos de CPU, dados, dispositivos de armazenamento etc.) sendo
compartilhados de forma conável, consistente, econômica e persistente, possibilitando,
com isso, coordenar os trabalhos a serem processados e garantir a qualidade de serviço
(BERSTIS, 2003).
Algumas tecnologias de computação distribuídas, tais como CORBA (Commom Ob-
ject Request Broker Arquitecture ) e EJB (Enterprise JavaBeans ), são voltadas para sistemas distribuídos altamente acoplados, nos quais cliente e servidor são muito dependentes
um do outro. Tecnologias de Grid se distinguem destas pelo fato de serem baseadas no
conceito de Grid Services, uma evolução de Web Services, o que implica em sistemas fracamente acoplados, nos quais um cliente pode não ter conhecimento do serviço até que
ele o invoque. Nesse sentido, sistemas distribuídos altamente acoplados são ideais para
aplicações intranet, enquanto que Grid são mais adequados para alcançar as demandas
de uma aplicação Internet (SOTOMAYOR, 2003).
43
3.3 Grid vs Cluster
Um ambiente de Cluster constitui um sistema formado por hardware e software conectados em um único local, usado exclusivamente para resolver os problemas computacionais
de uma determinada organização. Assim, em um Cluster, os recursos são gerenciados por
uma entidade central, e os computadores agem como se fossem um único dispositivo.
A principal diferença entre Grid e Cluster (BUYYA, 2002) está relacionada ao modo
como é feito o gerenciamento dos recursos, ou seja, se o compartilhamento de recursos é
gerenciado por um único sistema global, sincronizado e centralizado, então é um Cluster.
Em um Cluster, todos os nós trabalham cooperativamente em um objetivo comum, e a
alocação de recursos é executada por um gerente centralizado e global. Em um Grid, os
recursos estão distribuídos geogracamente, sendo que os donos desses recursos possuem
autonomia para fazer o gerenciamento local. A alocação dos recursos é feita pelos usuários
do Grid, e os nós executam diferentes tarefas relacionadas a objetivos distintos. Um Grid
pode ser encarado como sendo uma evolução do Cluster, dado que os recursos deste
podem ser compartilhados pelo Grid. Assim, um Grid é mais heterogêneo, complexo e
distribuído.
Com o intuito de esclarecer a denição de Grid, já que, constantemente se confude o
real signicado do que é Grid, Foster elaborou um Grid CheckList (FOSTER, 2002), no
qual são denidas três características básicas para que um sistema computacional possa
ser chamado de Grid:
• Recursos coordenados que não se sujeitam a um controle centralizado: Sistemas em
Grid podem englobar recursos entre os mais variados tipos, desde o desktop de um
usuário até um supercomputador. Pode haver um controle local em uma empresa,
mas não existe um controle central para todo o Grid;
• Utilizar padrões abertos, interfaces e protocolos de propósito geral: A utilização
de protocolos e padrões abertos é essencial para que os sistemas em Grid possam
realizar funções fundamentais como autenticação, autorização, descoberta de recursos e acesso a eles, sem perder a capacidade de escalar e interagir com diferentes
plataformas de hardware e software ;
• Prover o mínimo em qualidade de serviços: Sistemas em Grid permitem que os recursos sejam utilizados de forma coordenada com o objetivo de alcançar qualidades
de serviço como por exemplo - tempo de resposta, throughput (vazão), disponibi-
44
lidade, segurança e/ou a co-alocação de recursos para se adequar às exigências do
usuário. Assim, a utilidade de um sistema combinado é signicativamente maior
que a soma das partes.
3.3.1 Deciência
Uma deciência com relação à computação em Grid está relacionada a redes de computadores com baixa taxa de transmissão de dados. Isso constitui uma espécie de gargalo
com relação àquelas aplicações que necessitam transferir grandes quantidades de dados.
Assim, a multiplicidade das velocidades das diversa redes de computadores implica em alguns pontos de gargalo, o que acaba comprometendo o desempenho do supercomputador
virtual.
3.3.2 Componentes
3.3.2.1 Recursos
Um Grid pode ser visto como uma coleção de máquinas que compartilham diversos
tipos de recursos. Dentre os principais tipos de recursos, passíveis de compartilhamento,
pode-se destacar:
• Computação: Ciclos de CPU é o recurso mais comumente compartilhado em um
ambiente de Grid. Os processadores podem variar em velocidade, arquitetura, plataforma de software e ter outros fatores associados, tais como memória e armazenamento. Existem três formas de explorar os recursos computacionais em um Grid.
O primeiro é executar uma aplicação em qualquer máquina disponível do Grid,
independentemente de onde esteja localizada. A segunda é quebrar o aplicativo
em partes menores para que estas possam ser executadas paralelamente através do
Grid. E a terceira é executar uma tarefa que precisa rodar várias vezes em diferentes
máquinas do Grid.
Grids que utilizam principalmente os recursos computacionais disponíveis são comumente chamados de Grids computacionais.
• Armazenamento: A utilização do espaço de armazenamento de cada máquina integrante de um Grid aumenta a capacidade de armazenamento como um todo, além
de aumentar o desempenho, compartilhamento e conabilidade dos dados. A utilização desse espaço de armazenamento facilita a localização de determinado arquivo,
45
sendo que este pode estar dividido em partes menores e espalhado pelas máquinas
participantes, contornando problemas como tamanho máximo de arquivo em algum
sistema operacional. Sistemas de gerenciamento podem duplicar dados em várias
máquinas provendo uma redundância. Podem também utilizar essa informação no
momento de designar uma máquina para executar uma aplicação, escolhendo a que
estiver com os dados requisitados por esta.
Grids que utilizam o espaço de armazenamento como principal recurso compartilhado são comumente chamados de Data Grids.
• Comunicações: Através do Grid, pode-se compartilhar conexões, tanto internas
quanto externas. Contudo, a velocidade das comunicações pode inuenciar na execução de diversas tarefas. Algumas aplicações precisam processar um grande número de dados e estes podem não se encontrar na máquina (nó) onde será executada.
Neste caso, os dados devem ser enviados através do Grid, sendo que a velocidade
desta transmissão pode inuenciar no desempenho. Para tentar resolver este problema, máquinas com conexões ociosas podem ser utilizadas para enviar partes
destes dados, para não causar uma contenção.
Grids que utlizam a capacidade de comunicação como principal recurso compartilhado são comumente referenciados como Network Grids ou Delivery Grids.
• Software e licenças: Alguns softwares possuem licenças caras e seria impraticável
sua instalação em todas as máquinas do Grid. Assim, requisições para utilizar estes
softwares seriam direcionadas para as máquinas que os possuem instalados. Deste
modo, pode-se realizar uma melhor utilização das licenças adquiridas.
3.3.2.2 Descrição da Arquitetura de Grid
Em (FOSTER; KESSELMAN; TUECKE, 2001) é descrita a arquitetura de um Grid.
Contudo, não é feita uma enumeração completa de todos os protocolos requeridos, assim como serviços, APIs (Application Program Interface ) e SDKs (Software Development
Kits ). Somente são identicados os requerimentos para as classes de componentes. A arquitetura de um Grid é denida como uma pilha de protocolos, semelhante à arquitetura
de protocolos da Internet, como pode ser visto na Figura 16.
A seguir será feita uma breve descrição sobre cada camada.
• Fabric : Interfaces para controle local
46
Figura 16: Arquitetura de um Grid e seu relacionamento com a arquitetura de protocolo
da Internet (FOSTER; KESSELMAN; TUECKE, 2001).
Esta camada fornece funcionalidades com as quais o compartilhamento de recursos
pelo Grid torna-se possível. Implementa operações locais e especícas para cada tipo
de recurso compartilhado pelo Grid, fornecendo suporte às funções das camadas
superiores. Conceitualmente, os recursos precisam ter implementados no mínimo
dois mecanismos importantes para seu melhor aproveitamento no Grid. O primeiro
é um mecanismo chamado enquiry, que permite descobrir sua estrutura, estado e
capacidades. O segundo é um mecanismo de gerenciamento de recurso que busca
efetuar algum tipo de controle sobre a qualidade do serviço fornecido.
Para cada tipo de recurso passível de ser compartilhado através do Grid, a camada
Fabric implementa algumas funções especícas:
Recursos computacionais: mecanismos para iniciar programas e monitorar sua
execução são necessários. Além disso, é importante possibilitar gerenciamento
sobre os recursos alocados para determinada aplicação, e fornecer informações
sobre características de hardware, software e carga de processamento.
Recursos de armazenamento: basicamente são necessárias funções que permitam adicionar e retirar arquivos. Também é necessária a existência de mecanismos de gerenciamento que permitam controle sobre os recursos alocados para
a transferência de dados como espaço, taxa de transferência do disco e da rede,
CPU etc. Fornecer informações sobre as características de hardware, software,
espaço em disco disponível e taxa de transferência.
Recursos de rede: gerenciamento sobre os recursos alocados para transferências de rede, como por exemplo, a taxa de transferência. Também fornece
informações sobre as características da rede e sua carga.
47
• Connectivity : Comunicação fácil e segura
A camada Connectivity dene os protocolos de comunicação e de segurança necessários para transações de rede especícas de Grid, permitindo troca entre recursos da
camada Fabric. Fornece também protocolos de autenticação e serviços de segurança
criptografada para vericar a identidade de usuários e recursos.
As necessidades supridas pela camada incluem transporte, roteamento e nomeação.
Atualmente, estes protocolos são mapeados para a pilha de protocolos TCP/IP:
especicamente Internet (IP e ICMP), transporte (TCP e UDP) e aplicação (DNS,
OSPF). As soluções de autenticação para as Organizações Virtuais devem possuir
no mínimo algumas características básicas, são elas:
Single sign on : os usuários devem se autenticar uma só vez e ter acesso a
múltiplos recursos denidos pela camada Fabric, não necessitando se autenticar
em cada um deles.
Delegação: um programa executado por um usuário tem acesso aos mesmos
recursos que este usuário está autorizado a utilizar. E, um programa pode,
opcionalmente delegar alguns direitos a outros programas em execução.
Integração com sistemas de segurança locais: cada recurso pode implementar
soluções de segurança localmente, tal como Unix security. As soluções de
segurança do Grid devem ser capazes de interoperar com estes sistemas.
• Resource : Compartilhando recursos simples
A camada Resource utiliza as funcionalidades da camada Connectivity para a negociação segura, monitoramento, controle e contabilização de operações de compartilhamento em recursos individuais. Utiliza também a camada Fabric para acessar e
controlar dispositivos locais.
Existem apenas dois tipos de protocolos que são denidos por esta camada:
Protocolos de informação: usados para obter informações sobre a estrutura e
o estado dos recursos, como conguração, carga de trabalho atual e política de
uso.
Protocolos de gerenciamento: usados para negociar acesso a um recurso compartilhado, como por exemplo, os requisitos do recurso e as operações necessárias para a criação de um processo ou acesso a um dado. Podem também
monitorar o estado de uma operação e ter controle sobre ela.
48
• Collective : Coordenando múltiplos recursos
Diferentemente da camada Resource, que interage com um recurso simples, a camada Collective fornece protocolos e serviços que não estão associados a um recurso
especíco e sim a coleções destes. Para isto, ela disponibiliza algumas facilidades de
compartilhamento:
Serviços de diretório: facilita aos integrantes de Organizações Virtuais descobrir a existência e propriedades de recursos compartilhados. Estes recursos
podem ser localizados por nome e outros atributos como tipo, disponibilidade
e carga.
Serviços de co-alocação e agendamento: permitem que recursos possam ser
alocados para determinado propósito e o agendamento de tarefas em recursos
apropriados.
Serviços de monitoramento e diagnóstico: recursos podem ser monitorados em
relação a falhas, utilização indevida e sobrecarga, por exemplo.
Serviços de replicação de dados: suporte a gerenciamento dos recursos de armazenamento para maximizar a performance de acesso a dados. Pode-se monitorar tempo de resposta, conabilidade e custos.
Sistemas de programação compatíveis com Grids: habilita a utilização de modelos de programação conhecidos no ambiente de Grids, usando serviços como
busca e alocação de recursos, segurança etc. Um exemplo seria a implementação de Message Passing Interface (MPI) no ambiente de Grid.
Alguns componentes desta camada podem ser especícos para determinada Organização Virtual ou domínio de aplicações. Por exemplo, um protocolo para alocação
de um tipo especíco de dispositivos de rede que esta organização possui. Outros
componentes podem ser mais generalizados, como um serviço de replicação que gerencia uma coleção internacional de dispositivos de armazenamento para diversas
Organizações Virtuais. De qualquer forma, o importante é que os protocolos e in-
terfaces de programação sejam baseados em padrões abertos para evitar problemas
de integração.
• Applications :
A camada nal da arquitetura de um Grid compreende as aplicações de usuário que
operam dentro de um ambiente de Grid. A Figura 17 demonstra a arquitetura
de Grid pelo ponto de vista de um programador de aplicações. As aplicações são
49
construídas através da utilização de serviços providos por cada camada. Em cada
uma destas, existem protocolos denidos que fornecem serviços como gerenciamento
e localização de recursos, acesso a dados, entre outros.
Figura 17: Arquitetura de um Grid na visão dos programadores de aplicações (FOSTER;
KESSELMAN; TUECKE, 2001).
3.3.3 Ferramentas de Desenvolvimento
Existem algumas ferramentas disponíveis que habilitam o desenvolvimento de aplicativos que fazem uso da arquitetura de Grids. Dentre elas, a que tem alcançado grande
popularidade, principalmente por ser desenvolvida a partir de padrões abertos e mantida
por comunidades de programadores, é o Globus Toolkit (GLOBUS, 2004).
3.3.3.1 Globus Toolkit
O Globus Toolkit é um conjunto de ferramentas e bibliotecas de software que dão
suporte à arquitetura e às aplicações em Grid. É um projeto desenvolvido pelo Argnone
National Laboratory (ANL) e pela University of Southern California. É mantido por
uma comunidade de programadores, The Globus Alliance (GLOBUS, 2004), e é baseada
em arquiteturas e códigos abertos. Com ele é possível implementar segurança, busca de
informações, gerenciamento de recursos e de dados, comunicação, detecção de falhas e
portabilidade (DANTAS; ALLEMAND; PASSOS, 2003). Segundo (FOSTER; KESSELMAN,
1997), os serviços no Globus são baseados em um modelo conhecido como Hourglass
(Ampulheta). Nesta analogia, os serviços locais encontram-se na parte inferior da ampulheta, enquanto que os serviços globais estão na parte superior. Os serviços fornecidos
pelo Globus cam localizados no gargalo da ampulheta. Os componentes do conjunto
50
de ferramentas Globus podem ser usados tanto independentemente quanto em conjunto
no desenvolvimento de aplicações e de ferramentas de programação em Grid. Para cada
componente existe uma API em linguagem C ou Java denida para facilitar o uso pelos
desenvolvedores. A Figura 18 demonstra a estrutura do Globus Toolkit.
Figura 18: Uma visão geral do sistema Globus Toolkit (FERREIRA et al., 2002).
As versões mais atuais do Globus Toolkit (GT) (versão 3 em diante) são baseadas
no conceito de Grid Services, uma expansão do conceito de Web Services. Os principais
conceitos e padrões nos quais está baseado o GT3, versão usada neste trabalho, serão
discutidos a seguir.
• OGSA (Open Grid Services Architecture ): Como mencionado anteriormente, a utilização de padrões é uma das principais necessidades para que os sistemas em Grid
sejam amplamente utilizados. A arquitetura da computação em Grid é denida pela
OGSA, desenvolvida pelo Global Grid Forum (GGF) (GLOBAL. . . , 2004).
OGSA dene uma arquitetura aberta, padrão e comum para aplicações baseadas
em Grid. A sua principal meta é padronizar aqueles serviços relacionados com aplicações Grid, tais como: serviços de gerenciamento de trabalho, serviços de gerenciamento de recursos, serviços de segurança etc. Para tanto é especicado um conjunto
de interfaces padrão para estes serviços. Nesse sentido OGSA tem sido proposta
como uma infraestrutura para aplicações e sistemas que requerem a integração e
gerenciamento de serviços dentro de organizações virtuais dinâmicas, heterogêneas
e distribuídas. É baseada nos padrões já denidos para os Web Services e considera um serviço em um Grid como um Web Service com algumas particularidades
51
denidas através da linguagem padrão chamada WSDL (Web Services Description
Language ), com pequenas extensões. Isto é importante porque fornece uma maneira
de acessar um serviço em Grid usando padrões abertos e consolidados, como SOAP,
XML e WS-Security. Além disso, padronizam a pesquisa, identicação e utilização
de novos serviços conforme forem sendo adicionados ao Grid.
• OGSI (Open Grid Services Infrastructure ): É a especicação concreta da arquitetura
OGSA. É baseado nas tecnologias de Grids e Web Services, chamados Grid Services,
e dene como construir, gerenciar e expandir um serviço.
• Web Services : São a base para o conceito de Grid Services e, por sua vez, a base
para o OGSI, OGSA e o GT3. Web Services é uma tecnologia de computação
distribuída que permite a criação de aplicações cliente/servidor usando como plataforma de comunicação protocolos abertos e amplamente conhecidos como o HTTP
e o XML. Desta forma, pode-se executar um serviço através de uma Intranet ou
mesmo Internet, ocultando do cliente detalhes relativos a implementação (serviço
desenvolvido em Java, C++ etc) e plataforma (servidor Linux, Windows, Unix ou
em um mainframe), bastando ao cliente conhecer a URL através da qual o serviço
pode ser acessado, e as interfaces de seus métodos.
Os Web Services são denidos pelo W3C (World Wide Web Consortium ) , denindo
uma maneira padronizada para descrevê-los, o WSDL (Web Sevice Description Lan-
guage ) . Basicamente este padrão dene como são descritos os métodos, parâmetros,
tipos de dados, protocolo de transporte e URI (Uniform Resource Identier) de um
serviço. Para um Web Service ser acessado, o mesmo precisa ser publicado em um
servidor. Também deve existir uma forma através da qual possam ser realizadas
pesquisas em busca de um determinado serviço. Para suprir estas necessidades, o
W3C deniu um padrão chamado UDDI (Universal Description, Discover and In-
tegration). Um protocolo padrão para comunicação também foi denido, o SOAP
(Simple Object Access Protocol), sendo baseado em XML e usando o HTTP como
transporte.
Mas porque não usar tecnologias como RMI, CORBA, EJBs etc para criar uma aplicação baseada em serviços Web. O que fazem os Web Services especias? Segundo
(SOTOMAYOR, 2003), estes tem certas vantagens com relação as outras tecnologias
de computação distribuída. Web Services são independentes de plataforma e linguagem, pelo fato de usarem XML. Isto signica que um programa cliente pode ser
implementado em C++ e executar em um sistema operacional Windows, enquanto
52
que o Web Service é programado em Java e está executando em um servidor Linux.
Além disso, a maioria dos Web Services usam HTTP para transmitir mensagens
(tal como os serviços de resquest e response ). Isto é uma grande vantagem para
a construção de aplicações Web, por que a maioria dos proxies e rewalls não trabalham bem com tráfego sobre HTTP (tal como CORBA que tem problemas com
rewalls ).
Web Services também possuem desvantagens. Uma delas é o overhead pois, a
transmissão de dados é feita usando XML que é, obviamente, menos eciente do que
usar um código binário proprietário. Tal como Java, o que se ganha em portabilidade
perde-se em eciência. Apesar disso, este overhead é usualmente aceitável para a
maioria das aplicações. Contudo, será difícil encontrar aplicações críticas de tempo
real que usam Web Services (SOTOMAYOR, 2003). Um outra desvantagem é que
Web Services não são muito versáteis, desde que eles não oferecam suporte para
serviços de persistência, noticação, gerenciamento de ciclo de vida, transações etc.
Mais adiante, será explicado que os Grid Services dão suporte para este leque de
versatilidade.
Entretanto existe uma importante caracterítica que distingue Web Services das outras tecnologias de computação distribuída. Enquanto tecnologias tal como CORBA
e EJB são voltadas para sistemas distribuídos altamente acoplados, onde cliente e
servidor são muito dependentes um do outro, Web Services são mais adequados para
sistemas fracamente acoplados, onde cliente pode não ter conhecimento, a priori, do
serviço até que ele o invoque. Sistemas distribuídos altamente acoplados são ideais
para aplicações intranet, e não para aplicações Web. Web Services, são mais adequadas para alcançar as demandas de uma aplicação Internet-wide, tal como aplicações
orientadas a Grid (SOTOMAYOR, 2003).
Desde que Web Services são a base para Grid Services, entender o seu funcionamento é de fundamental importância para usar o Globus Toolkit 3 e programar
Grid Services. A Figura 19 mostra o processo de invocação de um Web Service.
1) O cliente utiliza o Registro UDDI para descobrir onde o serviço desejado
está sendo fornecido;
2) O Registro UDDI responde ao cliente com o endereço do serviço na forma
de um URI que aponta para o servidor que fornece o serviço desejado. Um
exemplo de URI: http://webservices.mysite.com/clima/br/ClimaService;
3) Com esta informação o cliente conhece a localização do serviço, mas ainda
53
Figura 19: O processo de invocação de um Web Service (SOTOMAYOR, 2003).
não sabe como invocá-lo. Então, o cliente pergunta ao servidor como pode
invocar o serviço desejado;
4) O servidor responde ao cliente enviando um documento WSDL, que descreve
a interface do serviço, ou seja, seus métodos, parâmetros e tipos de dados;
5) De posse destas informações, o cliente sabe como invocar o serviço, sendo que
esta invocação pode ser realizada usando-se diversos protocolos. O protocolo
padrão para esta função é o SOAP. O cliente então faz a chamada ao serviço
usando o mesmo;
6) O serviço responde então com uma resposta SOAP, encapsulando os dados
no padrão XML.
Como mencionado anteriormente, Web Service é a tecnologia escolhida para aplicações distribuídas cujos clientes e servidores são fracamente acoplados. Isto faz
com que seja a escolha natural para a construção de aplicações baseadas em Grid.
Entretando, é importante lembrar que Web Services têm certas limitações, fazendo
com que estes não sejam muito apropriados para a construção de aplicações Grid.
Para contornar essas limitações, surgiram os Grid Services, que são basicamente
Web Services com características e serviços melhorados.
• Grid Services : São baseados no conceito de Web Services com algumas particulari-
54
dades e mecanismos denidos pelo OGSI. As principais melhorias introduzidas pelos
Grid Services são:
Factory : usam uma abordagem de Factory para a criação de instâncias de
serviços. Ao contrário de ter um serviço compartilhado por todos os usuários,
tem-se uma fábrica central responsável por criar instâncias desse serviço sob
demanda. Assim, quando um cliente quer efetuar uma operação deste serviço,
ele se comunica com a sua instância do serviço. Quando um cliente necessita
de uma nova instância, ou de destruir uma, ele requisita à fábrica.
Naming : da mesma maneira que um Web Service possui uma URI associada
a ele, o Grid Service possui uma identicação, conhecida como Grid Service
Handle (GSH). Assim como uma URI é o único modo de identicar um único
Web Service, o GSH também deve identicar um único Grid service. O GSH
não fornece informações detalhadas sobre o Grid Service, apenas seu endereço.
Desta forma, para conhecer os detalhes e requisitos de comunicação com o
serviço, uma GSH é mapeada a um Grid Service Reference (GSR). Então,
um GSH aponta para um Grid Service e o GSR especica como deve ser a
comunicação com este serviço. Como o GT3 usa a tecnologia de Web Services,
SOAP é usado como meio de comunicação entre os serviço e um documento
WSDL é usado para a descrição necessária pelo GSR. Resumindo, o GSR nada
mais é do que um documento WSDL entregue usando SOAP.
Data Service : uma instância de um Grid Service pode possuir uma coleção de
dados estruturados associados a ela e que podem ser acessados pelos usuários
do serviço. Estes dados, chamados de Service Data Elements (SDE), podem
ser pesquisados e alterados pelos usuários. A especicação OGSI dene alguns
tipos padrões de SDE que podem ser usados pelos Grid Services, sendo que
um Grid Service geralmente possui alguns destes SDEs quando é instanciado.
Notication : o mecanismo de noticação permite que um serviço seja uma fonte
de noticação, e que este envie mensagens para aqueles clientes interessados
na ocorrência de determinado evento.
Lifecycle Management : a especicação OGSI dene o ciclo de vida de um
serviço como o tempo desde a criação de uma instância até a sua destruição. A
criação da instância pode ser realizada pelo cliente ao requisitar ao mecanismo
Factory. O processo de destruição pode ser feito ao invocar o método da
instância responsável por esta tarefa. Outra forma do ciclo de vida é quando
55
o cliente instancia o serviço por um tempo determinado. Quando este período
expira, se o cliente não rearmar o interesse pela utilização, a instância do
serviço é destruída.
portType Extension : um Web Service disponibiliza suas interfaces (operações
que ele pode executar) através de um documento WSDL. A interface é usualmente chamada de portType. Um Web Service normal pode ter apenas um
portType. Grid Services, por outro lado, suportam a extensão de portTypes,
o que signica que é possível denir um portType como uma extensão de um
portType que já existe. Em geral um Grid Service pode estender três tipos de
portTypes (vide Figura 20).
Figura 20: Tipos de portTypes que um Grid Service pode estender (SOTOMAYOR, 2003).
A Figura 21 exemplica os conceitos OGSA, OGSI, Web Service e a ferramenta
Globus Toolkit interagem para a criação de um Grid Service.
Figura 21: Interação entre as partes componentes (SOTOMAYOR, 2003).
56
• WSRF/GT4
Com a evolução da arquitetura de Web Services, e tendo em vista que toda a base
de Grid Services tem origem nas tecnologias para Web Services, foi preciso ocorrer
um renamento em alguns aspectos da especicação OGSI (CIRNE; NETO, 2005).
A principal crítica estava relacionada aos mecanismos de endereçamento para os
serviços, por exemplo: Grid Service Handler e Grid Service Reference. Objetivando
fornecer um mecanismo de endereçamento independente da camada de transporte,
surgiu o WS-Addressing (CZAJKOWSKI et al., 2004).
Além dessa, outras características da especicação OGSI necessitavam ser alteradas
para poder acompanhar a evolução da tecnologia Web Service. Nesse sentido, é
criado o WSRF (Web Service Resource Framework ), que é basicamente o resultado
do renamento de OGSI objetivando aproveitar a existência dos novos padrões que
surgiram para Web Services (e.g. WS-Addressing, WS-Notication ) e assimilar a
demanda da comunidade Web Services.
Uma outra medida importante diz respeito a recuperação da compatibilidade com as
ferramentas existentes para XML e Web Services, já que OGSI usa GWSDL, o qual
provê acréscimos se compadaro ao WSDL 1.1. Contudo, estes acréscimos estarão
disponíveis nas versões WSDL 1.2/2.0. Ao contrário de OGSI, ao invés de estender
a denição de portType WSDL 1.1, ou mesmo esperar pelo portType da nova versão
WSDL 2.0, WS-Resource Framework utiliza puramente WSDL 1.1, o que garante
compatibilidade com as ferramentas existentes para Web Services.
Alguns entusiastas da área de Web Services, em geral, argumentam que Web Services
não devem manter estado ou ter instâncias. Ou seja, Atualmente, OGSI modela um
recurso que mantém estado como um Web Service que encapsula o estado do recurso.
WS-Resource Framework modica esse modelo para criar uma distinção explícita
entre serviço e entidades que mantém estado e são manipuladas através do serviço.
Esta composição é denominada WS-Resource pelo padrão WSRF, que introduz a
idéia de recursos que mantém estados e podem ser acessados através de Web Services
via o uso convencional de WS-Addressing.
Em linhas gerais, a evolução de OGSI se deu em três fases: introdução do conceito
de WS-Resource ; divisão de funcionalidades em várias especicações melhorando
a compatibilidade com ferramentas usadas para Web Service ; e nalmente, uma
melhoria nos mecanismos de noticação. O padrão WSRF deve se materializar, de
forma estável, através do lançamento do Globus toolkit 4.
57
4
Especicação Funcional
4.1 A Camada de Wrapper-Grid do CoDIMS
Como já ressaltado anteriormente, na versão atual do CoDIMS (BARBOSA, 2001),
os wrappers estão instalados no mesmo servidor e implementados internamente no componente Acesso aos Dados. Isso acarreta sobrecarga deste servidor, gerando lentidão na
execução das consultas. Com o intuito de solucionar este problema, neste trabalho é dada
uma maior ênfase na elaboração de uma sistemática que possibilite a distribuição e execução de wrappers em um ambiente distribuído (nós de um Grid), objetivando melhorar o
desempenho do CoDIMS como um todo. Isso é feito através da criação de uma camada de
Wrapper -Grid que é composta por Componentes Wrapper Grid (WGCs). Nesta camada,
os Wrappers Services irão desempenhar suas funcionalidades, que são: comunicação com
as fontes de dados e tradução entre modelos. Além desse, outros serviços são necessários,
tais como: noticação, armazenamento etc.
A arquitetura original do CoDIMS (Figura 22) é dividida em três camadas: Apresentação, Integração e Fontes de Dados. Com a incorporação da camada de Wrapper -Grid
(BIANCARDI; SILVESTRE; BARBOSA, 2005), o CoDIMS agora possui uma arquitetura
de quatro camadas, que são: Apresentação, Integração, Wrapper -Grid e Fontes de Dados
(Figura 23).
Através de uma aplicação cliente, um usuário de uma instância do CoDIMS submete
sua consulta, que é repassada para a camada de Integração. Nesta camada, o componente Controle é responsável por receber a consulta e repassá-la para o componente
Processamento de Consulta. Este componente transforma uma consulta escrita em uma
linguagem de alto nível (por exemplo SQL), disponibilizada pelo sistema integrador, em
uma estratégia eciente de execução, considerando, por exemplo, as características das
fontes de dados. O Processamento de Consulta
1
(Figura 24) deve interpretar e analisar
(Analisador) a consulta global recebida, produzir as sub-consultas (Reescritor) que serão
1 Uma
descrição mais detalhada de cada sub-componente pode ser encontrada em (BARBOSA, 2001).
58
Figura 22: Arquitetura do CoDIMS sem Grid .
Figura 23: Arquitetura do CoDIMS em um ambiente de Grid.
59
submetidas a cada uma das fontes de dados, gerar um plano de execução global otimizado
(Otimizador) e proceder a execução da consulta e a composição dos resultados parciais
(Processador - MEC (PINHEIRO, 2004)) vindos de cada fonte.
Figura 24: Interação entre os sub-componentes do Processmento de Consultas com os
components do CoDIMS.
O Plano de Execução de Consultas (PEC) gerado pelo Otimizador é implementado
através de uma árvore de consulta. Cada folha desta árvore armazena uma sub-consulta
que deve ser encaminhada, através da MEC, para ser executada em uma fonte de dados
a qual está relacionada.
A capacidade do CoDIMS de integrar dados heterogêneos e distribuídos se dá, em
parte, devido ao comportamento do componente Acesso aos Dados que, através dos wrap-
pers, consegue acessar as fontes locais nos seus diversos formatos. Para tanto, cada subconsulta gerada pelo componente Processamento de Consulta deve ser enviada ao componente Acesso aos Dados através da MEC. Na implementação atual do CoDIMS este
envio é feito de maneira síncrona, ou seja, para cada folha do PEC é estabelecida uma
comunicação com o componente Acesso aos Dados e enviada a sub-consulta. Essa comunicação perdura até o término da recuperação do conjunto-resultado dessa sub-consulta.
Isso segue para todas as folhas do PEC, de forma que nenhuma outra folha (sub-consulta)
possa ser processada fora da ordem estabelecida (caminhamento nesta árvore). A gura
25 ilustra esse processo de execução.
Este trabalho traz uma nova abordagem que elimina essa deciência. É possível,
para cada folha do PEC, ser feita uma chamada assíncrona ao componente Acesso aos
Dados. Nesse componente existe uma la de sub-consultas a serem executadas. As
mensagens a serem inseridas nessa la contêm as seguintes informações: identicador da
consulta, identicador da sub-consulta e info-sub-consulta, que contém a sub-consulta
propriamente dita (embutida em XML e representada segundo o padrão estabelecido em
60
Figura 25: Interação entre a MEC, Acesso aos Dados(AD) e os wrappers para execução
do PEC.
(PINHEIRO, 2004)), além de outras informações. O identicador da consulta é necessário
pois, futuramente, pensa-se em estender o CoDIMS de forma a suportar um ambiente
multi-usuário. Um exemplo de la pode ser visto na Figura 26.
Uma sub-consulta a ser executada é enviada pela MEC ao componente Acesso aos
Dados, neste ela é inserida no nal da la de execução de sub-consultas. Sempre que uma
inserção é realizada nessa la, uma noticação é feita ao observador da mesma, indicando
que existe uma nova sub-consulta que deve ser executada. Para tanto, é preciso recuperar
os dados armazenados na la. O observador recupera os dados da sub-consulta a ser
executada seguindo a ordem imposta pela la. Para proceder essa execução, é preciso
enviar esses dados para a camada de Wrapper -Grid, que é formada pelos Componentes
Wrapper Grid (WGCs) (BIANCARDI; SILVESTRE; BARBOSA, 2005) (Figura 27).
Como um dos objetivos é paralelizar a execução das sub-consultas e as tarefas desempenhadas pelos wrappers, é criada uma thread para cada sub-consulta a ser enviada para
a camada mencionada, de forma que as sub-consultas sejam encaminhadas de maneira
assíncrona, já que isso deve ser feito para todas as sub-consultas provenientes da MEC.
4.2 Componente Wrapper Grid - WGC
WGC (Figura 27) é um componente que visa auxiliar o processo de integração de
dados heterogêneos e distribuídos. Na base deste componente é usado o Globus Toolkit
61
Figura 26: Fila de sub-consultas a serem executadas.
62
(GLOBUS, 2004), que é uma implementação de referência OGSA (FOSTER; GANNON,
2003). Um WGC estende os serviços Grid para suportar as seguintes funcionalidades
dentro do cenário de integração de dados:
Figura 27: Wrapper Grid Component (WGC).
• publicar os serviços do componente;
• encapsular as funcionalidades básicas de um wrapper em um Wrapper Service - WS;
• gerenciar o ciclo de vida de instâncias de WS;
• noticar o componente Acesso aos Dados quando uma sub-consulta for nalizada;
• armazenar o conjunto resultado gerado por uma sub-consulta em um nó do Grid;
• processar uma sub-consulta;
• fornecer informações sobre o nó (capacidade ociosa de processamento, memória e
armazenamento);
• outros serviços podem ser adicionados para aplicações especícas.
Para que seja feita a utilização de um WGC, é necessário fazer a instalação do mesmo
em um nó do Grid. Com o objetivo de possibilitar a escolha de qual nó (onde existe um
WGC instalado) irá executar uma determinada instância de um WS especíco, em um
WGC existem WSs para todas as fontes de dados envolvidas na conguração do CoDIMS
(Figura 28). Para cada fonte de dados que faz parte de um sistema congurado (instância
63
do CoDIMS), deve haver um WS especíco e publicado no componente Metadados. Convém ressaltar que a complexidade de um WS está relacionada à diculdade de tradução
da linguagem do sistema congurado para a linguagem da fonte de dados e a forma de
acesso à ela.
Figura 28: Em cada WGC existem WSs para todas as fontes.
Antes de o componente Acesso aos Dados encaminhar uma sub-consulta a um WGC,
é preciso que o mesmo escolha em qual nó, com maior ociosidade, uma instância WS
será alocada. Para isso, o componente Acesso aos Dados faz uma análise do estado
atual dos nós, levando em consideração fatores como: CPU, memória, capacidade de
armazenamento, largura de banda da rede, comunicação entre as máquinas etc. Para
obter estas informações, Acesso aos Dados consulta os WGCs instalados nos nós do Grid.
Vale lembrar que outros tipos de informações como estatísticas das fontes (tempo médio
de acesso, capacidade de processamento e complexidade de tradução) também devem
ser levadas em consideração para fazer essa alocação, dado que para um nó com grande
capacidade de processamento é mais interessante alocar uma instância WS, por exemplo,
associada a fontes que possuam uma maior capacidade de processamento sendo possível
aproveitar, ao máximo, a ociosidade do nó. Para obter essas informações, o componente
Acesso aos Dados deve consultar o componente Metadados.
Escolhido o nó, o componente Acesso aos Dados recupera de info-sub-consulta, qual o
WS associado a fonte a ser consultada (para cada fonte existe um diferente WS associado),
a sub-consulta e as informações de acesso à fonte (URL, usuário, senha, porta etc). Em
seguida, o mesmo faz a alocação da instância WS no respectivo nó, situado na camada
de Wrapper -Grid, com a sua sub-consulta, a ser encaminhada à fonte, bem como as
informações de acesso à fonte. Nesta camada, as seguintes tarefas são desempenhadas
64
após a criação da instância WS: tradução da sub-consulta do modelo global para o modelo
de dados nativo da fonte; comunicação com a fonte de dados; encaminhamento da subconsulta para a fonte de dados. A gura 29 ilustra quais passos o componente Acesso
aos Dados deve seguir para a criação de uma instância WS.
Figura 29: Criação de uma instância WS.
Vale ressaltar que para aquelas fontes que não possuem capacidade de processamento
de consulta, um WS poderia efetuar esse processamento. Na fonte de dados, a subconsulta é processada e, ao término, o conjunto resultado é transmitido para a camada
de Wrapper -Grid, mais precisamente para o nó no qual foi criada a instância do serviço.
Após a transmissão, é feita a tradução de modelos do conjunto-resultado (conversão do
modelo nativo da fonte para o modelo de dados global) e, logo após, é feita uma noticação ao componente Acesso aos Dados, para que este possa indicar o término da execução
da sub-consulta à MEC. Nessa noticação, são enviadas as seguintes informações: identicador da consulta, identicador da sub-consulta e localização (endereço do nó, diretório
e nome do arquivo) do conjunto-resultado da sub-consulta em questão. Isso é necessário
para que a MEC tenha o conhecimento de quais sub-consultas foram nalizadas e assim
possa executar o seu PEC Global. No componente Acesso aos Dados existe uma la
responsável por armazenar essas informações e, sempre que uma nova informação é inserida, é feita uma noticação à MEC. Tal sistemática garante que os conjuntos-resultado
65
provenientes da execução de cada sub-consulta quem armazenados em diferentes nós do
Grid, permitindo, assim, a continuidade da execução do PEC de forma distribuída e, conseqüentemente, possibilitando a execução paralela das suas operações internas (junções,
uniões etc.). Um exemplo de la pode ser visto na Figura 30.
Figura 30: Fila de sub-consultas já executadas.
Na gura 31 é mostrado o processo de execução de sub-consultas descrito anteriormente.
Figura 31: Processo de execução de sub-consutlas de forma assíncrona.
Para resumir a especicação funcional do CoDIMS, a Figura 32 ilustra todo o uxo
de execução de uma consulta. Alguns detalhes como por exemplo, mensagens das las,
66
foram omitidos por questão de espaço. Nesta gura existe uma enumeração dos passos
para a execução completa de uma consulta.
• 1 - usuário submete uma consulta, através de uma aplicação cliente, à camada de
apresentação;
• 2 - componente Controle recebe a consulta e encaminha para o componente Processamento de Consulta (PC);
2.1 - PC consulta o componente Metadados para obter informações sobre mapeamentos, existência de tabelas e atributos, Wrapper Services, informações de
acesso a fontes e estatísticas para desempenhar as funcionalidades de Analisar
(2.2), Reescrever (2.3) e Otimizar (2.4) a consulta global;
2.5 - é feito o envio das sub-consultas para o componente Acesso aos Dados
(AD) e a composição dos conjuntos-resultado provenientes da execução das
sub-consultas;
• 3 - AD recebe as sub-consultas e armazena em uma la de execução de consultas.
Para cada sub-consulta inserida, é feita uma análise da ociosidade dos nós, alocada
uma instância WS no nó escolhido e encaminhada a sub-consulta;
• 4 - é feita a tradução da consulta do modelo global para o modelo local e estabelecida
uma comunicação com a fonte de dados. Em seguida, a sub-consulta é encaminhada
para a fonte (4.1);
• 5 - a fonte processa a sub-consulta e retorna o resultado para o WGC associado a
instância WS gerenciando esta sub-consulta (5.1);
• 6 - recuperar o conjunto-resultado vindo da fonte e efetuar a tradução entre modelo
do mesmo e armazena este resultado no nó;
• 7 - após armazenar o conjunto-resultado, a instância WS notica AD indicando o
término da execução da sub-consulta;
• 8 - AD notica a MEC indicando o término da execução da sub-consulta, bem como
fornece informações de acesso ao conjunto-resultado gerado por esta sub-consulta;
• 9 - Ao término da composição dos conjuntos-resultados, PC encaminha os resultado
nal para o Controle que por sua vez repassa para o Cliente.
67
Figura 32: Exemplo de execução de uma consulta.
68
5
Modelagem
5.1 Diagramas de Pacotes e de Classes
A Figura 33 mostra o diagrama de pacotes e a dependência entre eles, no caso
AcessoDados, ProcessamentoConsulta e Wrapper -Grid.
Figura 33: Dependência entre os pacotes AcessoDados, ProcessamentoConsulta e Wrapper -Grid.
Essa dependência existe, pois o pacote Acesso aos Dados necessita de elementos denidos no pacote Wrapper -Grid para que seja possível fazer a interação entre as camadas de
Integração e Wrapper -Grid. Já o pacote ProcessamentoConsulta necessita elementos denidos no pacote AcessoDados para poder executar as sub-consultas e efetuar a composição
dos conjuntos-resultados de cada uma destas. Essa interação se dá, por exemplo, através
da criação de instâncias de serviços Grid e da noticação de execuções de sub-consultas
já processadas.
A seguir serão descritas as principais classes de cada pacote.
5.1.1 Classes do pacote AcessoDados
A Figura 34, mostra as classes do pacote AcessoDados e como elas se relacionam.
69
Figura 34: Classes do pacote AcessoDados.
• FachadaAcessoDados : Esta classe (Figura 35) é constituída pelos seguintes atributos: laMsg, contém as informações sobre as sub-consultas a serem processadas nas
fontes de dados; ec, que é responsável por disparar um processo para a execução de
uma sub-consulta; e objObserver, que contém o observador de laMsg. Com relação
aos seus métodos, setMsg tem por nalidade inserir informações sobre uma nova
sub-consulta em laMsg e, após isso, noticar o observador da la para que ele
dispare um processo que inicie a execução da sub-consulta.
Figura 35: Classe FachadaAcessoDados do pacote AcessoDados.
• ExecutaSubConsulta : Esta classe (Figura 36) é constituída pelos seguintes atributos: listaIn, contém as informações sobre as sub-consultas a serem processadas nas
fontes de dados; listaOut, contém as informações sobre todas as sub-consultas já
processadas nas fontes de dados; index, um índice controlador da próxima consulta
a ser executada; notMec, responsável por noticar a MEC (Máquina de Execução
de Consultas) com informações sobre o resultado da execução de uma sub-consulta;
ewt, representa os processos a serem disparados para criar instância(s) de Wrapper
Service que irão executar sub-consultas. Dentre os seus métodos alocaWrapperService é responsável por analisar a ociosidade dos nós que fazem parte do Grid levando
em consideração fatores como, uso de CPU e memória, estatística de consultas e
disponibilidade da fonte, para que seja possível alocar a instância de um Wrapper
70
Service, a ser criada, em um nó menos sobrecarregado; getWarpperService tem por
nalidade descobrir qual Wrapper Service é responsável por uma fonte a ser acessada; handleEvent dispara um processo que cria uma instância de Wrapper Service
para proceder a execução da sub-consulta, de acordo com as informações dadas pelos
dois métodos anteriores.
Figura 36: Classe ExecutaSubConsulta do pacote AcessoDados.
• ExecutaWrapperThread : Esta classe (Figura 37) é constituída pelos seguintes atributos: conObj, que contém o observador de listaOut ; listaOut, que contém as informações sobre as sub-consultas já processadas nas fontes de dados; infoLista, que
representa as informações sobre uma sub-consulta a ser processada; site, que é a
localização do nó do Grid; ServiceLocator, que representa a localização do serviço
e ser executado; servico, instância do serviço criado. Dentre os seus métodos: run,
método executado quando um processo desta classe é disparado, para tanto Exe-
cutaWrapperThread estende a classe Thread ; executaServico, cria a instância do
Wrapper Service para processar a sub-consulta na fonte; geraSubConsulta, retorna
a sub-consulta no modelo da fonte; getInfoAcesso, retorna informações sobre como
acessar a fonte de dados da sub-consulta.
• NoticaMec : Esta classe (Figura 38) é constituída pelos seguintes atributos: laOutMsg, representa todas as sub-consultas já processadas nas fontes de dados;
index, um índice controlador da próxima consulta a ser executada. Dentre os métodos: handleEvent ; envia uma mensagem para a MEC noticando o término da
execução de uma sub-consulta.
• ConcretObservable : Esta classe (Figura 39) possui o seguinte atributo: observers,
uma lista que contém os observadores relacionados com uma instância da classe ConcretObservable. Dentre os seus métodos: addObserver(obsrNewObserver, adiciona
71
Figura 37: Classe ExecutaWrapperThread do pacote AcessoDados.
Figura 38: Classe NoticaMec do pacote AcessoDados.
um observador a observers ; removeObserver, remove um observador de observers ;
notifyObservers, notica todos os observadores de uma instância de ConcretObservable presentes em observers. Para desempenhar essa nalidade, essa classe implementa o pattern Observer (JAVACAMP, 2005).
Figura 39: Classe ConcretObservable do pacote AcessoDados.
5.1.2 Classes do pacote Wrapper-Grid
A Figura 40, mostra as classes do pacote Wrapper -Grid e como elas se relacionam.
• WrapperBDimpl : Esta classe (Figura 41) implementa um serviço Grid - (Wrapper
Service ) - para uma fonte de dados. Ela é constituída pelos seguintes atributos:
72
Figura 40: Classes do pacote Wrapper -Grid.
consultaXML, contém os dados necessários, encapsulados em XML, para gerar uma
sub-consulta a ser processada na fonte; nomeArqResultado, nome do arquivo no qual
será armazenado o conjunto resultado; infoAcesso, contém os dados de acesso da
fonte. Dentre os métodos: conecta, estabelece uma conexão com a fonte de dados;
shutDown, fecha a conexão com a fonte; subConsulta, executa a sub-consulta na fonte
e recupera o resultado; transformaModelo, aplica a transformação de modelos de
dados no conjunto-resultado gerado (modelo nativo da fonte para o modelo global);
parserDados, recupera de infoAcesso os dados de acesso a fonte. Esta classe estende
GridServiceImpl e implmenta WrapperPortType. Estas classes contêm a denição
e implementação dos métodos necessários para que seja possível criar um serviço
Grid.
Figura 41: Classe WrapperBDImpl do pacote WrapperGrid.
73
• WrapperServiceGridLocator : criada quando do processo de geração do serviço Grid.
É utilizada no pacote AcessoDados, possibilitando encontrar um Wrapper Service
implantado em um nó do Grid.
5.1.3 Classes do pacote ProcessamentoConsulta
A Figura 42, mostra as classes do pacote ProcessamentoConsulta e como elas se
relacionam.
Figura 42: Classes do pacote ProcessamentoConsulta.
• MEC : Esta classe (Figura 43) contém o Plano de Execução de Consultas (PEC)
com as sub-consultas a serem executadas nas fontes de dados. Nesta classe existe
uma la, laSubCons, com as informações das sub-consultas já executadas. Existe
um observador, objObserver, para esta la, que notica a existência de conjuntosresultado já processados para que a MEC possa executar as operações internas do
PEC de forma distribuída. O método setMsg insere informações nesta la sobre as
sub-consultas já processadas.
Na Figura 44, é mostrado o diagrama de classes envolvendo as classes dos três pacotes
acima e como as mesmas se relacionam.
A modelagem das classes foi feita usando a linguagem UML (Unied Modeling Lan-
guage ) através da ferramenta JUDE Community 1.4.3 (MANAGEMENT, 2005).
74
Figura 43: Classe MEC do pacote ProcessamentoConsulta.
5.2 Diagrama de Sequência
O objetivo deste diagrama (Figura 45) é descrever as comunicações necessárias entre
objetos para a realização da execução de uma consulta. Assim, neste diagrama é feito, ao
longo de uma linha de tempo, a sequência de comunicações entre objetos.
75
Figura 44: Diagrama de Classes
76
Figura 45: Diagrama de sequência
77
6
Estudo de Caso
6.1 Descrição da Aplicação
Um hospital deseja saber, em um tempo hábil, dentre aquelas pessoas que já tiveram passagem por ele, aquelas que são doadoras de sangue para um determinado tipo
sangüíneo. Essa informação é necessária pois, na unidade de emergência desse hospital,
ocorrem, com frequência, casos em que pacientes necesitam fazer uma transfusão de sangue. Apesar disso, nem sempre existe um determinado tipo sangüíneo disponível em seu
banco de sangue.
Para tentar resolver esse problema, sempre que existe a necessidade de sangue por
algum paciente e este sangue não está disponível, é feita uma consulta nos dados cadastrais
de todos os pacientes, para descobrir aqueles que possuem o tipo sangüíneo desejado.
Essa consulta é possível pois, nos dados cadastrais dos pacientes existem informações do
tipo sangüíneo e se o paciente está apto a doar. Isso é feito com o objetivo de tentar
estabelecer um contato e solicitar uma possível doação nos casos de maior emergência.
Caso seja encontrado um doador, uma ambulância é deslocada até a residência do mesmo
para que o sangue seja recolhido.
Contudo, sempre que existe a necessidade de fazer este tipo de consulta, é necessário acessar as fontes de dados do ambulatório e da enfermaria, já que não existe um
banco de dados central e as informações podem estar presentes em uma e/ou em outra
destas unidades do hospital. Além disso, os dados estão armazenados em dois tipos de
fontes, possuindo representações diferentes, já que foram desenvolvidos de uma maneira
independente. Assim, é necessário o acesso e a integração destas duas fontes de dados,
distribuídas e heterogêneas, de forma que uma única visão, uniforme e homogênea, seja
fornecida.
A base de dados "ambulatorio", presente na unidade ambulatório, tem seus dados
armazenados segundo o modelo de dados XML, como pode ser visto na Figura 46.
78
Figura 46: DTD da fonte XML "ambulatorio".
O banco de dados "paciente", presente na unidade enfermaria, tem seus dados armazenados no modelo de dados relacional, como pode ser visto na Figura 47.
Figura 47: Esquema da fonte relacional "paciente".
Para resolver este problema, foi criada uma instância do CoDIMS com seus componentes básicos. Considerando o modelo de dados dessa instância como sendo relacional,
o esquema integrado disponibilizado para consultas é conforme a Figura 48.
Suponha que a seguinte consulta (Figura 49), no formato SQL, seja enviada ao
CoDIMS. Com esta consulta, deseja-se saber quais pessoas estão aptas a doar sangue,
sendo que o tipo sanguíneo deve ser O+.
Após a execução das tarefas de análise, reescrita e otimização, será gerado um plano
de execução de consulta (PEC) otimizado contendo as sub-consultas a serem processadas,
bem como as operações a serem aplicadas sobre os conjuntos-resultado vindos de cada
79
Figura 48: Esquema global visto pelos usuários.
Figura 49: Consulta enviada ao CoDIMS, na linguagem SQL.
fonte de dados. Este PEC é enviado à máquina de execução de consultas (MEC) para ser
executado. Como o modelo de dados integrador é relacional, as sub-consultas são geradas
no formato relacional, encapsuladas em XML segundo o padrão denido em (PINHEIRO,
2004). Estas sub-consultas chegam aos wrappers, relacional e XML, conforme as guras
50 e 51, respectivamente .
Na sub-consulta da Figura 50, nomep, cidade, uf e telefone representam os atributos
a serem recuperados da fonte de dados paciente, segundo a condição estabelecida: edoador
= 'sim' e tiposanguineo = 'O+'.
Na sub-consulta da Figura 51, rst_name, last_name, cidade, estado e fone representam os atributos a serem recuperados da fonte de dados ambulatorio, segundo a condição
estabelecida: edoador = "sim"e tiposanguineo = 'O+'.
O wrapper relacional irá transformar a sub-consulta da Figura 50 em uma consulta
compreendida pela fonte de dados relacional, como pode ser visto na Figura 52. Essa
sub-consulta será processada pela fonte de dados relacional, e esta retornará um conjuntoresultado, no modelo de dados local, para o wrapper relacional. Este efetua a tradução do
conjunto-resultado para o modelo global, e converte os atribuitos locais para atribuitos
80
Figura 50: Sub-consulta enviada ao wrapper relacional.
Figura 51: Sub-consulta enviada ao wrapper XML.
81
globais levando em consideração os mapeamentos (correspodências) entre os mesmos, por
exemplo: no caso do atributo nomep, ele deveria ser mapeado para os atributos rst_name
e last_name. Por m, o wrapper gera um arquivo XML com essas informações.
Figura 52: Sub-consulta no modelo de dados nativo da fonte (fonte relacional).
Caso a fonte de dados não possua capacidade de processamento de consulta, o wrapper
extrai os atributos e as condições da sub-consulta, recupera todos os dados da fonte através
de um serviço Web, por exemplo, e faz o seu processamento segundo as condições. Isso é
feito para a sub-consulta da Figura 51, já que a fonte ambulatório não possui capacidade
de processamento de consulta.
6.2 Cenários de teste
Objetivando comparar a situação atual do CoDIMS (wrappers implementados internamente no componente Acesso aos Dados e executando em um mesmo servidor) com
este trabalho (a incorporação da camada de Wraper -Grid na arquitetura do CoDIMS e a
conseqüente execução, em paralelo, dos wrappers ), foram criados dois cenários de teste,
descritos a seguir.
6.2.1 Centralizado
O primeiro cenário de teste diz respeito a uma aplicação com processamento centralizado dos wrappers. Essa aplicação foi implementada levando em consideração a necessidade de efetuar o compartilhamento dos recursos de uma única máquina. Foram
implementadas duas classes que encapsulam as funcionalidades de wrappers XML e relacional, repectivamente. Estas classes estendem a classe Thread para que seja possível
executar os wrappers (XML e relacional) concorrentemente, possibilitando, assim, o uso
compartilhado/concorrente dos recursos da máquina (memória, CPU etc). Nesta aplicação foram disparados dois threads, um para o wrapper XML e outro para o wrapper
relacional. Cada wrapper tem por nalidade montar a sub-consulta no modelo da fonte,
acessar a fonte de dados à qual está associado, encaminhar a sub-consulta, recuperar
82
Tabela 2: Conguração das partes integrantes da infra-estrutura de teste centralizada.
Conguração
Camada
CAMBURI
PIII-850Mhz, 512M RAM
Wrappers Centralizados
GURIRI
PIII-850Mhz, 490M RAM
Fontes de Dados - SGBD
SETIBA
DURON-950Mhz, 512M RAM Fontes de Dados - serviço Web
HUB
10/100 Mbps
SWITCH
10/100 Mbps
-
o conjunto-resultado proveniente da execução da sub-consulta e efetuar a tradução de
modelo.
A infra-estrutura de teste pode ser vista na Figura 53. Na Figura 54, é mostrada uma
visão por camada da infra-estrutura de teste. Na Tabela 2 são mostradas as congurações
das partes integrantes desta infra-estrutura: máquinas, hub e switch.
Figura 53: Infra-estrutura de teste - wrappers centralizados.
A ferramenta de software utilizada na implementação foi o pacote Java J2SE Deve-
lopment Kit (JDK) 1.5.0.
83
Figura 54: Infra-estrutura de teste - wrappers centralizados - dividida em camadas.
6.2.2 Distribuído
O segundo cenário de teste está relacionado ao processamento distribuído dos wrap-
pers. Nesse sentido, foi implementada uma aplicação através da qual foi possível fazer
o uso dos recursos distribuídos. Para tanto, foi feita a instalação do middleware Globus
Toolkit 3.2 em duas máquinas, constituindo dois nós de Grid. Também foram implementados dois serviços Grid que encapsulam as funcionalidades de wrappers XML e relacional.
A descrição destes serviços, em GWSDL, é mostrada nas Figuras 55 e 56.
Este cenário poderia ser implementado através de outras tecnologias de computação
distribuída, tais como: CORBA, Web Services etc. Contudo, conforme discutido no
capítulo 3, essas tecnologias possuem algumas deciências com relação à computação
em Grid. Assim, como a pretensão é ter os wrappers compartilhando recursos dispersos
geogracamente em escala global, nada mais natural que utilizar um Grid.
A infra-estrutura de teste é mostrada na Figura 57. Na Figura 58, é mostrada uma
visão por camada da infra-estrutura de teste. Na tabela 3 são mostradas as congurações
das partes integrantes desta infra-estrutura: máquinas, hub e switch. O Hub possui 8
portas sendo que 7 estão em uso. Já o Switch possui 24 portas sendo que 12 estão em
uso.
Na máquina COSTA está instalado o Tomcat 5.5.7, que é utilzado para a implantação do componente Acesso aos Dados. Este componente é implementado através de um
Web Service, usando Apache Soap-RPC (TREVISOL, 2004). Nas máquinas CAMBURI
e ITAUNAS está instalado o Globus Toolit 3.2 (GLOBUS, 2004) e estão implantados os
84
Figura 55: Descrição do serviço Grid WrapperWSImpl em GWSDL.
85
Figura 56: Descrição do serviço Grid WrapperBDImpl em GWSDL.
86
Figura 57: Infra-estrutura de teste - wrappers distribuídos.
Tabela 3: Conguração das partes integrantes da infra-estrutura de teste distribuída.
Conguração
Camada
COSTA
PIII-450Mhz, 256M RAM
Integração
CAMBURI
PIII-850Mhz, 512M RAM
Wrapper -Grid
ITAUNAS
PIII-850Mhz, 380M RAM
Wrapper -Grid
GURIRI
PIII-850Mhz, 490M RAM
Fonte de Dados - SGBD
SETIBA
DURON-950Mhz, 512M RAM Fonte de Dados - serviço Web
HUB
10/100 Mbps
SWITCH
10/100 Mbps
-
87
Figura 58: Infra-estrutura de teste - wrappers distribuídos - dividida em camadas.
Wrapper Services desenvolvidos neste trabalho: fonte relacional (paciente) e XML (ambulatório). Na máquina GURIRI está instalado o SGBD Postgresql 7, que é responsável
pelo gerenciamento do banco de dados relacional. Na máquina SETIBA, está instalado o
Tomcat 5.5.7, que é utilizado para a implantação de um Web Service que foi desenvolvido
usando Apache Soap-RPC e tem por objetivo gerenciar (fornecer acesso aos dados) a fonte
de dados XML. Além disso, também existe instalado nesta máquina o SGBD Postgresql 7
para gerenciar a fonte ambulatório, só que agora representada usando o modelo relacional.
Com exceção da máquina SETIBA, que possui o sistema operacional Red Hat 8, todas as
outras máquinas possuem o sistema operacional Suse 9.0 instalado.
6.3 Resultados
Na descrição da aplicação, foi considerado apenas o cenário onde existe uma fonte
de dados relacional e outra XML. Para que os testes possam ser melhor analisados será
considerado um outro caso onde as duas fontes são relacionais.
Os testes foram feitos da seguinte forma: os conjuntos gerados pelas fontes de dados
possuem o mesmo tamanho, sendo que este tamanho aumenta para cada nova execução do teste. Possuindo o mesmo tamanho, aumenta-se a concorrência pelos recursos
computacionais, no caso da abordagem centralizada, já que, dependendo do tempo de
88
resposta das fontes de dados, os conjuntos a serem processados poderão chegar praticamente juntos. Com isso, os processos executando instâncias de diferentes wrappers terão
que desempenhar a tarefa de tradução de modelos com uma maior concorrência. No caso
da abordagem distribuída, não existirá essa concorrência pelos recursos computacionais
em uma única máquina, pois os processos iniciam as instâncias dos wrappers de forma
que elas executem em máquinas distribuídas, no caso, nós de um Grid.
Os resultados obtidos a partir dos testes feitos podem ser visualizados nos grácos
das Figuras 59 e 60. Nos testes, foram medidos os tempos de execução de cada wrapper
em separado. Assim, o tempo gasto pela aplicação, no que diz respeito a execução dos
wrappers, é indicado pelo maior tempo de execução. Por exemplo, no gráco da Figura
59, o tempo gasto para processar 1500 linhas na abordagem centralizado é 7,40 segundos
e, na abordagem distribuída, é 2,30 segundos.
Observando o gráco da Figura 59, pode-se concluir que: para pequenos conjuntos
de dados (até 300 linhas), a serem processados pelos wrappers, a abordagem centralizada
mostra-se mais eciente. Contudo, a partir deste ponto, a abordagem distribuída começa
a ser mais eciênte. Isso porque, na abordagem centralizada, quanto maior o conjunto de
dados a ser processado, maior será a concorrência pelo uso dos recursos computacionais.
Isso não acontece na abordagem distribuída, pois os wrappers estão executando em máquinas distintas. Uma mesma seqüência de testes foi feita em dias e horários diferentes.
Todos os resultados obtidos sinalizaram que quando aumenta o número de linhas maior
o tempo gasto.
Vale lembrar que não foi utilizada uma infra-estrutura dedicada de rede e de máquinas, ou seja, usuários do laboratório 1 , onde os testes foram realizados, poderiam estar
utilizando as máquinas no momento em que os testes estivessem executando. Além disso,
os testes foram feitos em dias distintos, ou seja, em um dia foi executado o cenário centralizado e em outro dia o cenário distribuído. Assim, como pode ser observado no gráco
da Figura 60, que mostra a execução das duas abordagens (centralizada e distribuída)
em diferentes horários, mas com os mesmos conjuntos-resultado (BD - 5000 linhas e XML
- 2000 linhas), os tempos de execução dos wrappers se mantêm praticamente os mesmos,
possuindo uma pequena variação. Isso mostra que a capacidade ociosa das máquinas,
a partir das quais está sendo feito o uso compartilhado dos recursos distribuídos, pode
contribuir, na abordagem distribuída, para a melhora no desempenho do CoDIMS. Uma
mesma seqüência de testes foi feita em dias diferentes mas nos mesmos horários. Todos
1 Laboratório
de Pesquisa em Redes e Multimídia - LPRM
89
Figura 59: Gráco de comparação entre as duas abordagens: Centralizada concorrente;
Distribuída. Fontes de dados: Bancos relacionais.
Figura 60: Gráco de comparação entre as duas abordagens: Centralizada concorrente;
Distribuída. Conjuntos-resultado com tamanho xos.
90
os resultados obtidos sinalizaram uma pequena alteração no tempo de execução, contudo
os mesmos se mantiveram praticamente os mesmos.
91
7
Conclusões
7.1 Conclusões gerais
Computação Grid tem se tornado muito popular, e muitos projetos tem sido iniciados para suportar, em parte, a visão de um Grid (FOSTER; KESSELMAN, 1999). Com
isso, a computação Grid tem emergido como um importante novo campo, distinto da
computação distribuída convencional, dado que o seu foco está no compartilhamento de
recursos, onde a principal idéia é criar a ilusão de um supercomputador virtual, em grande
escala, facilmente gerenciável e com uma grande quantidade de recursos (ciclos de CPU,
dados, dispositivos de armazenamento etc) sendo compartilhados (BERSTIS, 2003). Os
dispositivos podem estar em uma mesma sala ou distribuídos através do mundo, podem
estar utilizando diferentes plataformas de hardware ou diferentes sistemas operacionais, e
podem pertencer a diferentes empresas ou instituições.
Neste contexto, sistemas como Globus toolkit estão sendo desenvolvidos para fornecer
um conjunto de serviços Grid básicos, seguindo o padrão OGSI. Para suportar aplicações
em integração de dados, cujos dados são essecialmente heterogêneos e distribuídos, outros
tipos de serviços, tais como aqueles característicos de um wrapper, podem ser adaptados
para o ambiente de Grid.
Assim, o objetivo deste trabalho é a especicação e a implementação de uma nova camada, Wrapper -Grid, incorporada ao CoDIMS. Esta camada é composta por Componentes Wrapper -Grid (WGCs), os quais estão instalados em nós de um Grid, e implementam
serviços Grid que encapsulam as funcionalidades de wrappers. Isso possibilita a execução,
em paralelo, dos wrappers, já que estes são alocados para executar em nós de um Grid.
O objetivo principal dessa abordagem é o aumento de eciência do CoDIMS, já que, em
sua versão atual, os wrappers são implementados internamente no componente Acesso aos
Dados e instalados em um mesmo servidor, gerando sobrecarga deste servidor e lentidão
na execução das sub-consultas.
92
Em cada WGC existem Wrappers-Services para todas as fontes de dados que fazem
parte de uma conguração do CoDIMS. Com isso, é possível criar uma instância de um
Wrapper-Service, para uma fonte especíca, no nó que esteja com maior capacidade ociosa,
aproveitando os recursos disponíveis e distribuídos.
Uma alteração fundamental, feita no componente Acesso aos Dados, foi a criação de
um mecanismo de noticação. Esse mecanismo permite que as sub-consultas provenientes
do componente Processamento de Consulta, mais precisamente da MEC, sejam executadas
em paralelo. Além disso, o mecanismo permite que a MEC possua a informação de quais
são os conjuntos-resultado que já foram processados pelos Wrappers-Services e, assim a
mesma pode proceder o processamento de suas operações internas (junções, uniões etc)
segundo os princípios de banco de dados distribuídos.
Os resultados obtidos mostram que, para aquelas aplicações nas quais os conjuntosresultado proveniente das fontes de dados são pequenos, a utilização da versão original do
CoDIMS mostra-se satisfatória. Contudo, para aquelas aplicações nas quais os conjuntosresultado são razoavelmente grandes, e tendem a crescer mais, a nova abordagem do
CoDIMS apresentada neste trabalho é mais interessante, pois o tempo de resposta é
consideravelmente menor. Assim, quanto maior o conjunto-resultado, mais signicativa é
a diferença entre as abordagens, no que diz respeito ao tempo de execução da aplicação.
7.2 Contribuições
Em geral, as contribuições deste trabalho, para a integração de dados, são:
• execução em paralelo das sub-consultas a serem encaminhadas a cada fonte de dados;
• execução em paralelo dos wrappers, através da alocação destes em um ambiente
distribuído, mais precisamente alocação de instâncias Wrapper-Services em nós de
um Grid;
• disponibilização dos conjuntos resultados oriundos das fontes de dados em um ambiente distribuído, proporcionando a execução distribuída do PEC, objetivando um
melhor desempenho;
Com relação ao projeto CoDIMS, as principais contribuições estão relacioandas a:
• especicação e incorporação da camada de Wrapper -Grid e do seus componentes
(Componentes Wrappers -Grid);
93
• redução da carga do servidor Acesso aos Dados;
• criação de uma infra-estrutura de Grid;
• implementação de um protótipo com relação ao estudo de caso;
• implementação de uma la para troca de mensagens entre os componentes Processamento de Consultas (MEC) e o componente Acesso aos Dados, permitindo a
execução assíncrona e distribuída do PEC.
7.3 Trabalhos Futuros
No decorrer do desenvolvimento, surgiram alguns assuntos que não haviam sidos discutidos e pensados anteriormente, mas que agora devem ser explorados. Estes assuntos
estão relacionados tanto com o aperfeiçoamento deste trabalho como com melhorias que
devem ser feitas no CoDIMS.
• Realocação de instâncias
Devido à necessidade de realizar uma realocação de instâncias Wrapper Services
em tempo de execução, torna-se interessante que o componente Acesso aos Dados
possua a função de monitorar a vazão de cada sub-consulta. Quando identicada
sobrecarga de um nó, uma nova instância será criada para ser executada em um
outro nó do Grid. Contudo, a instância antiga poderá continuar executando pois,
para fontes com grande capacidade de processamento, pode acontecer de, apesar
de a nova instância estar executando em um nó menos sobrecarregado, a instância
antiga nalizar a sua execução antes da nova. Nesse sentido, é necessário abortar a
execução de uma instância caso o resultado já tenha sido gerado por outra. Dessa
forma, o componente que gerar primeiro o resultado deverá noticar o componente
Acesso aos Dados para que ele possa abortar a execução de instâncias Wrapper
Services idênticas às da sub-consulta em questão.
• Envio de código especíco de aplicação
Uma outra funcionalidade a ser adicionada no CoDIMS para Grid seria a implantação automática de código especíco de uma aplicação realizado através do envio
de classes Java para componentes WGCs. Para fontes de dados que não possuam
capacidade de execução de consulta, classes Java serão responsáveis por efetuar o
processamento da sub-consulta. Todas as classes Java serão primeiro armazenadas
94
em um repositório de código, presente no componente Acesso aos Dados, a partir
do qual serão posteriormente recuperadas e implantadas, de acordo com sua necessidade.
• MEC distribuída
Implementar uma nova versão da Máquina de Execução de Consulta, com suporte
a execução distribuída de consultas, já que, com a adição da camada de Wrapper Grid, os conjuntos-resultado cam armazenados em um ambiente distribuído, e a
MEC pode aproveitar isso para promover a execução distribuída do seu plano de
execução de consultas;
• Efeturar testes mais elaborados
Novos testes devem ser feitos envolvendo: mais fontes de dados; fonte de dados, por
exemplo um banco relacional, com mais de uma tabela; diferentes tipos de fontes de
dados, como por exemplo - orientada a objetos, planilhas, páginas Web, dados geográcos etc.; fontes com uma grande quantidade de dados; utilização de um número
maior de máquinas com mais recursos; implantação dos serviços desenvolvidos em
diferentes nós de um Grid pertencentes a outras instituições, de forma que se possa
ter uma Organização Virtual em escala global e com recursos mais poderosos. Além
disso, usar esta nova abordagem do CoDIMS em uma aplicação mais concreta do
mundo real;
• Novos wrappers
Para que se possa efetuar testes envolvendo diferentes tipos de fontes, será necessário
desenvolver wrappers para outros tipos de fontes de dados e implementá-los como
serviço Grid;
• Implementação do CoDIMS multi-usuário
Isso é possível pois, com a camada de Wrapper -Grid, diferentes instâncias de Wrappers-
Services podem ser criadas para diferentes usuários, o que possibilita uma independência em suas execuções. Assim, pode-se ter diferentes usuários executando
diferentes consultas ao mesmo tempo;
• Envio de Código de wrapper
Neste trabalho, para que todos os nós do Grid possam suportar todos os tipos de
Wrappers, é preciso implantar todos os Wrapper Services em todos os nós. Assim,
sempre que um novo serviço for criado, o mesmo terá que ser implantado em todos
95
os nós. Uma maneira de resolver isso seria, ao invés de ter os serviços implantados,
enviar uma classe Java que implementa o serviço, a partir do componente Acesso
aos Dados, ao nó no qual o mesmo será executando. Para que isso seja possível, é
necessário a criação de um modelo de alocação que indique qual o melhor nó para
alocar um serviço. Assim, ganha-se em independência de localização. Contudo,
testes devem ser feitos para vericar se esse envio não irá afetar o desempenho do
sistema, especialmente se estiver sendo considerado um CoDIMS multi-usuário e se
existem muitas realocações de instâncias de serviços;
• OGSA-DAI
Avaliar versões mais recentes do OGSA-DAI, vericando se os desaos apontados
por (ATKINSON, 2004) no capítulo 2, já foram incorporados ao mesmo. Em caso
positivo, analisar quais seriam as alterações a serem feitas neste trabalho de forma
a suportar o uso do OGSA-DAI. Isso é interessante pois, através do OGSA-DAI
muitas pesquisas têm sido realizadas e muitos problemas têm sido resolvidos dentro
do cenário de integração de dados. Além disso, é uma implementação de referência
do Global Grid Forum que suporta diversos tipos de fontes de dados como, por
exemplo: MySQL, Oracle, IBM DB2, PostgreSQL,Microsoft SQL Server dentre
outras.
• Globus Toolkit 4
Migrar da versão 3.2 para a versão 4.0 do Globus Toolkit, visando obter vantagens de
suas novas características, como por exemplo o padrão WSRF descrito no capítulo
3.
96
Referências
ABITEBOUL, S. et al. The lowell database research self assessment. May 2003.
Disponível em: <http://research.microsoft.com/~Gray/lowell/>. Acesso em: 25 abril
2005.
ALPDEMIR, N. et al. Ogsa-dqp: A service-based distributed query processor for the
grid. In: . UK e-Science All Hands Meeting Nottingham. EPSRC, 2003. Disponível em:
<http://twiki.mygrid.org.uk/twiki/pub/Mygrid/AllHands2003Local/114.pdf>. Acesso
em: 25 abril 2005.
ALPDEMIR, N. et al. Service-based distributed querying on the grid. In: 1st
International Conference on Service Oriented Computing (ISOC). [S.l.]: Springer Verlag,
2003. p. 467482.
ATKINSON, M. SPECIAL THEME: GRIDS THE NEXT GENERATION. october
2004. ERCIM - the European Research Consortium for Informatics and Mathematics.
Disponível em: <http://www.globus.org/alliance/publications/papers.php>. Acesso em:
25 abril 2005.
ATKINSON, M.; BAXTER, R.; HONG, N. Grid Data Access and Integration in OGSA.
2002. EPCC, University of Edinburgh. Disponível em: <http://www.cs.man.ac.uk/griddb/papers/OGSA-DAI-spec-1.2.pdf>. Acesso em: 25 abril 2005.
AYRES, F.; PORTO, F.; MELO, R. An Extensible Query Execution Engine for
Supporting New Query Execution Models. To appear in LNCS 2004.
BARBOSA, A. C. P. Middleware para Integração de Dados Heterogêneos Baseado em
Composição de Frameworks. Tese (Doutorado) PUC-Rio, Brasil, Maio 2001.
BARBOSA, A. C. P.; PORTO, F.; MELO, R. N. Congurable data integration
middleware system. J. Braz. Comp. Soc., v. 8, n. 2, p. 1219, 2002.
BERSTIS, V. Fundamentals of Grid Computing. Dec 2003. Redbooks. Disponível em:
<http://www.redbooks.ibm.com/redpapers/pdfs/redp3613.pdf>. Acesso em: 25 abril
2005.
BIANCARDI, C.; SILVESTRE, L. J.; BARBOSA, A. C. P. Integração de dados
heterogêneos em ambiente web. In: ESCOLA REGIONAL DE INFORMáTICA ERI. RJ/ES, 2004. Disponível em: <http://codims.lprm.inf.ufes.br/publicacoes.html>.
Acesso em: 25 abril 2005.
BIANCARDI, C.; SILVESTRE, L. J.; BARBOSA, A. C. P. A CoDIMS based proposal
for distribution and execution of wrappers in a grid environment. In: Proceedings of the
III Workshop on Computational Grids and Applications (WCGA 2005). [S.l.: s.n.], 2005.
In Portuguese.
97
BUYYA, R. Grid Computing Info Centre (GRID Infoware). 2002. Disponível em:
<http://www.gridcomputing.com/>. Acesso em: 25 abril 2005.
CIRNE, W.; NETO, E. S. Grids Computacionais: Da Computação de Alto Desempenho a
Serviços sob Demanda. 2005. Minicursos - Simpósio Brasileiro de Redes de Computadores
(SBRC). Disponível em: <http://walfredo.dsc.ufcg.edu.br/papers/SBRC.2005.v18.pdf>.
Acesso em: 25 abril 2005.
CONRAD, S. et al. Research issues in federated database systems: report of efdbs '97
workshop. SIGMOD Rec., ACM Press, v. 26, n. 4, p. 5456, 1997.
CZAJKOWSKI, K. et al. From open grid services infrastructure to ws-resource
framework: Refactoring & evolution. 2004. Global Grid Forum Draft Recommendation.
Disponível em: <http://www.globus.org/alliance/publications/papers.php>. Acesso em:
25 abril 2005.
DANTAS, M. A. R.; ALLEMAND, J. N. C.; PASSOS, L. B. C. An evaluation of globus
and legion software environments. In: International Conference on Computational
Science. [S.l.: s.n.], 2003. p. 963970.
FERREIRA, L. et al. Introduction to Grid Computing with Globus. dec 2002. Redbook.
Disponível em: <www.redbooks.ibm.com/redbooks/pdfs/sg246895.pdf>. Acesso em: 25
abril 2005.
FONTES, V. et al. CoDIMS-G: a data and program integration service for the grid. In:
Proceedings of the 2nd workshop on Middleware for grid computing. [S.l.]: ACM Press,
2004. p. 2934.
FOSTER, I. What is the Grid? A Three Point Checklist. jul 2002. Disponível em:
<http://www-fp.mcs.anl.gov/ foster/Articles/WhatIsTheGrid.pdf>. Acesso em: 25 abril
2005.
FOSTER, I.; GANNON, D. The Open Grid Services Architecture Platform. 2003. Disponível em: <Disponível em http://www.globalgridforum.org/Meetings/ggf7/drafts/draftggf-ogsa-platform-2.pdf>. Acesso em: 25 abril 2005.
FOSTER, I.; KESSELMAN, C. Globus: A metacomputing infrastructure toolkit. The
International Journal of Supercomputer Applications and High Performance Computing,
v. 11, n. 2, p. 115128, Summer 1997.
FOSTER, I.; KESSELMAN, C. The grid: Blueprint for a new computing infrastructure.
. San Francisco, CA, USA: MORGAN-KAUFMANN, 1999. cap. 11, p. 259278.
In:
FOSTER, I. et al. The physiology of the grid: An open grid services architecture for
distributed system integration. Open Grid Service Infrastructure WG, Global Grid Forum
-, june 2002. Disponível em: <www.globus.org/research/papers/ogsa.pdf>. Acesso em:
25 abril 2005.
FOSTER, I.; KESSELMAN, C.; TUECKE, S. The anatomy of the Grid: Enabling
scalable virtual organizations. Lecture Notes in Computer Science, v. 2150, 2001.
Disponível em: <www.globus.org/research/papers/anatomy.pdf>. Acesso em: 25 abril
2005.
98
GLOBAL Grid Forum. 2004. Disponível em: <http://www.gridforum.org/>. Acesso em:
25 abril 2005.
GLOBUS. The Globus Toolkit. 2004. Disponível em: <www.globus.org>. Acesso em: 25
abril 2005.
GOBLE, C.; ROURE, D. D. The grid: an application of the semantic web. SIGMOD
Rec., ACM Press, v. 31, n. 4, p. 6570, 2002.
GRIDFORUM. Database Access and Integration Services WG - DAIS-WG. 2004.
Disponível em: <https://forge.gridforum.org/projects/dais-wg>. Acesso em: 25 abril
2005.
HAAS, L. M.; MILLER, R. J.; AL., B. N. et. Transforming Heterogeneous
Data with Database Middleware: Beyond Integration. 1999. Disponível em:
<http://www.almaden.ibm.com/cs/garlic/debull99.ps>. Acesso em: 25 abril 2005.
HAKIMPOUR, F.; GEPPERT, A. Resolving semantic heterogeneity in schema
integration: an ontology based approach. In: Proceedings of the international conference
on Formal Ontology in Information Systems. USA: [s.n.], 2001. v. 2001, p. 297308.
HALEVY, A. Y. Data integration: A status report. In: Proceedings of 10th Conference
on Database Systems for Business Technology and the Web (BTW 2003). Germany:
[s.n.], 2003. p. 2429.
HASSELBRING, W. Information system integration. Commun. ACM, ACM Press,
v. 43, n. 6, p. 3238, 2000.
JAVACAMP. About Design Pattern. 2005. Disponível em:
<http://www.javacamp.org/designPattern/>. Acesso em: 25 abril 2005.
KIM, W. (Ed.). Modern database systems: the object model, interoperability, and beyond.
New York, NY, USA: ACM Press/Addison-Wesley Publishing Co., 1995.
LINTHICUM, D. S. Next Generation Middleware. 1997. Disponível em:
<http://www.dbmsmag.com/9709d14.html>. Acesso em: 25 abril 2005.
LITWIN, W.; MARK, L.; ROUSSOPOULOS, N. Interoperability of multiple autonomous
databases. ACM Comput. Surv., ACM Press, v. 22, n. 3, p. 267293, 1990.
MALAIKA, S.; EISENBERG, A.; MELTON, J. Standards for databases on the grid.
SIGMOD Rec., ACM Press, v. 32, n. 3, p. 92100, 2003.
MALIK, T. et al. Skyquery: A web service approach to federate databases. In: CIDR.
[s.n.], 2003. Disponível em: <http://www-db.cs.wisc.edu/cidr2003/program/p17.pdf>.
Acesso em: 25 abril 2005.
MANAGEMENT, E. S. A Java/UML Object-Oriented Design Tool. may 2005. Disponível
em: <http://codims.inf.ufes.br/sistIntDados.pdf>. Acesso em: 25 abril 2005.
MART, M. iguez; ROUSSOPOULOS i. MOCHA: A selfextensible database middleware system for distributed data sources. 2000. Disponível em:
<citeseer.ist.psu.edu/293006.html>. Acesso em: 06 set. 2004.
99
MIDDLEWARE Based On a Code SHipping Architecture (MOCHA). 2000. Disponível
em: <http://www.cs.umd.edu/projects/mocha/>. Acesso em: 03 dec. 2004.
MUNRO, C. Developing a C Client Toolkit for OGSA-DAI. Dissertação (Mestrado) University of Edinburgh, 2004. Disponível em:
<http://www.epcc.ed.ac.uk/msc/dissertations/dissertations-0304/1021818_12b1.1.pdf>. Acesso em: 25 abril 2005.
OBJECT Services and Consulting - Wrappers. 1997. Disponível em:
<http://www.objs.com/survey/wrap.htm>. Acesso em: 25 abril 2005.
OPEN Grid Services Architecture - Data Access and Integration - OGSA-DAI. 2004.
Disponível em: <http://www.ogsadai.org.uk>. Acesso em: 25 abril 2005.
OPEN Grid Services Architecture - Distributed Query Processor - OGSA-DPQ. 2004.
Disponível em: <http://www.ogsadai.org.uk/dqp/>. Acesso em: 25 abril 2005.
PINHEIRO, F. S. Incorporando uma máquina de execução de consultas ao CoDIMS.
Dec 2004. Monograa de Conclusão de Curso, Universidade Federal do Espírito Santo UFES.
PITOURA, E.; BUKHRES, O.; ELMAGARMID, A. Object orientation in multidatabase
systems. ACM Comput. Surv., ACM Press, v. 27, n. 2, p. 141195, 1995.
PORTO, F. et al. Codims: An adaptable middleware system for scientic visualization
in grids. Journal Concurrency and Computation: Practice and Experience, v. 16, n. 5, p.
515522, 2004.
QI, K. Data integration scenarios in OGSA-DAI. Dissertação
(Mestrado) University of Edinburgh, 2004. Disponível em:
<http://www.epcc.ed.ac.uk/msc/dissertations/dissertations-0304/2562964_12b1.2.pdf>. Acesso em: 25 abril 2005.
RAHM, E.; BERNSTEIN, P. A. A survey of approaches to automatic schema matching.
VLDB Journal: Very Large Data Bases, v. 10, n. 4, p. 334350, December 2001.
Disponível em: <citeseer.ist.psu.edu/rahm01survey.html>.
RODRIGUEZ-MARTINEZ, M.; ROUSSOPOULOS, N. Mocha: a self-extensible
database middleware system for distributed data sources. In: Proceedings of the 2000
ACM SIGMOD international conference on Management of data. [S.l.]: ACM Press,
2000. p. 213224.
RODRIGUEZ-MARTINEZ, M. et al. Mocha: A database middleware system featuring
automatic deployment of application-specic functionality. In: CHEN, W.; NAUGHTON,
J. F.; BERNSTEIN, P. A. (Ed.). Proceedings of the 2000 ACM SIGMOD International
Conference on Management of Data, May 16-18, 2000, Dallas, Texas, USA. [S.l.]: ACM,
2000. p. 594.
SHETH, A. P.; LARSON, J. A. Federated database systems for managing distributed,
heterogeneous, and autonomous databases. ACM Comput. Surv., ACM Press, v. 22, n. 3,
p. 183236, 1990.
100
SILBERSCHATZ, A.; ZDONIK, S. Database systems-breaking out of the box. SIGMOD
Rec., ACM Press, v. 26, n. 3, p. 3650, 1997.
SILVA, V. F. V. da et al. An adaptive parallel query processing middleware for the grid.
To appear in Concurrency and Computation: Practice and Experience (Special Issue),
16(5), 2004.
SILVESTRE, L. J.; BIANCARDI, C.; BARBOSA, A. C. P. Sistemas para Integração de
Dados Heterogêneos. 2004. Disponível em: <http://codims.inf.ufes.br/sistIntDados.pdf>.
Acesso em: 25 abril 2005.
SMITH, J. et al. Distributed query processing on the grid. In: Proceedings of the Third
International Workshop on Grid Computing. [S.l.]: Springer-Verlag, 2002. p. 279290.
SOTOMAYOR, B. The Globus Toolkit 3 Programmer's Tutorial. Dez 2003. Tutorial.
Disponível em: <http://gdp.globus.org/gt3-tutorial/>. Acesso em: 25 abril 2005.
THOMAS, G. et al. Heterogeneous distributed database systems for production use.
ACM Comput. Surv., ACM Press, v. 22, n. 3, p. 237266, 1990.
TREVISOL, G. G. CoDIMS: Incorporando Nova Abordagem na Comunicação entre seus
Componentes. June 2004. Monograa de Conclusão de Curso, Universidade Federal do
Espírito Santo - UFES.
WIEDERHOLD, G. Value-added Middleware: Mediators. 1998. Disponível em:
<http://www-db.stanford.edu/pub/gio/1998/dbpd.html>. Acesso em: 25 abril 2005.
WIEDERHOLD, G. Mediation to deal with heterogeneous data sources. v. 1580, 1999.
WIEDERHOLD, G.; GENESERETH, M. The conceptual basis for mediation services.
IEEE Expert, v. 12, n. 5, p. 3847, Sep/Oct 1997.
ZIEGLER, P.; DITTRICH, K. R. Three decades of data integration - all problems
solved? In: JACQUART, R. (Ed.). 18th IFIP World Computer Congress (WCC 2004),
Volume 12, Building the Information Society. Toulouse, France, August 22-27: Kluwer,
2004. (IFIP International Federation for Information Processing, v. 156), p. 312.
ÖZSU, M. T.; VALDURIEZ, P. Princípios de Sistemas de Banco de Dados Distribuídos.
Rio de Janeiro - RJ: Editora Campus, 2001.

Documentos relacionados

Ler - Elton Minetto

Ler - Elton Minetto advantages and features provided by the Grids. By using the Portals, an union between the information portals' technologies found on the internet and the Grids, the users can easily interact with t...

Leia mais