Escolar Documentos
Profissional Documentos
Cultura Documentos
CENTRO TECNOLGICO
MONOGRAFIA DE GRADUAO
VITRIA/ES
2005.
de
concentrao
Sistema
de
VITRIA
2005
Comisso Examinadora
Prof. Dr. Alvaro Cesar Pereira Barbosa
DI/ UFES
Orientador
_____________________________________________________
Prof. Msc Cristiano Biancardi
DI/UFES
Agradecimentos
A Deus, por me dar fora para superar os momentos difceis e pelas conquistas realizadas.
A meus pais, Altair e Iracema, pelo incentivo que sempre me deram para prosseguir e
realizar os meus sonhos.
A minha famlia pelo amor e pelos exemplos de vida que me do.
Ao meu orientador Prof. Alvaro Cesar Pereira Barbosa pelos conhecimentos
compartilhados para a realizao deste trabalho.
Ao professores do DI pelo conhecimento recebido, e aos funcionrios do DI pelos trabalhos
realizados que so de grande importncia.
Aos meus amigos pelos vrios incentivos que me deram e a todas as pessoas que de uma
forma direta ou indiretamente me ajudaram a concluir este trabalho.
SUMRIO
01 Introduo......................................................................................................................................................7
1.1 Contexto.........................................................................................................................................................7
01.2 Objetivo........................................................................................................................................................9
01.3 Metodologia Utilizada................................................................................................................................9
1.4 Organizao do trabalho............................................................................................................................10
2 Conceitos.........................................................................................................................................................11
2. 1 Processamento de Consulta.......................................................................................................................11
02.2 Transformao da consulta para a lgebra Relacional........................................................................14
2.3 lgebra Relacional .....................................................................................................................................14
2.3.1 Equivalncia na lgebra Relacional......................................................................................................16
2.3.2 Operadores Algbricos Lgicos e Fsicos..............................................................................................18
2.4 Plano de Execuo de Consulta.................................................................................................................20
2.5 Otimizador...................................................................................................................................................22
2.5.1 Arquitetura do Otimizador de Consulta...............................................................................................23
2.5.2 Tipos de Otimizao................................................................................................................................24
2.6 Enumerao de Planos Fsicos...................................................................................................................26
2.7 O Custo para Executar uma Consulta .....................................................................................................27
02.8 Seletividade e Estimativas de Custo na Otimizao de Consulta.........................................................28
2.9 Informaes para a Estimativa do Custo................................................................................................28
2.10 Convertendo rvore de Consulta em Plano de Execuo de Consulta (PEC)..................................29
3 Processamento de Consulta em Sistemas de Integrao de Dados...........................................................30
3.1 Introduo.................................................................................................................................................30
03.2 Processamento de Consulta em Banco de Dados Distribudos (BDDs)..............................................31
03.3 Processamento de Consulta em Sistemas de Integrao de Dados......................................................37
4 Projeto de um Otimizador de consulta para o CoDIMS............................................................................42
04.1 CoDIMS.....................................................................................................................................................42
04.2 Processamento de Consulta no CoDIMS................................................................................................46
4.3 Otimizador de Consulta do CoDIMS........................................................................................................49
4.3.1 Funcionalidade do Otimizador...............................................................................................................50
4.3.2 Localizao Fsica do Otimizador..........................................................................................................50
4.4. Especificao Funcional do Otimizador de Consulta do CoDIMS.......................................................52
4.5 Diagrama de Classe do Otimizador.......................................................................................................53
4.6 Diagrama de Seqncia.............................................................................................................................58
5 Estudo de Caso ..............................................................................................................................................60
5.1 Descrio da Aplicao...............................................................................................................................60
5.2 Processamento da Consulta do Caso de Uso............................................................................................61
5.3 Grafo de Consulta.......................................................................................................................................62
Resumo
O CoDIMS (Configurable Data Integration Middleware System) [BARBOSA, 2001] tem
como objetivo prover acesso integrado a dados distribudos e heterogneos, de forma transparente,
apresentando uma nica viso homognea destes dados. um ambiente flexvel e configurvel que
permite gerar sistemas de integrao de dados configurados para uma aplicao especfica.
O CoDIMS consiste em uma arquitetura fsica dividida em componentes que disponibilizam
servios especficos de integrao de dados denominados DIMS (Data Integration Middleware
Services). Esses componentes so web-services baseados nas funcionalidades de sistemas de
gerncia de banco de dados e possuem a caracterstica de serem plug and play, fornecendo assim
um alto nvel de interoperabilidade, composio e abstrao da sua implementao e da forma de
comunicao que utilizam.
Para a continuidade do processo de desenvolvimento do CoDIMS torna-se necessrio o
projeto e desenvolvimento de seus componentes e dos respectivos servios DIMS. Um dos servios
a serem desenvolvidos e incorporados ao componente Processamento de Consulta do CoDIMS o
de Otimizao de Consulta, objetivo deste trabalho.
1 Introduo
1.1 Contexto
Hoje em dia h uma grande quantidade de sistemas de informao disponveis nas
organizaes do mundo inteiro, caracterizando a existncia de dados heterogneos, distribudos e autnomos. Dados heterogneos so dados que so obtidos atravs de sistemas
que foram desenvolvidos independentes e com isso os dados possuem, freqentemente, estruturas e terminologias diferentes (heterogeneidade estrutural e semntica, respectivamente) (KIM; SEO, 1991; PITOURA; BUKHRES; ELMAGARMID, 1995; RAHM; BERNSTEIN, 2001) o que ocorre tanto quando os esquemas vm de domnios diferentes, como
quando eles modelam o mesmo domnio do mundo real. Como exemplo de heterogeneidade semntica temos o campo sexo que pode ser definido com F para feminino e M para
masculino e um outro modo de definir esses mesmos campos definir 1 para feminino e 0
para masculino. Dados distribudos so os dados que se encontram armazenados em fontes
de dados que esto situadas geograficamente em locais diferentes, sendo interligadas atravs de uma rede. E autonomia se refere s fontes possurem controle sobre os seus dados e,
em geral, no aceitam modificaes externas.
O desenvolvimento de Sistemas de Integrao de Dados tem se mostrado cada vez
mais importante e necessrio. O objetivo desses sistemas liberar o usurio de ter de
localizar as fontes de dados, interagir com cada uma isoladamente e combinar/integrar os
dados manualmente.
Integrao de dados heterogneos uma rea criticamente importante e vem sendo
fortemente pesquisada. As propostas/solues existentes [SILVESTRE; BIANCARDI;
BARBOSA, 2004] geralmente so desenvolvidas para uma aplicao especfica ou
extremamente genricas se tornando demasiadamente complexa na adaptao para novas
aplicaes/requisitos.
Na tentativa de se gerar sistemas de integrao de dados configurados para atender a
diferentes aplicaes vem sendo desenvolvido o CoDIMS [BARBOSA,2001].
O CoDIMS (Configurable Data Integration Middleware System) um ambiente
flexvel e configurvel para gerar sistemas middleware de integrao de dados, baseado no
uso de frameworks e componentes, permitindo gerar sistemas configurados para integrao
Figura
1:
CoDIMS:
Composio de Componentes.
A abordagem do CoDIMS atravs do uso de frameworks e da integrao de
componentes uma forma de desenvolvimento de software que enfatiza o reuso, aumento
de produtividade e qualidade, facilidade de manuteno, adaptao e substituio dos
componentes.
1.2 Objetivo
O objetivo deste trabalho o estudo, projeto e implementao de um prottipo de
Otimizador de Consulta para o CoDIMS.
1.3
Metodologia Utilizada
2 Conceitos
2. 1 Processamento de Consulta
A disponibilidade de linguagens no-procedurais, como o SQL, melhora de forma
significativa o desenvolvimento de aplicativos e a produtividade do usurio final. As
linguagens de banco de dados relacionais permitem realizar consultas complexas de modo
conciso e simples. Em particular, para construir a resposta consulta, o usurio no precisa
especificar exatamente o procedimento a ser seguido. Esse procedimento na realidade
determinado por um mdulo do SGBD (Sistema de Gerenciamento de banco de Dados), em
geral chamado de processador de consulta [SILBERSCHATZ, 2001].
O processamento de consulta consiste nas atividades que envolvem acessar dados de
um banco de dados. As consultas feitas em linguagens de alto nvel, tal como o SQL, so
adequadas para o uso humano, porm no so adequadas para o processador de consulta,
pois no apresentam um procedimento a ser seguido e nem uma estratgia eficiente para o
acesso ao disco [SILBERSCHATZ, 2001].
O custo de se processar uma consulta determinado pela quantidade de acesso a
disco que a consulta precisa fazer, pois esse tipo de acesso muito lento quando comparado
com o acesso memria. Para se processar uma consulta h varias estratgias, algumas
boas e outras ruins. Assim, sistemas de banco de dados devem possuir um procedimento de
otimizao de consulta, visando escolha da estratgia que execute a consulta em um
menor tempo e usando menos recursos. Apesar do procedimento de otimizao demandar
uma quantidade de tempo para ser realizado, ainda assim, na mdia, o otimizador obtm
melhores resultados.
Assim, tal como os SGBDs, os sistemas de integrao de dados devem fazer proveito
dos recursos da otimizao da consulta.
Uma consulta feita em uma linguagem de alto nvel, passa por vrias etapas durante o
processamento da consulta. Conforme mostrado abaixo na figura 2.
Parser
(Analisador)
Forma intermediria da consulta
(grafo de consulta)
Otimizador
Processador de consulta
(MEC)
Resultado da consulta
Figura 2: Etapas de Processamento da Consulta.
As etapas do Processamento da Consulta tm as seguintes funcionalidades:
Analisador: Realiza a anlise lxica e sinttica da consulta. Na anlise lxica so
analisados os dados de entrada, os smbolos da linguagem e se eles esto sendo usados
conforme as regras sintticas da linguagem (gramtica).
consulta usa uma boa ordenao de operaes de junes, ou seja, a ordem das junes,
para reduzir o tamanho dos resultados intermedirios.
As operaes de seleo podem ser atribudas por meio da operao de juno,
observando as seguintes condies:
o atribuda quando todos os atributos na condio de seleo 0 envolvem apenas
os atributos de E1 e 2 envolve apenas os atributos de E2.
(E1 E2) = ( 0(E1) E2
o atribuda quando a condio de seleo 1 envolve apenas os atributos de E1 e 2
envolve apenas os atributos de E2
1 ^ 2 (E1 E2) = ( 1(E1)) (2 (E2))
Sejam L1 e L2 atributos de E1 e E2, respectivamente. Suponha que a condio de
Juno envolva somente atributos de L1 U L2.
Considere uma juno E1 E2. Sejam L1 e L2 conjuntos de atributos de E1 e E2,
respectivamente. Sejam L3 atributos de E1 que esto envolvidos na condio de juno ,
mas que no esto em L1 U L2 e seja L4 atributos de E2 que esto envolvidos na condio de
juno , mas que no esto em L1 U L2. Ento:
L1 U L2 (E1 E2) = L1 U L2 ((L1 U L3 ( E1 )) ( L2 U L4 (E2))
As operaes de conjunto unio e interseo so comutativas.
E1U E2 = E2 U E1
E1 E2 = E2 E1
A diferena de conjunto no comutativa
A unio e a interseo de conjuntos so associativas
( E1U E2 ) U E3 = E1U ( E2 U E3 )
( E1 E2 ) E3 = E1 ( E1 E3 )
A operao de seleo distribuda por meio das operaes de unio, interseo e
diferena de conjuntos.
p ( E1 E2) = p (E1) E2 = p (E1) - p (E2)
A juno de lao aninhado uma das formas mais simples de executar a juno
natural de duas relaes. A juno das relaes com esse operador feita combinando todas
as tuplas de uma relao com todas as tuplas da segunda relao. Sejam as relaes R e S, a
combinao resulta em uma nova relao (R x S) com o tamanho igual ou menor que o
(tamanho (R) x tamanho(S)). O algoritmo desse operador composto por dois comandos
for aninhado. Os atributos que esto repetidos podem ser eliminados atravs da operao de
projeo. A figura abaixo mostra o algoritmo usado na implementao do operador juno
do lao aninhado onde tr uma tupla pertencente a relao R e ts uma tupla que pertence a
relao S e tstr uma tupla que pertence a R x S.
For tr de R faa
For ts de S faa
If satisfazem a condio ento
Adicionar tr,ts ao resultado
Figura 3: Algoritmo de Operador Juno de Lao Aninhado
A juno unio possui este nome, pois a idia principal de seu algoritmo semelhante
ao algoritmo de ordenao mergeSort. A figura 4 abaixo, ilustra o algoritmo, onde
[AtribJuno] so os atributos comuns as duas relaes. O algoritmo inicialmente ordena S
relaes pelo atributo comum entre as duas relaes. Depois, o algoritmo associa um
ponteiro a tupla inicial de cada relao. Conforme o algoritmo prossegue, os ponteiros
avanam atravs das relaes. Um grupo de relaes que possuem o mesmo valor para os
atributos comuns as duas relaes armazenado em Ss. Finalmente as tuplas
correspondentes de uma relao so lidas e processadas.
Para se obter o PEC final necessrio incluir operadores de controle tais como: leitura de
disco, transferncia pela rede, materializao dos dados e etc.
Geralmente, os PECs so estruturados na forma de uma rvore onde as folhas e os
ns internos representam os operadores e os arcos representam as relaes produtoconsumidor existente entre os operadores. Assim, os PECs podem assumir duas topologias
bsicas: Linear ( direita ou esquerda) e Ramificada.
2.5 Otimizador
A otimizao, como descrito acima, corresponde a uma etapa do processamento de
consulta. O otimizador tem por objetivo a escolha de um entre os vrios planos de consulta
que so gerados na etapa de otimizao. Ele deve escolher o plano que vai ser executado
em menor tempo e com o menor custo. No processamento da consulta est passa por
transformaes: o otimizador recebe a consulta como um grafo e entrega para a mquina de
execuo de consulta uma rvore de consulta.
O custo dos planos gerados na maioria dos otimizadores tem seus valores estimados,
pois para saber o valor real de um plano esse deve ser executado e a execuo de todos os
planos que podem ser gerados pelo otimizador uma tarefa invivel (dado que a quantidade
de planos gerados cresce de forma exponencial). Para a estimativa do custo, o otimizador
faz o uso de informaes estatsticas das relaes envolvidas, como o tamanho das relaes
que sero produzidas, a profundidade dos ndices, a quantidade de I/O necessria para a
consulta, etc.
Mesmo usando dados estatsticos para a escolha do plano, o otimizador pode escolher
um plano de consulta que no seja o timo.
O tempo que o otimizador gasta para escolher o melhor plano de consulta para
executar, na mdia, deve ser bem menor que o tempo que o processador de consulta
gastaria para executar a mesma consulta sem otimiz-la.
Existem duas estratgias que so amplamente usadas na implementao do
otimizador. Uma baseada em regras heursticas. A outra calcula a estimativa do custo de
diferentes estratgias de execuo e escolhe aquela que apresenta a menor estimativa de
custo.
O otimizador realiza a sua otimizao atravs da lgebra relacional; e o uso de
algumas operaes algbricas o quanto antes melhora a otimizao. Por exemplo, a
utilizao da operao de seleo o quanto antes faz a filtragem horizontal. O uso de
projeo fazendo a filtragem vertical, desde que isso no prejudique as selees e os
produtos cartesianos entre as relaes e fazendo o processamento uma nica vez de subexpresses comum ajuda na realizao da otimizao.
Espao
Algbrico
Plano
Mtodo de
Estrutura
Estimativa do
tamanho da tabela
J o espao algbrico determina a ordem de execuo das aes que devem ser
consideradas para cada consulta emitida pelo plano. Todas as equivalncias algbricas
produzem o mesmo resultado, porm com o desempenho e custo diferenciado, ou seja, o
espao algbrico o conjunto de rvores de operadores equivalentes (lgicas e fsicas) e
que podem ser geradas a partir da rvore de operadores inicial com o uso de regras de
transformaes equivalentes.
No mtodo estrutural so determinados os mtodos para a execuo de cada plano
requisitada pela lgebra relacional. No custo especificado o custo de cada frmula que
ser usada na estimativa para a execuo do plano. Para diferentes tipos de acesso aos
ndices e em geral para cada etapa do plano de execuo, h uma frmula do custo para a
execuo do plano. Dada a complexidade de alguns desses planos, algumas frmulas so
aproximaes de estimativas.
Na estimativa do tamanho das tabelas so obtidos o tamanho do banco de dados e os
ndices. Essas estimativas so necessrias para o clculo do custo.
Otimizao Sinttica
No otimizador sinttico todas as tabelas so colocadas na ordem original da consulta
do usurio. O otimizador, na tentativa de otimizar a consulta, identifica os ndices que so
teis para a recuperao dos dados. Esse tipo de otimizador pode ser extremamente
eficiente ao alcanar dados em um ambiente relativamente esttico. Usando o otimizador
esttico os ndices podem ser criados e ajustados para melhorar a eficincia da consulta. O
problema quando os dados so dinmicos.
e as informaes sobre eles no estar atualizadas. A maioria dos SGBDs mantm essas
informaes na tabela ou nos catlogos do sistema que so atualizados periodicamente.
Otimizao Semntica
O otimizador semntico opera sobre a premissa de que o otimizador tem a compreenso
bsica do esquema real da base de dados. Quando uma consulta submetida, o otimizador
usa o conhecimento para simplificar ou ignorar uma consulta particular se for garantido que
a consulta retornar como resultado vazio.
considerando-se
as
opes
das
sub-expresses
correspondentes,
30
cliente, tendo sido ento mais recentemente denominados de middleware para integrao de
dados.
Os conceitos e problemas encontrados em processamento de consulta em sistema de
integrao de dados so basicamente os mesmos de banco de dados distribudo. Assim, sero
apresentados a seguir os conceitos de processamento de consulta em banco de dados
distribudos.
31
n 1
n 2
n 5
Rede de
comunicao
n 3
n 4
Nos
sistemas de bancos de dados distribudos a consulta pode ser realizada de duas formas:
32
Deve-se balancear o volume de dados a ser transportado com o custo total do processamento (custo de transmisso mais o custo de processamento nos sites que esto envolvidos na
consulta)
O processamento de consulta em um SGBDDs est mostrado na figura 8.
Consulta sobre relaes distribudas
Decomposio de
consulta
Esquema
Global
Localizao de dados
Esquema de
Fragmentos
Consulta de fragmentos
Otimizao Global
Estatsticas sobre
Fragmentos
Otimizao local
Esquema
Local
Processador (MEC)
Figura 8: Etapas de Processamento de consulta em BDDs.
33
ENAME,RESP
FROM
E, G, J
WHERE
E.ENO = G.ENO
34
Figura 9: Grafo Conectado [ZSU, VALDURIEZ, 2001].
DUR>36
G
E.ENO=G.ENO
TITLE =
"Programador"
G.JNO=J.JNO
RESP
JNAME="CAD/CAM"
ENAME
RESULT
ENAME,RESP
FROM
E, G, J
WHERE
E.ENO = G.ENO
G
RESP
JNAME="CAD/CAM"
JJ
RESULTADO
35
Otimizao local
A ltima camada executada por todos os sites que tm fragmentos envolvidos na
consulta. Cada sub-consulta executada em um site, chamado consulta local, ento
otimizada com o uso do esquema local do site. Nesse momento os algoritmos para a execuo
das operaes relacionais podem ser escolhidos. A otimizao local emprega os algoritmos de
sistemas centralizados.
37
Consulta
Resposta
Catlogo
Global
Mediador
Resposta
Resposta
Sub-consulta
Sub-consulta
Adaptador (wrapper)
Adaptador (wrapper)
Fonte de
Dados 2
Fonte de
Dados 2
O esquema externo exportado pelas fontes de dados, ou seja, qual parte do esquema
global formada por cada fonte;
38
39
Mediador
Esquema
local
Decomposio da
consulta
Consulta
Esquema
local
Esquema
global
Resultado
Esquema
local
Composio do
resultado
Interfaces
Diferentes
Fonte
Adaptador
(wrapper)
Adaptador
(wrapper)
Fonte
Adaptador
(wrapper)
Fonte
Modelo de
dados locais
Modelo de dados
globais
40
41
42
43
44
45
(vises externas). Metadados de cada fonte so estruturados de acordo com o tipo de cada
fonte de dado que se deseja integrar. Metadados de exportao representam vises dos
metadados pertencentes a cada fonte de dados, porm mapeados para um modelo comum:
O modelo de dados escolhido para uma certa instncia do CoDIMS. Metadados global
corresponde a integrao de todos os metadados de exportao, criando uma viso
homognea de todos os dados integrados para a aplicao cliente. As informaes
existentes no componente Metadados so importantes para a produo de sub-consultas
que so produzidas pela Mquina de Execuo de Consulta do CoDIMS. Uma proposta
do Metadados para o CoDIMS encontra-se em [SILVESTRE, 2005]. E um estudo sobre
wrappers encontra-se em [COCO, 2005].
O componente de Acesso aos Dados responsvel pela comunicao com as fontes
de dados disponveis. Ele faz a comunicao com os Wrappers, sendo que cada Wrapper
est vinculado a uma fonte de dados. A funo do Wrapper traduzir a requisio da
consulta enviada pela Mquina de Execuo de Consulta para uma linguagem que a fonte
de dados compreenda e transformar o resultado obtido da fonte de dados em um formato
que a MEC entenda. Uma proposta para a alocao e distribuio de Wrappers no
CoDIMS encontra-se em [BIANCARDI, 2005].
O componente Processamento de Consulta transforma uma consulta escrita em
linguagem de alto nvel em um plano de execuo de consulta. Dada a sua importncia
neste trabalho, ser apresentado em mais detalhes.
Processamento de Consulta
O processamento de consulta no CoDIMS inicia-se na aplicao cliente, atravs da
Gerncia de Metadados
Wrapper
Wrapper
46
FD 1
FD2
complexidade
do
componente
Processamento
de
Consulta,
as
47
48
49
Metadados
Re-escritor
Otimizador
MEC
Controle
Um
Pacote
do Processamento
de Consulta.
17)
Figura
16: Processamento
de Consulta
com(Figura
sub-Componentes
como instncias internas
Assim o componente Processamento de Consulta se transformaria no pacote
Processamento de Consulta com os seguintes pacotes: Analisador, Re-escritor,
50
Otimizador e MEC. E essa nova arquitetura teria o seu fluxo totalmente controlado pela
configurao lgica (workflow).
As desvantagens de ser ter o Otimizador de consulta deste modo que ocorreria
uma sobrecarga do componente de Controle e da rede de comunicao. A figura 17 ilustra
a arquitetura interna do pacote Processamento de Consulta.
Gerncia de
Metadados
Acesso aos
Dados
Controle
Pacote do
Processamento de
Consulta
Analisador
MEC
Re-escritor
Otimizador
MEC
Fachada Processamento de Consulta
51
Gerncia de
Metadados
Controle
Acesso aos
Dados
52
Operao
Scan
Send
Read
Project
Juno
Expresso do Custo
Tamanho_tupla * card * custo_scan
(tamanho_tupla * card) / custo_transferencia
Tamanho_tupla * card * custo_read
0
2(card1 + card2 ) * custo_predicado
Valor
70 Kb/s
10 MB/s
1000MB/s
53
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
c
dD
ia
g
ra
m
ad
eC
la
s
s
e
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
its
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
V
e
rtic
e
L
is
a
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
P
re
d
ic
a
d
o
L
is
ta
A
trib
u
to
L
is
ta
H
a
s
h
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
d
T
ri
a
lnV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
V
a
lid
a
tio
A
re
s
ta
L
is
ta
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
c
a
c
h
e
E
A5
.
0
U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
x
e
c
u
te
R
e
la
c
a
o
G
ra
fo
C
o
n
s
u
lta
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.
0
U
n
r
e
g
is
te
re
d
T
riic
a
l
V
e
r
s
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
P
re
d
a
d
o
E
v
a
lL
is
ta
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
P
re
d
ic
a
d
o
E
va
lL
is
ta
L
is
ta
E
A5
.0
U
n
rL
e
g
is
te
re
dT
ria
lV
e
rs
io
n
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
A
trib
u
to
is
ta
S
ite
L
is
ta
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
S
ite
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
O
tim
iz
a
d
o
r
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
R
e
la
c
a
o
P
ro
je
to
L
is
ta
E
A5
.0U
n
re
g
is
te
re
dT
r
ia
ltoV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
P
ro
je
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0R
U
r
e
g
is
te
re
dT
ria
e
ln
a
c
a
o
L
is
ta
P
re
d
ic
a
d
o
L
is
ta
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
P
ro
c
e
s
s
a
P
ro
je
to
T
r
a
n
s
p
o
r
te
E
A5
.0U
n
re
g
is
te
r
e
d
T
r
ia
lV
e
rs
io
n
E
A
5
.0U
n
re
g
is
te
r
e
d
T
r
ia
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
P
rim
P
e
rm
E
x
e
c
u
te
P
la
n
o
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
Classe Otimizador
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
g
is
te
re
dT
ria
lV
e
rs
io
n
E
A5
.0consulta
U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
5
.0U
n
re
g
is
te
re
dT
ria
Are
classe
otimizador
recebe
o grafo
de
do
Re-escritor
que
est
noA
formato
XML.
E
atravs
do
grafo
recebido
Otimizador
gera
todos
os
planos
com
on
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n oE
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
ipossveis,
o
n E
A5
.0U
re
g
is
te
re
dT
ria
mtodo generatePredicateEvalutionSequence(). Como a otimizao baseado no custo, o
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
Otimizador
executa
todos
os
planos
usando
mtodo
ExecutePlano
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0
n
re
g
is
te
re
dT
ria
54U
E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
n E
A5
.0U
n
re
g
is
te
re
dT
ria
55
56
Classe GrafoConsulta
A classe GrafoConsulta verifica se o grafo que foi passado para o Otimizador est
com todos os atributos completos. Se o grafo estiver incompleto ou errado ele rejeitado.
Tendo um grafo completo, essa classe busca pelos valores dos grafo. Com o mtodos
getSite, ele verifica a veracidade do site, com o mtodo getAresta verificado se as
arestas esta corretamente ligadas, e o mtodo getPredicado faz a anlise dos predicados
verificando se eles so realmente necessrio e se no est faltando algum predicado, j o
mtodo getProjeto verifica as projees e o mtodos getRelacao verifica se as relaes so
congruentes. A classe est mostrada na figura 21.
57
58
a
dA
c
tivityD
ia
ra
m
E
A
5
.
0
U
n
rg
e
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
F
a
c
h
a
d
aO
tim
iz
a
d
o
r
G
ra
fo
C
o
n
s
u
lta
P
a
ra
m
O
tim
iz
a
d
o
r
F
a
c
h
a
d
aM
E
C
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
<
u
s
ad
a
trib
u
to
G
fo
>
>
E
A
5
.0U
n
re
g
i<
s
tB
e
rce
T
r
ia
lraV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
<
<
B
u
c
a
E
s
ta
tis
tic
a
s
>
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
r
s
is
o
n
E
A
5
.>
0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
<
<
G
e
raP
la
n
o
s
>
>
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
<
<
C
a
lc
u
laC
u
s
tod
o
s
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.s0
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
P
la
n
o
>
>U
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
<
<
e
n
v
iap
la
n
o
tim
o
>
>
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
Figura
22
5
de
Seqncia
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
.Diagrama
0U
n
re
g
is
te
re
d
T
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
59
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
E
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
g
is
te
re
dT
ria
lV
e
rs
io
nE
A
5
.0U
n
re
5 Estudo de Caso
5.1 Descrio da Aplicao
Uma empresa de aluguel de carro deseja ter o controle de sua frota e tambm de
seus funcionrios e clientes. Para isto ela possui um sistema de integrao de dados,
dado que a empresa tem diversas filiais espalhadas pelo pas. Por causa destas filiais a
empresa mantm dados em sites diferentes. Abaixo, na figura 23 temos o diagrama de
tabela do sistema da empresa.
E
A
5
.
0
U
n
r
e
g
i
s
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
c
d
D
a
t
a
M
o
d
e
l
F
u
n
c
i
o
n
a
r
i
o
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
*
P
K
o
lu
m
n
c
o
d
ig
o
:in
t
*
c
o
lu
m
n
n
o
m
e
:v
a
r
c
h
a
r
(
5
0
)
o
lu
m
n
s
o
b
r
e
n
o
m
e
:v
a
r
c
h
a
r
(
3
0
)
o
lu
m
n
e
n
d
e
r
e
c
o
:v
a
r
c
h
a
r
(
5
0
)
o
lu
m
n
s
e
x
o
:v
a
r
c
h
a
r
(
8
)
o
lu
m
n
d
t
A
n
iv
e
r
s
a
r
io
:d
a
t
e
t
im
e
o
lu
m
n
s
a
la
r
io
:m
o
n
e
y
o
lu
m
n
t
ip
o
F
u
n
c
io
n
a
r
io
:v
a
r
c
h
a
r
(
5
0
)
o
lu
m
n
e
m
p
r
e
s
a
C
o
d
ig
o
:v
a
r
c
h
a
r
(
5
0
)
o
lu
m
n
c
o
d
ig
o
S
u
p
e
r
v
is
o
r
:in
t
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
+
P
P
K
_
F
u
n
c
io
n
a
r
io
(
in
t
)
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
i
a
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
0
.
.
*
0
.
.
1
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
0
.
.
*
0
.
.
1
M
o
t
o
r
i
s
t
a
D
e
p
e
n
d
e
n
t
e
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
i
a
l
V
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
*
P
K
o
lu
m
n
f
u
n
c
C
o
d
ig
o
:in
t
*
P
K
o
lu
m
n
n
o
m
e
:in
t
o
lu
m
n
s
e
x
o
:v
a
r
c
h
a
r
(
8
)
o
lu
m
n
d
t
A
n
iv
e
r
s
a
r
io
:d
a
t
e
t
im
e
o
lu
m
n
p
a
r
e
n
t
e
s
c
o
:v
a
r
c
h
a
r
(
1
0
)
*
P
K
o
lu
m
n
f
u
n
c
C
o
d
ig
o
:in
t
o
lu
m
n
n
u
m
C
a
r
t
e
ir
a
:in
t
o
lu
m
n
c
la
s
s
e
:c
h
a
r
(
1
0
)
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
+
P
P
K
_
M
o
t
o
r
is
t
a
(
in
t
)
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
i
a
ln
V
e
r
s
io
n
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
+
P
P
K
_
D
e
p
e
d
e
n
t
e
(
in
t
,in
t
)
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
60
E
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
5
.
0
U
n
r
e
g
is
t
e
r
e
d
T
r
ia
lV
e
r
s
io
nE
A
Figura 23: Prottipo do Diagrama de Tabela de uma Empresa Fictcia de Aluguel de Carro
Wrapper
Gerncia de Metadados
61
Figura 24. Sub-Componentes internos do componente Processamento
Consulta
Acesso aosde
Dados
Re-escritor
Otimizador
MEC
63
Na linha 38 temos a lista de projees que determinada pelo listType igual a 6 e number determina a quantidade de projees. Na linha 39 a 42 so mostradas as projees, os
vrtices da projeo e o nome dos atributos. Na linha 43 fechada a lista de projees e na
linha 44 fechado o queryGraph.
Motorista
Funcionario
Dependente
Figura 26: Grafo do plano 0
64
Plano: 1
Predicado: p1 Vertice:Funcionario Site: 1
Predicado: p2 Vertice:Motorista Site: 2
nome, sobrenome,Dependente.nome, numCarteira
Motorista
Funcionario
DependenteMot
Motorista
Dependente
Funcionario
Figura 28: Grafo do Plano 2
65
Plano: 3
Predicado: p1 Vertice:Dependente Site: 3
Predicado: p2 Vertice:Motorista Site: 2
Motorista
Funcionario
Dependente
Dependente
Funcionario
Motorista
66
Plano: 5
Predicado: p2 Vertice:Funcionario Site: 1
Predicado: p1 Vertice:Dependente Site: 3
Dependente
Motorista
Funcionario
Plano: 6
Predicado: p2 Vertice:Motorista Site: 2
Predicado: p1 Vertice:Funcionario Site: 1
nome, sobrenome,Dependente.nome, numCarteira
Dependente
Motorista
Funcionario
67
Plano: 7
Predicado: p2 Vertice:Motorista Site: 2
Predicado: p1 Vertice:Dependente Site: 3
nome, sobrenome,Dependente.nome, numCarteira
Dependente
Motorista
Funcionario
68
69
Custo: 2.5E-4
1.<?xml
version='1.0'
Operao:
PROJECT encoding=UTF-8?>
Custo: 0.0
2.<meta-plano>
3.
4.
5.
6.
7.
8.
<operador ordem-execucao="1">
First Tuple:0.00144
<scan-relacional tabela="Funcionario">
BottleNeck:0.117929995
<coluna nome="codigo" tabela-origem="Funcionario"/>
Tendo calculado o custo para todos os planos e armazenando sempre o plano que
9.
<consumidor op-consumidor="3"/>
o menor custo ao final, o otimizador tem o valor do plano de menor custo
10.apresenta
</operador>
11.
<operador ordem-execucao="2">
que a MEC possa execut-lo.
12.repassa-o para
<scan-relacional
tabela="Motorista">
13.
<coluna nome="funCodigo" tabela-origem="Motorista"/>
A tabela 3 mostra
o custo de cada plano, calculado pelo otimizador.
14.
<coluna nome="numCarteira" tabela-origem="Motorista"/>
15.
</scan-relacional>
Plano
Custo
16.
17.
18.
19.
20.
21.
22.
23.
Plano 0
0.03278
<consumidor
op-consumidor="4"/>
Plano
1
0.11937
</operador>
Plano
2
0.26158002
<operador
ordem-execucao="3">
<scan-relacional
tabela="Dependente">
Plano 3
0.26158002
nome="funCodigo"
tabela-origem="Dependente"/>
Plano<coluna
4
0.030819999
<coluna nome="nome" tabela-origem="Dependente"/>
Plano 5
0.17642002
</scan-relacional>
Plano 6
0.26276004
<consumidor
op-consumidor="3"/>
Plano 7
0.26276004
24.
</operador>
Tabela 3: Custo de Cada Plano
25.
<operador ordem-execucao="4">
26.
<join-nested-loop-relacional tabela-esquerda="Funcionario"
27.tabela-direita="Motorista">
De acordo com
os custos argumento-esquerdo="Funcionario.codigo"
mostrados na tabela o plano com o menor custo o
28.
<condicao
29.operacao="igual" argumento-direito="Dependente.funCodigo"/>
a MEC. argumento-esquerdo="Funcionario.codigo"
30.E ele ser enviado para
<condicao
31.operacao="igual" argumento-direito="Motorista.funCodigo"/>
32.
37.
38.
plano 4.
</join-nested-loop-relacional>
5.6 33.
PEC
34.
35.
36.
<produtor op-produtor="1"/>
<produtor op-produtor="2"/>
<produtor
plano
escolhido op-produtor="3"/>
ento transformado em um
<consumidor op-consumidor="5"/>
</operador>
<operador ordem-execucao="5">
39.
40.
41.
42.
43.
<project-relacional>
<coluna nome="nome" tabela-origem="Funcionario"/>
<coluna nome="sobrenome" tabela-origem="Funcionario"/>
<coluna nome="nome" tabela-origem="Dependente"/>
<coluna nome="numCarteira" tabela-origem="Motorista"/>
44.
</project-relacional>
45.<produtor op-produtor="4"/>
46.
</operador>
47.</meta-plano>
70
O PEC acima, baseado em [PINHEIRO, 2004] foi criado pelo otimizador depois de
Figura 34:
PEC
obter o melhor plano. Posteriormente
o otimizador
envia o PEC para a MEC.
A linha 1 identifica um documento XML. A linha 2 identifica um meta-plano.
71
operador
usado
(igual)
argumento
da
direita
(dependente.funcodigo).
As linhas 30 e 31 so anlogas s linhas 28 e 29.
A linha 32 fecha o join relacional.
As linhas 33 a 34 mostram a ordem de produtor.
A linha 37 fecha o operador.
A linha 38 mostra a ordem de execuo para a projeo, que no caso a quinta.
As linhas de 39 a 44 delimitam uma projeo e as linhas 40 a 43 mostram as colunas
que sero projetadas.
A linha 45 mostra o produtor, a linha 46 fecha o operador e a linha 47 fecha o metaplano.
72
6 Concluses
6.1 Resultados
A funcionalidade de otimizao do componente Processamento de Consulta do CoDIMS
foi encapsulado em um Otimizador, tornando-se um sub-componente do Processamento de
Consulta.
acessando fontes de dados diferentes e posterior integrao dos dados obtidos formando um
nico conjunto resultado. A incorporao do otimizador resultou na implementao do
servio de otimizao consulta do CoDIMS.
73
Criao de uma interface mais amigvel para a submisso de consultas, permitindo assim
um melhor e mais fcil uso do CoDIMS.
75
Referncias Bibliogrficas
BARBOSA, A.C.P. Tese de Doutorado Middleware para Integrao de Dados Heterogneos
Baseado em Composio de Frameworks, PUC-RJ, 2000.
BIANCARDI, C. Dissertao de Mestrado Distribuio e Execuo de Wrapper em
ambiente de Grid para o CoDIMS, UFES, 2005.
COCO, T. M. Monografia Implementando Wrappers XML e relacional para o CoDIMS,
UFES, 2005.
DATE, C. J. Introduo a Sistemas de Banco de Dados. Rio de Janeiro, Editora Campos,
2000.
ZSU, M.T.; VALDURIEZ, P. Princpios e Sistemas de banco de Dados Distribudos. Rio
de Janeiro, Editora Campos, 2001.
PINHEIRO, F.S. Monografia Incorporando uma Mquina de Execuo de Consultas ao
CoDIMS, 2004.
PORTO, F.A.M Tese de Doutorado Estratgia para a Execuo Paralela de Consultas em
Banco de Dados Cientficos Distribudos, 2001, PUC-RJ.
RUMBAUGH, James; BOOCH, Grandy; JACOBSON, Ivar. UML: Guia do Usurio, Editora
Campos, 2000.
SILBERSCHATZ, A.; KORTH, H; SUDARSHAN, S. Sistema de banco de dados. 3. ed. So
Paulo: Markron Books, 1999.
SILVESTRE, L. J Dissertao de mestrado Um ambiente de Metadados para o CoDIMS,
UFES, 2005.
SILVESTRE, L. J; BIANCARDI, C.; BARBOSA, A.C.P. Sistemas para Integrao de
Dados,
UFES,
2004.
Acessado
em
10/08/2005
e
disponvel
em
http://codims.lprm.inf.ufes.br/sistIntDados.pdf
SOUKUP, Ron; Desvendando o Microsoft SQL Server 6.5. Rio de Janeiro: Campos, 1998.
TREVISOL, G..G. Monografia Estudo sobre tecnologias de comunicao entre
componentes de software aplicado ao CoDIMS, UFES, 2004.
IOANNIDIS, Y.E. Query Optimization. University of Wiscosin, 1995. Disponvel em
http://www-db.stanford.edu/~widom/cs346/ioannidis.pdf e acessado em 10/08/2005.
76
Apndice Classes
Neste apndice so apresentadas as classes do otimizador e os mtodos de cada classe.
Classe Aresta
77
78
79
Attl: vetor
Mtodos da classe:
addElement: Insere um elemento na lista
removeElement: Remove os elementos do vetor
getIndexOf: Dado um atributo retorna o ndice dele
getElement: Dado uma posio retorna o atributo
insertElementAt: Insere um atributo em um posio determinada
getSize: retorna a quantidade de atributo da lista
addList: Adiciona todos os elementos na lista.
changeRel: Busca o valor de uma relao.
getAttribute: Busca um atributo dado o nome do mesmo.
findAttributeByName:
findAttribute:
print: Imprime a lista com os dados dos atributos
Classe AtributoListaHash
Classe AtributoNecessarioLista
81
Mtodos da classe:
getElement: Retorna a posio do elemento dado o atributo.
getSize: Retorna o tamanho do vetor
insertElementAt: Insere um atributo em uma posio especifica.
getAttributeNeeded: Retorna o atributo dado o predicado. Se no existe o predicado
retorna null.
Classe CustoMetaDados
Classe ExecOperacao
Executar operaes
Atributos da classe:
operandLista: objeto da classe OperandLista;
operantion: objeto da classe operantion;
versao: int com a verso.
Mtodos da classe:
getCost: Busca o custo da operao;
getOperandList: Retorna a lista de operao;
getOperation: Retorna a operao.
Classe ExecOperLista
83
Mtodos da classe:
addElement: Adiciona as operaes no vetor
getElement: Retorna a operao da posio especificada.
getSize: Retorna a quantidade de operaes que esto na lista.
getNumberPredicates: Retorna a quantidade de predicado.
getCusto: Retorna o custo total da operao
verifyMoreExpensive: Retorna o custo de um predicado.
getFirstCost: Retorna o custo de buscar a primeira tupla.
printPredCost: Imprime o custo do predicado
printProjCost: Imprime o custo da projeo
addList: Adiciona as operaes na lista.
Classe ExecutandoOperacao
85
Mtodos da classe:
addElement: Adiciona um elemento na lista
getElement: Retorna uma relao para execuo dado uma posio
getSize: Retorna o tamanho da lista de relaes.
Classe ExecutandoRelacao
Executa Relaes
Atributo da Classe
vertice: objeto da classe Vertice.
Mtodos da classe:
setName: Seta o nome da relao
setSite: Seta o site da relao
setAttlist: Seta o atributo da lista
setCard: Seta a cardinalidade
setOperation: Seta a operao
Classe ExecutandoRelacaoListaBlackBoard
86
Classe ExecuteRelacao
87
Classe Join
Operao Join
Atributo da Classe
joinCusto: Guarda o custa de executar a operao join;
predicadoEval: objeto da classe PredicadoEval;
custo: custo final da operao;
execOperacao: objeto da classe ExecOperacao;
cardinalidade: guarda a cardinalidade da tabela usada na operao.
Mtodos da classe:
getCard: Retorna a cardinalidade
getPredicateEval: Retorna o predicado eval
Classe OperacaoLista
89
90
Classe de Operaes
Atributos da classe
send: guarda o custo da operao send;
mat: guarda o custo da materializao;
join: guarda o custo do join;
project: guarda o custo da projeo;
scan: guarda o custo do scan;
read: guarda o custo de leitura;
relacaoIn: objeto da classe ExecuteRelacao;
relacaoOut: objeto da classe ExecuteRelacao.
Mtodos da classe:
getCost: retorna o custo da relao.
getIdOper: Retorna o ID da relao
printData: Imprime os dados da relao
cost: Insere o custo da relao
setRelationIn: Seta a relao de entrada
setRelationOut: Seta a relao de sada
getRelationIn: Busca a relao de entrada
getRelationOut: Busca a relao de sada
getName: Busca o nome da relao dado o ID
Classe optTipo
91
Classe de parmetros
Atributos da Classe:
mat: atributo de materializao;
transferencia: atributo de transferncia;
92
93
94
Classe PredicadoEval
95
96
97
Atributos da classe
atributoLista: objeto da classe atributoLista;
numAtributo: guarda a quantidade de atributos.
Mtodos da classe:
getPlan: Obtm a lista de execuo de operaes.
Classe ProgramInfoNo
98
Mtodos da classe:
hasMoreElements: Verifica se existe mais elemento no vetor
nextElement: Procura pelo prximo elemento.
Classe Projecao
100
101
Classe Scan
102
103
104
105
Classe de transporte
Atributos da classe:
atributoNecessarioLista: objeto da classe AtributoNecessarioLista;
executeRelacaoLista: objeto da classe ExecutaRelacaoLista;
Mtodos da classe:
getData: Retorna os dado da relao
verifyNeededAttributes: Verifica a necessidade do atributo
Classe Vertice
Mtodos da classe:
getPlan: Obtm o plano do vertice
getNome: Retorna o nome do vrtice
getArestaLista: Retorna a lista de aresta
getAresta: Retorna uma aresta
bindAresta: faz a ligao dos vrtices
Classe VerticeLista
107