Você está na página 1de 109

UNIVERSIDADE FEDERAL DO ESPIRITO SANTO

CENTRO TECNOLGICO
MONOGRAFIA DE GRADUAO

Fernanda Rigamont Gomes

Otimizador de Consulta do CoDIMS

VITRIA/ES
2005.

Fernanda Rigamont Gomes

Otimizador de Consulta do CoDIMS

Monografia apresentada como exigncia


parcial para a obteno de ttulo de
Bacharel em Cincia da Computao
Universidade Federal do Esprito Santo, na
rea

de

concentrao

Sistema

de

Informao, sob a orientao do Prof. Dr.


Alvaro Cesar Pereira Barbosa.

VITRIA
2005

Fernanda Rigamont Gomes

Otimizador de Consulta do CoDIMS


Monografia apresentada como exigncia parcial para a obteno de ttulo de Bacharel em
Cincia da Computao Universidade Federal do Esprito Santo, na rea de
concentrao Sistema de Informao, sob a orientao do Prof. Dr. Alvaro Cesar Pereira
Barbosa

Comisso Examinadora
Prof. Dr. Alvaro Cesar Pereira Barbosa
DI/ UFES
Orientador

Prof. Dr. Jos Gonalves Pereira Filho


DI/UFES

_____________________________________________________
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

5.4 Planos Gerados pelo Otimizador...............................................................................................................64


5.5 Clculo do Custo.........................................................................................................................................68
5.6 PEC..............................................................................................................................................................70
5.7 Ferramentas Utilizadas..............................................................................................................................72
6 Concluses......................................................................................................................................................73
6.1 Resultados....................................................................................................................................................73
6.2 Contribuies ao CoDIMS........................................................................................................................73
6.3 Dificuldades Encontradas..........................................................................................................................74
6.4 Trabalhos Futuros....................................................................................................................................74
Referncias Bibliogrficas................................................................................................................................76
Apndice Classes ...........................................................................................................................................77

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

de dados heterogneos e distribudos do tipo lightweight: apenas os componentes


necessrios estaro presentes em uma certa configurao. O processo de configurao
centrado na configurao fsica e na configurao lgica. A configurao fsica a escolha
e declarao de um conjunto de componentes que disponibilizam servios middleware de
integrao de dados denominados DIMS (Data Integration Middleware Services). Esses
componentes so baseados nos servios de sistemas gerenciadores 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. Alm disso, os componentes so frameworks que podem ser,
ento, instanciados de acordo com a necessidade da aplicao. Na verso atual do CoDIMS
os componentes so implementados como web-services [TREVISOL, 2004].
A configurao lgica abstrada do conceito de workflow que determina a seqncia
de execuo dos servios dos DIMS disponibilizados pelos componentes que fazem parte
de uma certa configurao. A Figura 1 exemplifica uma possvel composio de
componentes do CoDIMS.

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.

Para a continuidade do processo de desenvolvimento do CoDIMS torna-se necessrio


o projeto e implementao de seus componentes e dos respectivos servios DIMS. Neste
processo importante ter sempre em mente as caractersticas de configurao e
flexibilidade do CoDIMS, ou seja, os componentes desenvolvidos devem ir ao encontro
destas caractersticas.
O componente Metadados foi definido em [SILVESTRE,2005]. O componente de
Acesso aos Dados foi estudado em [BIANCARDI, 2005] e [COCO, 2005].
Para o componente Processamento de Consulta, a Mquina de Execuo de Consulta
(MEC) j foi objetivo de outro trabalho recente [PINHEIRO, 2004]. So ainda necessrios
o desenvolvimento dos seguintes servios DIMS: Analisador, Re-escritor e Otimizador.
Este trabalho trata especificamente do desenvolvimento do Otimizador de
Consulta.Todo acesso a um banco de dados ou a um sistema de integrao de dados
necessita obter a resposta para a consulta formulada em um tempo mais curto possvel, uma
vez que isto melhora o desempenho do sistema. Para atingir este objetivo fundamental
que a consulta seja otimizada, e assim torna-se necessrio pesquisar e desenvolver
otimizadores de consulta.

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

Para o desenvolvimento deste trabalho foi inicialmente necessrio um estudo sobre


sistemas de bancos de dados, bancos de dados distribudos e sistemas de integrao de
dados, em particular um estudo sobre o CoDIMS.
Em seguida foram realizados estudos sobre otimizadores de consulta em sistemas de
banco de dados centralizados, distribudos e em sistemas de integrao de dados.
O projeto e implementao do otimizador de consulta foi baseado em
[PORTO,2001].

1.4 Organizao do trabalho


Esse trabalho est organizado da seguinte maneira:
O Captulo 2 contm conceitos, fundamentos de otimizao, princpios bsicos de
otimizao, lgebra relacional, equivalncia na lgebra relacional e algoritmos de
otimizao que so usados pelos otimizadores.
No captulo 3 apresentado o processamento de consulta em sistemas de integrao
de dados.
O captulo 4 possui uma breve apresentao do ambiente CoDIMS enfocando suas
caractersticas principais, como o otimizador funciona dentro do ambiente do CoDIMS, os
diagramas de classe, o diagrama de seqncia e a interface do otimizador.
O captulo 5 apresenta a implementao de um prottipo.
O captulo 6 contm as concluses e as consideraes finais sobre o trabalho.

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.

Linguagem de Consulta (SQL)

Parser
(Analisador)
Forma intermediria da consulta
(grafo de consulta)

Otimizador

Plano de Execuo da Consulta


(PEC)

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).

Na anlise sinttica so verificados se todos os nomes de atributos e suas relaes so


vlidos e semanticamente significativos no esquema do banco de dados especfico que est
sendo consultado.
Se a consulta estiver formulada corretamente, feita a traduo da mesma em uma
forma interna mais apropriada para o compilador, traduzindo a consulta para a lgebra
relacional ou em algo equivalente, em forma de uma rvore de consulta (tambm pode ser
representado por um grafo de consulta).
Otimizador: O objetivo do otimizador de consulta escolher a melhor estratgia de
execuo da consulta, atravs de modificaes nas expresses algbricas obtendo
expresses equivalentes, porm com custos diferentes. As transformaes so baseadas em
propriedades algbricas, como a transitividade de operadores na seleo de algoritmos para
a implementao. As expresses algbricas equivalentes podem gerar um grande nmero de
planos e para que o processo de otimizao no fique invivel alguns otimizadores usam
heursticas para escolher o melhor plano. Com base nos custos dos planos que foram
gerados o otimizador escolhe o plano que tenha o menor custo de acordo com o modelo de
custo estabelecido.
Depois do plano escolhido, o otimizador gera o PEC (Plano de Execuo de
Consulta) e envia-o para o Processador de Consulta.
Processador de Consulta: Recebe o PEC do Otimizador e executa o cdigo da consulta,
no modo compilado ou interpretado para produzir o resultado. O processador de consulta
tambm chamado de MEC ( Mquina de Execuo de Consulta).
A consulta passa pelos dois primeiros passos somente uma vez, quando est sendo
compilada. O PEC enviado para ser executado pela MEC sempre que for executada a
consulta especfica.
Um exemplo destas etapas de processamento de consulta apresentado na seo 3.2
nas pginas 33 e 34 deste trabalho.

2.2 Transformao da consulta para a lgebra


Relacional
Para que a MEC possa executar a consulta, a mesma deve est convertida em uma
representao interna, que elimina as consideraes da camada externa e prepara o caminho
para o estgio da otimizao.
Em geral, as consultas em SQL so decompostas em blocos de consultas, que formam
as unidades bsicas que podem ser traduzidas pelos operadores algbricos e ento
otimizadas. Um bloco de consulta contm uma nica expresso SELECT-FROM-WHERE,
bem como clusulas GROUP BY e HAVING. Portanto, sub-consultas dentro de consulta
so identificadas como bloco de consulta em separado.
Na etapa de otimizao escolhido um plano de execuo para cada bloco de
consulta. A forma interna tipicamente escolhida a de algum tipo de rvore de consulta ou
grafo de consulta.
Um grafo pode ser visto como uma representao de um formalismo. Assumindo que
o formalismo adotado seja a lgebra relacional, a representao interna da rvore a
prpria expresso algbrica.
A lgebra relacional permite que uma mesma consulta seja representada de vrias
formas distintas. O desempenho de uma consulta deve ser independente da forma como o
usurio a escreveu.

2.3 lgebra Relacional


A lgebra relacional uma linguagem de consulta procedural, que consiste em um
conjunto de operaes tendo como entrada uma ou duas relaes e produzindo, como
resultado, uma nova relao [SILBERSCHATZ, 2001]. A lgebra relacional foi proposta
por [CODD, 1970].
As operaes fundamentais da lgebra so: Seleo, Projeo, Unio, Diferena,
Produto Cartesiano, Juno Natural, Juno e Renomear, sendo baseadas na teoria de
conjunto da matemtica.

A operao Seleo seleciona tuplas que satisfaam a um determinado predicado. A


operao seleo representada pela letra grega minscula sigma () o predicado
(condio) aparece subscrito. As condies podem ser criadas utilizando as comparaes
tais como =, , < , <, >, >, e podem ser combinados vrios predicados em um grande
predicado usando os conectivos lgicos e () e ou (U).
A operao de Projeo determina quais atributos so necessrios para a execuo da
consulta, excluindo os desnecessrios. representada pela letra grega pi () e seus
atributos so subscritos. A operao de projeo elimina os elementos duplicados.
A operao Unio faz a juno de dois conjuntos. preciso que estes dois conjuntos
sejam compatveis. Para que uma relao de unio, por exemplo, r U s seja vlida
necessrio que duas condies sejam satisfeitas:
1. As relaes r e s devem possuir o mesmo nmero de atributos;
2. O domnio do i-simo atributo de r e o i-simo atributo de s devem ser os mesmos
para todo i.
A operao de Diferena denotada pelo smbolo menos ( ) permite encontrar as
tuplas que esto em uma relao e que no esto na outra.
A operao de Produto Cartesiano representada por ( x ) permite a combinao de
duas relaes quaisquer. A combinao dos elementos de cada relao resulta em um
conjunto onde cada tupla de uma relao foi combinada com todas as tuplas da outra
relao. O tamanho do conjunto resultante, em linhas, dado pelo nmero de tuplas
existente em uma relao multiplicada pelo nmero de tuplas da outra relao, em coluna
dado pela soma dos atributos de uma reao pelo da outra relao.
A operao de Juno Natural simplifica certas consultas que exigem produto
cartesiano. Ela incorpora as operaes de produto cartesiano e seleo. O produto
cartesiano feito utilizando o critrio de equivalncia entre os atributos que existem nas
duas relaes. Aps o produto cartesiano removem-se os atributos duplicados. A operao
de Juno realiza o Produto Cartesiano seguido de uma seleo, onde a condio de
seleo qualquer.
A operao de Renomear permite dar outro nome para uma relao. representado
pela letra grega rho ().

2.3.1 Equivalncia na lgebra Relacional


Com o uso das regras de equivalncia possvel gerar varias equaes equivalentes
para uma mesma consulta. Essa gerao de regras de equivalncia cara, tanto em termos
de tempo e de espao.
Duas expresses so equivalentes quando elas preservam a equivalncia, ou seja, as
relaes geradas pelas duas expresses tm o mesmo conjunto de atributos e contm o
mesmo conjunto de tuplas, embora seus atributos possam estar ordenados em ordem
diferente.
So apresentadas abaixo algumas regras de equivalncia em expresses na lgebra
relacional, conforme [SILBERSCHATZ, 2001]. Sero usados , 1, 2 e assim por diante
para denotar predicados e L1,L2, L3 e assim por diante para denotar listas de atributos e E1,
E2, E3 e assim por diante par denotar expresses da lgebra relacional.
Cascata: Selees conjuntivas podem ser quebradas em uma seqncia de selees
individuais.
1 ^ 2 (E) = 1(2(E))
As selees so comutativas
1 (2 (E)) = 2(1(E))
Cascata II: As projees intermedirias de uma seqncia de operaes de projees
podem ser omitidas.
L1(L2 ( ... (Ln(E) ...)) = L1(E)
Seleo pode ser combinada com Produto Cartesiano e Junes
o (E1 x E2 ) = E1 E2
o 1(E1 1 E2 ) = E1 1 ^ 2 E2
Junes naturais so associativas
(E1 E2 ) E3 = (E1 (E2 E3 )
A comutatividade e a associatividade de operaes de junes so importantes na
otimizao de consultas para a reordenao de junes. A maioria dos otimizadores de

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 operao de projeo distribuda por meio da operao de unio


L (E1 U E2) = ( L (E1 )) U (L (E2))

2.3.2 Operadores Algbricos Lgicos e Fsicos


Os operadores de um otimizador de consulta so baseados na lgebra relacional.
Como dito antes, as operaes algbricas podem ser combinadas de vrias maneiras, devido
a diferentes algoritmos implementados. Assim, podemos criar dois conjuntos de operadores
algbricos: lgicos e fsicos. Os operadores lgicos so os operadores abstratos: seleo,
projeo, produto cartesiano, juno, etc. Os operadores fsicos so os operadores que o
otimizador usa e so implementados pela MEC. Os operadores lgicos so mapeados em
um ou mais operadores fsicos.
Por exemplo, na seleo a varredura de arquivo o operador de mais baixo nvel
para ter acesso aos dados. A varredura de arquivo implementa algoritmos de procura que
localizam e recuperam as tuplas que esto de acordo com a condio de seleo. A
varredura de arquivo permite ler uma relao inteira nos casos nos quais a relao
armazenada em um arquivo nico e dedicado. O funcionamento de alguns algoritmos de
busca no arquivo est mostrado abaixo.
Busca Linear: Cada bloco de arquivo varrido e todos os registros so testados para
verificar se satisfazem condio de seleo.
Busca Binria: Se o arquivo ordenado por um determinado atributo e condio de
seleo uma comparao de igualdade no atributo, pode ser usada uma busca binria
para localizar os registros que satisfazem a seleo.
Alguns algoritmos de busca usam ndices e so conhecidos como varredura de ndice.
Porm existe um overhead nos blocos que contm os ndices que possibilitam o acesso
rpido, direto e ordenado aos blocos.
ndice primrio, igualdade na chave: usado para recuperar um nico registro que
satisfaz a condio de igualdade correspondente.
ndice primrio, igualdade em atributo que no chave): Podemos recuperar
registros mltiplos usando ndice primrio quando a condio de seleo especifica uma
comparao de igualdade em um atributo que no chave.

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.

Ordenar r por r[AtribJuno];


Ordenar s por s[AtribJuno];
pr:= primeira tupla de r;
ps:= primeira tupla de s;
enquanto (ps null e pr null) faa
ts := tupla de ps
Ss := {ts};
ps := recebe prxima tupla de s
acabou := falso;
enquanto no acabou e ps null faa
ts := tupla de ps;
if (ts[AtribJuno] = ts[atribjuno] ento
Ss := {Ss} + ts;
ps := prxima tupla de s;
se no
acabou := verdadeiro;
end
end
tr := tupla de pr;
enquanto pr null and tr[AtribJuno] < ts[AtribJuno] faa
pr := prxima tupla de r;
tr := tupla de pr;
end
enquanto pr null e tr[AtribJuno] = ts[AtribJUno] faa
para cada ts em Ss faa
resultdo := tr |x| ts
end
pr := prxima tupla de r
Figura 4: Algoritmo de Operador Juno Natural [SILBERSCHATZ, Abrahm;
KORTH, Henry; S. SUDARSHAN].

2.4 Plano de Execuo de Consulta


Um plano de execuo de consultas (PEC) composto por uma seqncia de
operadores algbricos que a MEC capaz de executar, com o objetivo de obter o resultado
de uma consulta de forma mais rpido possvel. O otimizador de consulta responsvel por
escolher, dentre os operadores fsicos implementados pela MEC, quais so os mais
propcios e a ordem deles para a criao do PEC intermedirio de uma consulta especifica.

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.

Figura 5: Topologia de PEC: Linear Esquerda, Ramificada, Linear


Direita [PINHEIRO, 2004].
A escolha entre as topologias influencia no processo de execuo e de otimizao da
consulta. A utilizao das topologias lineares em consultas com predicados tem a
caracterstica de reduzir a quantidade de tuplas nas relaes intermedirias, o que resulta
em consultas com tempo de execuo menores. Contudo, a utilizao da topologia
ramificada permite a criao de planos timos, porm, o tempo gasto em sua criao pode
viabilizar o seu uso. A topologia ramificada favorece o paralelismo horizontal e distribudo,
enquanto que as lineares favorecem o paralelismo vertical. O paralelismo horizontal feito
dividindo a rvore gerada pela consulta em sub-rvores executando cada sub-rvore em um
site. O paralelismo vertical ocorre quando cada operador utiliza o resultado de um outro
operador, assim as tuplas fluem pelos operadores mantendo constante a carga de
processamento entre os mesmos.

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.

2.5.1 Arquitetura do Otimizador de Consulta


Quando uma consulta passada para um SGBD, esta consulta transformada em
uma rvore de consulta e esta rvore pode ser executada de vrios modos sendo que cada
modo de executar a rvore tem um custo diferenciado. O otimizador de consulta, a
principio, considera todas as possibilidades de execuo para poder escolher o melhor
plano. A figura 6, baseada em [IOANNIDIS, 1995] mostra a etapa de otimizao do
processamento de consulta.
Modelo de
Custo

Espao
Algbrico

Plano
Mtodo de
Estrutura

Estimativa do
tamanho da tabela

Figura 6: Etapa de Otimizao do Processamento de Consulta


O plano o mdulo principal. Nele estimado o custo de todos os planos passados
por ele e escolhe o melhor. dependente de trs outros mdulos de otimizao: o do
espao algbrico, o mtodo de estrutura e o modelo de custo. O plano lgico da consulta
ento convertido em um plano fsico, que indica a ordem em que sero executadas as
operaes, o algoritmo usado para executar cada etapa e ainda as maneiras como os dados
armazenados so obtidos e como os dados so repassados de uma operao para outra.

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.

2.5.2 Tipos de Otimizao


Otimizao Heurstica
As tcnicas de otimizao que usam regras heursticas para modificar a representao
interna de uma consulta reduzem o nmero de planos que podem ser escolhidos em um
processo de otimizao. A consulta em geral est representada por um grafo de consulta.
A partir de uma consulta inicial que passada para o otimizador, o otimizador
heurstico no permite que sejam gerados todos os planos equivalentes consulta inicial, e
com isso tem-se uma quantidade de planos menor para o clculo do custo e escolha do
melhor plano.
Depois disso gerado um plano de execuo de consulta para executar grupos de
operaes, com base nos caminhos de acesso disponveis nos arquivos envolvidos na
consulta.
Uma regra heurstica consiste em aplicar primeiro as operaes que reduzem o
tamanho dos resultados intermedirios, e isso pode ser feito do seguinte modo:

o Executar as selees antes das projees: Execute a seleo antes da projeo, j


que as selees tm o potencial de reduzir significativamente o tamanho das
relaes e permite o uso de ndices para acessar as tuplas.
o Executar as operaes de selees e projees antes da juno ou outras
operaes binrias, o que diminui o tamanho do arquivo intermedirio resultante.

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.

Otimizao Baseada no Custo


Esta otimizao feita baseada no custo de cada plano e para obter o custo de cada
plano, o SGBD guarda algumas informaes sobre os dados armazenado, guardando
informaes sobre o tamanho das tabelas, o tipo de estrutura, os ndices primrios,
secundrios, os atributos de seletividade (percentual de tuplas que so diferentes). Para que
o otimizador possa recuperar essas informaes de forma to eficiente quanto possvel (e
com isso ter um custo mais real possvel) ele usa as informaes que esto armazenadas.
O objetivo do otimizador baseado no custo no produzir a melhor rvore de
execuo para a recuperao dos dados requeridos, e sim fornecer uma rvore de execuo
razovel. Para uma consulta mais complexa a estimativa do custo baseado na avaliao de
um subconjunto de todas as ordens possveis e nas informaes estatsticas que estima a
seletividade de cada operao relacional. Essas estimativas de custo podem ser somente to
exatas quando os dados estatsticos disponveis devido s mudanas que ocorrem nos dados

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.

2.6 Enumerao de Planos Fsicos


Na converso de um plano lgico de consulta em um plano fsico de consulta feita
uma estimativa de custo. Uma abordagem, chamada de exaustiva considera todas as
combinaes de escolhas para cada plano fsico (ordem de juno, implementao fsica
dos operadores e assim por diante). Cada plano fsico recebe um custo e o que tiver o
menor custo selecionado.
H duas abordagens para selecionar o espao de plano fsico possvel:
Top-down: Desce rvore de plano lgico de consulta a partir da raiz. Para cada
implementao possvel da operao na raiz, so considerados todos os caminho
possveis para avaliar seu(s) argumento(s) e calcular o custo de cada combinao,
escolhendo o melhor.
Bottom-up: Para cada sub-expresso da rvore do plano lgico de consulta, so
computados os custos de todos os modos possveis de executar a sub-expresso. As
possibilidades e os custos para uma das sub-expresses que sero executadas so
calculadas

considerando-se

as

opes

das

sub-expresses

correspondentes,

combinando-as de todos os modos possveis com implementaes para o operador da


raiz.
No existe muita diferena entre as duas abordagens. A abordagem top-down nos
permite eliminar certas opes que no poderiam ser eliminadas de baixo para cima. Foram
desenvolvidas estratgias bottom-up que limitam as escolhas de maneira eficiente.

A abordagem de bottom-up conhecida como programao dinmica, na qual s so


considerados os melhores planos para cada sub-expresso quando calculamos o plano para
uma sub-expresso maior.

2.7 O Custo para Executar uma Consulta


Para estimar o custo de vrias estratgias de execuo, o otimizador tem que dispor
de informaes que sejam necessrias para o clculo do custo. Deve ser conhecido o
tamanho das relaes, qual o mtodo de acesso primrio os atributos de acesso primrio
para cada relao bem como o nmero de nvel para cada ndice multinvel que estima o
nmero de acesso aos blocos. E em alguns casos necessrio tambm saber o nmero de
blocos de ndice de primeiro nvel.
O nmero de valores distintos de um atributo e sua seletividade so parmetros
importantes para realizar a estimativa do custo. A seletividade a frao de registros que
satisfazem a uma condio de igualdade em um atributo, o que permite estimar a
cardinalidade da seleo.
Alguns exemplos de custos para executar uma consulta:
Custo de acesso ao armazenamento secundrio: Consiste no custo para pesquisar, ler e
gravar blocos de dados que esto no armazenamento secundrio;
Custo de armazenamento: Consiste no custo gerado para armazenar qualquer arquivo
temporrio gerado por uma estratgia de execuo de consulta;
Custo de computao: Consiste no custo de realizar operaes dentro da memria, nos
buffers de dados durante a execuo da consulta;
Custo de utilizao de memria: Consiste na quantidade de buffers de memria
necessrio para executar a consulta;
Custo de Comunicao: o custo de mover a consulta e seus resultados do local
referente do banco de dados at o local ou terminal onde a consulta se originou.

2.8 Seletividade e Estimativas de Custo na Otimizao de Consulta


O otimizador de consulta deve estimar e comparar os custos para executar uma
consulta, utilizando diferentes estratgias de execuo e deve escolher a estratgia com a
menor estimativa de custo. Para que isso funcione preciso ter estimativas de custos
precisos, de modo que diferentes estratgias sejam comparadas de maneiras justas e
realistas. Alm disso, devemos limitar o nmero de estratgias de execuo a serem
consideradas, visto que a quantidade de diferentes planos que podem ser gerados muito
grande. Por exemplo, para n relaes sero geradas (2(n-1))!/(n-1)! Planos e se todos os
planos forem gerados, o tempo para fazer a estimativa dos custos torna-se invivel. Esse
mtodo mais adequado para consultas compiladas, nas quais faz-se a otimizao no
momento da compilao e o cdigo da estratgia da execuo armazenado e executado
diretamente no momento da execuo.
A otimizao de consulta baseada no custo utiliza tcnicas tradicionais de otimizao
que buscam o espao de soluo de um problema, para uma soluo que minimize uma
funo objetiva (custo). As funes de custos utilizadas na otimizao de consulta so
estimativas, e no funes exatas de custos, de modo que uma otimizao pode selecionar
uma estratgia de execuo de consulta que no seja exatamente aquela considerada tima.

2.9 Informaes para a Estimativa do Custo


Os otimizadores de consulta usam informaes estatsticas armazenadas no catlogo
do SGBD para estimar o custo do plano. O catlogo de informaes relevantes sobre as
relaes inclui:
Nr: Nmero de tuplas na relao r.
Br: Nmero de blocos que contm as tuplas da relao r
Sr: o tamanho em byte de uma tupla da relao r
Fr: o fator de bloco da relao r, ou seja o nmero de tuplas da relao r que cabe
em um bloco.
V(A, r): o nmero de valores distintos que aparecem na relao r para o atributo A

SC(A,r): a cardinalidade de seleo do atributo A da relao r.


Alm do catlogo de informaes sobre as relaes, um catlogo de informaes
sobre ndices usado:
Fi: o fan-out mdio dos ns internos do ndice i para ndices estruturados em rvore.
HTi: o nmero de nveis no ndice i, ou seja, a altura do ndice.
LBi: o nmero de blocos de ndice de nvel mais baixo no ndice i, ou seja, o
nmero de blocos no nvel de folha do ndice.
So usadas estatsticas a fim de estimar o tamanho do resultado e do custo para vrias
operaes e algoritmos.
Se quisermos manter estatsticas precisas, ento, todas as vezes que uma relao for
modificada, temos que atualizar as estatsticas e estas atualizaes gera um overhead
significativo. Por isso a maioria dos sistemas no atualiza estatsticas em todas as
modificaes. Como resultado, as estatsticas usadas para escolher uma estratgia de
processamento de consulta podem no ser completamente precisas.

2.10 Convertendo rvore de Consulta em Plano de Execuo de


Consulta (PEC)
Um plano de execuo para uma expresso da lgebra relacional representado como
uma rvore de consulta inclui informaes sobre os mtodos de acessos disponveis para
cada relao, bem como os algoritmos a serem utilizados no clculo dos operadores
relacionais representados na rvore.
A consulta pode ser executada como uma avaliao materializada ou como avaliao
pipelined. Na avaliao materializada, o resultado de uma operao armazenado como
uma relao temporria, isto , o resultado fisicamente materializado. Na avaliao
pipelined, medida que so produzidas as tuplas resultante de uma operao elas so
encaminhadas diretamente para a prxima operao na seqncia da consulta. A vantagem
do pipelined sobre a avaliao de materializada que naquela tem uma reduo do custo
por no ser necessrio gravar os resultados intermedirios para o disco e no ter que reler os
mesmos para a nova operao.

3 Processamento de Consulta em Sistemas de Integrao


de Dados
3.1 Introduo
Atualmente as organizaes esto sempre procura de formas de melhorar os seus
processos. Um dos meios de se obter esses aprimoramentos a gerao e a manipulao de
grandes quantidades de dados. A manipulao destes dados , geralmente, feita atravs de
sistemas de informao. Muitos dos sistemas de informao existentes possuem como
caractersticas, alm de outras, o armazenamento dos dados de forma permanente a sua devida
recuperao.
As informaes obtidas por meio dos sistemas de informao so criadas a partir de
dados. Todo sistema de informao que armazenam dados deve faz-lo segundo um modelo a
fim de conseguir recuper-lo posteriormente. Informaes muitas vezes so criadas utilizando
dados existentes em diversos sistemas independentes. Portanto, pode ser conveniente que
certos dados de uma organizao sejam compartihados com outras organizaes, uma vez que
cada organizao possui um conjunto de dados referente aos segmentos que atuam. Essa
situao pode ocorrer, por exemplo, com fichas de paciente de hospitais ou ficha de detidos
em departamento da polcia. Supondo que cada organizao tenha o seu sistema de
organizao, estes podem possuir a necessidade de acessar fontes de dados existentes em
outros sistemas.
Todos os dados sobre os quais se tem o interesse de armazen-los e posteriormente
recuper-los devem ser armazenados segundo um padro. Os dados podem ser armazenados
sob diversos padres, muitas vezes incompatveis entre si. Isso torna o seu compartilhamento
entre sistemas diferentes ou a unio com dados de outros sistemas para a criao de
informaes uma ao complexa. A funo de unificar, compartilhar e homogeneizar os dados
geralmente ficam a cargo dos sistemas de integrao.
Sistemas de integrao de dados tm por objetivo fornecer aos usurios uma viso
integrada dos dados armazenados em diferentes fontes de dados, de forma transparente de
localizao, modelo de dados, linguagem, sistema operacional e forma de acesso. Sistemas de
integrao constituem uma camada intermediria entre as fontes de dados e a aplicao

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.

3.2 Processamento de Consulta em Banco de Dados Distribudos


(BDDs)
Um banco de dados distribudo uma coleo de vrios bancos de dados logicamente
interligados e distribudos por uma rede de computadores. A figura 7 mostra um banco de
dados distribudos por vrios ns (sites) de uma rede. Um sistema de gerenciamento de banco
de dados distribudos (SGBDDs) um sistema de software que permite a gerencia do banco de
dados distribudo e que torna a distribuio (de controle e de dados) transparente ao usurio
[ZSU/VALDURIEZ, 2001]. Sob o ponto de vista do usurio, um SGBDD deve parecer
exatamente como o SGBD no distribudo, considerando que o mesmo pode ser acessado por
qualquer um dos ns. Segundo [DATE, 2000] desejvel que o SGBDD tenha certas
caractersticas tais como:
Grande autonomia nos sites locais, os quais devem ser tratados como iguais e devem
depender, o mnimo possvel de um site central;
Processamento distribudo de consulta, ou seja, as consultas submetidas a um site devem
ser otimizadas e podem ser executadas em outros sites, se necessrio;
Transparncia no acesso a dados distribudos (fragmentos e rplicas);
Independncia de plataforma de hardware, de sistema operacional, de rede e de SGDB
local;

31

n 1
n 2
n 5
Rede de
comunicao
n 3

n 4

Figura 7: SGBD Distribudo

Nos

sistemas de bancos de dados distribudos a consulta pode ser realizada de duas formas:

De forma centralizada: o servidor executa todas as consultas utilizando os dados dos


outros servidores envolvidos na consulta;

De forma distribuda: o servidor divide a consulta e submete as sub-consultas aos


respectivos servidores de acordo com os dados envolvidos.
Um dos principais objetivos do processamento de consulta distribudo reduzir, ao
mximo possvel, o custo de comunicao (transporte de dados, de mensagens, etc) entre os
sites envolvidos em uma consulta. Este custo pode variar de acordo com a topologia da rede,
porm mais importante do que os custos que existe no processamento centralizado que so:
custo de entrada/sada e de processamento. Para que o otimizador global decida em que site
cada operao ser executada, ele dever considerar algumas questes, tais como:
Executar as operaes em sites com maior poder de processamento, entretanto sem sobrecarreg-los.
As consultas devem ser processadas em sites que esto mais prximos possveis dos site de
origem da consulta;

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

Consulta algbrica sobre


relaes distribudas

Localizao de dados

Esquema de
Fragmentos

Consulta de fragmentos

Otimizao Global

Estatsticas sobre
Fragmentos

Consulta de fragmentos otimizados


com operaes de comunicao

Otimizao local

Esquema
Local

Consultas locais otimizadas

Processador (MEC)
Figura 8: Etapas de Processamento de consulta em BDDs.
33

O processamento de consulta deve interpretar e analisar a consulta global recebida,


produzir as sub-consultas que sero submetidas a cada uma das fontes de dados (sites), gerar
um plano de execuo global otimizado e proceder a execuo da consulta e a composio dos
resultados.
Decomposio da consulta
Transforma a consulta em uma consulta algbrica sobre relaes globais
Na decomposio da consulta esta passa por trs etapas sucessivas e a consulta ento,
analisada, simplificada e reestruturada.
Na etapa de anlise a consulta analisada semanticamente, de forma que as consultas
incorretas sejam detectadas e rejeitadas o quanto antes.
Geralmente a consulta submetida transformada em um grafo de consulta global
contendo um conjunto de operaes de seleo, projeo e juno. No grafo, um dos ns o
de resultado e os outros, indicam as relaes globais. Uma aresta entre dois ns (exceto o n
resultado) representa uma juno, enquanto que uma aresta ao n resultado indica projeo.
O grafo de consulta til para determinar a corretude da consulta: se o grafo no
conectado, a causa uma ausncia de um predicado de juno (clusula Where em SQL) na
consulta e, neste caso, a consulta deve ser rejeitada.
A consulta abaixo ser transformada em um grafo conectado que est mostrado na
figura 9.
SELECT

ENAME,RESP

FROM

E, G, J

WHERE

E.ENO = G.ENO

AND G.JNO = J.JNO


AND JNAME = "CAD/CAM"
AND DUR > 36
AND TITLE = "Programador"

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

A consulta abaixo ser transformada em um grafo de consulta no conectado e logo, essa


consulta ser rejeitada. O grafo est mostrado na figura 10.
SELECT

ENAME,RESP

FROM

E, G, J

WHERE

E.ENO = G.ENO

AND JNAME = "CAD/CAM"


AND DUR > 36
AND TITLE = "Programador"
DUR >36
E.ENO=G.ENO
E
"Programador"
ENAME

G
RESP

JNAME="CAD/CAM"
JJ

RESULTADO

Figura 10: Grafo No Conectado [ZSU, VALDURIEZ, 2001]

Na etapa de simplificao a consulta elimina os predicados redundantes. E na etapa


seguinte a consulta reestruturada como uma consulta algbrica.

35

Localizao dos Dados


A segunda camada uma consulta algbrica sobre relaes distribudas. A principal
funo localizar os dados da consulta com o uso de informaes e distribuio de dados.
Como as relaes so armazenadas em subconjuntos disjuntos chamados fragmentos e cada
um armazenado em um site diferente, essa camada determina que fragmentos esto envolvidos
na consulta e transforma a consulta distribuda em uma consulta sobre fragmentos. A
fragmentao definida atravs de regras de fragmentao que podem ser expressas como
operaes relacionais. Uma relao distribuda pode ser reconstruda pela aplicao das regras
de fragmentao, e depois pela derivao de um programa de operaes algbrica relacional,
chamado programa de localizao, que ento atua sobre fragmentos.
Otimizao Global
A entrada para essa camada uma consulta de fragmentos, ou seja, uma consulta
algbrica sobre fragmentos. O objetivo da otimizao de consulta encontrar uma estratgia
de execuo para a consulta que seja prxima da estratgia tima. Uma estratgia de execuo
para uma consulta distribuda pode ser descrita com operaes da lgebra relacional e
primitivas de comunicao para a transferncia de dados entre sites. As camadas anteriores j
otimizaram a consulta por exemplo, eliminando expresses redundantes, porm, essa
otimizao independente de caractersticas de fragmentos como cardinalidade e as operaes
de comunicao ainda no foram especificadas. Permutando-se a ordenao de operaes
dentro de uma consulta de fragmentos, podem ser encontradas muitas consultas equivalentes.
A otimizao de consulta consiste em encontrar a melhor ordenao de operaes na
consulta de fragmentos, inclusive operaes de comunicao que minimize uma funo de
custo. A funo de custo com freqncia definida em termos de unidade de tempo, e se
refere a recursos de computao como espao em disco, operaes de E/S de disco, CPU e
comunicao. A determinao de custo de execuo antes da execuo da consulta
(otimizao esttica) se baseia em estatsticas de fragmentos e nas frmulas para estimar as
cardinalidade dos resultados de operaes relacionais. Sendo assim, as decises de otimizao
dependem das estatsticas disponveis sobre fragmentos.
A sada da camada sobre otimizao de consulta uma consulta algbrica otimizada
com incluso de operaes de comunicao sobre fragmentos.
36

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.

3.3 Processamento de Consulta em Sistemas de Integrao de Dados


Um sistema de integrao de dados um sistema que prov uma interface geral para um
conjunto de fontes heterogneas, distribudas e autnomas. Heterogeneidade, distribuio e
autonomia so aspectos importantes com os quais esses sistemas devem lidar. A
heterogeneidade se manifesta atravs dos diferentes sistemas, modelos de dados, sistemas de
comunicao ou hardware nos quais operam os sistemas de informao. A autonomia um
fator que aumenta a complexidade, pois os sistemas operam sobre um controle local e foram
projetados independentes uns dos outros.
Com relao arquitetura de sistemas de integrao de dados, pode-se variar de sistemas
mediadores que so programas desenvolvidos para integrar fontes de dados especficas em um
determinado contexto, at complexos sistemas gerenciadores de banco de dados heterogneos
(SGBDHs), que so sistemas que visam permitir acesso a banco de dados autnomos,
heterogneos e distribudos oferecendo todos os servios de um banco de dado centralizado.
A classificao de sistema de integrao de dados baseada na arquitetura mediadoradaptador proposta por [WIEDERHOLD, 1992] e que est mostrada na figura 11 e apresenta o
seguinte modo de processar uma consulta.
Para cada fonte de dados existe um adaptador (wrapper) que exporta informaes sobre o
seu esquema e suas capacidades de processamento
Um mediador centraliza as informaes exportadas, pelos adaptadores, num dicionrio de
dados global e responsvel pelo processamento das consultas de integrao.

37

Consulta

Resposta

Catlogo
Global

Mediador
Resposta

Resposta

Sub-consulta

Sub-consulta

Adaptador (wrapper)

Adaptador (wrapper)

Fonte de
Dados 2

Fonte de
Dados 2

Figura 11: Arquitetura Mediador-Adaptador


Devido heterogeneidade dos dados, faz-se necessrio criar diferentes adaptadores, um
para cada modelo de dados. A funcionalidade dos adaptadores pode variar desde simples
roteador de pedido de consultas a SGBD, at poderosas MECs (Mquina de Execuo de
Consulta) sobre fontes com capacidades limitadas de execuo.
O mediador mantm um catlogo global usado no processamento de consulta e que
armazena:
O esquema global de todo banco de dados e que ser usado no processamento de consulta
do usurio;

O esquema externo exportado pelas fontes de dados, ou seja, qual parte do esquema
global formada por cada fonte;

Estatsticas para otimizao, caso existam.


A figura 12 ilustra o processamento da consulta de integrao baseado na arquitetura
mediador-adaptador, que segue as seguintes etapas:

38

o Anlise: Baseando-se no catlogo global, seleciona as fontes de dados que podem


contribuir para responder as consultas e verificar a disponibilidade das fontes
selecionadas e sua quantidade de processamento;
o Re-escrita: Converte a consulta (baseado no esquema global) para sub-consultas
(baseado nos esquemas locais das fontes de dados) as quais so enviadas para os
respectivos adaptadores, selecionando um conjunto mnimo de fontes para enviar para
os adaptadores.
o Otimizao: Visa determinar a consulta tima que deve ser enviada para cada um dos
adaptadores. O otimizador deve selecionar o PEC (Plano de Execuo de Consulta)
que explore, da melhor forma possvel capacidade de cada fonte de dados.
Os adaptadores traduzem as sub-consultas recebidas do mediador, do modelo de dados
global para os modelos de dados locais, permitindo que sejam entendidas pela interface da
fonte de dados especifica. Aps a execuo das sub-consultas feitas pelas fontes de dados (ou
em parte, pelos adaptadores) os adaptadores retornam ao mediador os resultados gerados, j
convertidos para o modelo global do mediador;
O mediador combina os resultados parciais recebido dos adaptadores, produzindo o
resultado final da consulta do usurio. Alm disso, caso seja necessrio, o mediador executar
algumas operaes da consulta.

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

Figura 12: Processamento de Consulta no Mediador-adaptador

40

Como nos sistemas de integrao de dados as fontes de dados so autnomas e


heterogneas existe uma maior dificuldade na otimizao da consulta em relao aos
SGBDDs. Isto porque os componentes sendo autnomos eles apresentam capacidades
diferentes de gerar custos que so difceis de predizer.
No prximo captulo ser apresentada uma proposta para um otimizador para um
sistema de integrao de dados, no caso o CoDIMS.

41

4 Projeto de um Otimizador de consulta para o CoDIMS


4.1 CoDIMS
O CoDIMS Configurable Data Integration Middleware System um ambiente
flexvel e configurvel baseado em componentes e framework projetado para prover
extensabilidade e configurao para gerao de sistemas de integrao de dados. Um
sistema de integrao de dados, como o CoDIMS, recebe dados heterogneos de vrias
fontes de dados, estes dados so convertidos para o modelo de dados comum pelos
wrapppers, so integrados e repassados para a aplicao cliente com uma viso integrada.
Uma especificao mais detalhada do CoDIMS encontra-se me [BARBOSA, 2001]. A
figura 13 apresenta uma viso geral de um sistema de integrao de dados.

42

Figura 13: Sistema de Integrao de Dados


O CoDIMS tem a sua arquitetura baseada em componentes que interagem entre si,
com a aplicao cliente e com as fontes de dados. A figura 14 apresenta um esquema geral
do CoDIMS e seus componentes. A configurao obtida atravs de um componente de
Controle, que exporta as interfaces dos componentes integrados e mapeia requisies de
usurio para um workflow executvel de servios e que determina os fluxos de dados entre
os componentes. Para flexibilizar a implementao dos servios, eles so implementados
utilizando a tcnica de frameworks. Atravs do reuso ou adaptao de componentes
framework, o ambiente oferece uma resposta para a gerao de sistema de integrao de
dados direcionados para requisitos especficos da aplicao.

43

Figura 14: Viso Geral do CoDIMS e seus Componentes [BARBOSA, 2001].


Os mecanismos de configurao do CoDIMS permitem a criao de um sistema de
integrao de dados configurados onde diversas fontes, possivelmente heterogneas e
distribudas, contribuem para a execuo da consulta. A caracterstica de integrao de
dados heterogneos se d devido capacidade do componente Acesso aos Dados de
acessar dados, atravs dos Wrappers, em fontes de diversos formatos e ao componente de
Processamento de Consulta de adaptar o processamento da consulta ao formato dos dados.

44

A abordagem do CoDIMS para o desenvolvimento de sistemas de integrao de


dados especificam algumas interface pr-definidas correspondendo a servios middleware
para integrao de dados (Data Integration Middleware Services) DIMS geralmente
nesses tipos de sistemas baseados em servios de banco de dados, o que inclui: Gerncia
de Metadados, Processamento de Consulta, e Acesso aos Dados. Por trs de cada uma
dessas interfaces, podem ser selecionados componentes, com diferentes implementaes,
para fazer parte de um sistema configurado. Alm disso, o ambiente oferece um
componente Controle, o qual faz parte de qualquer configurao. Novas interfaces,
correspondendo a DIMS no previstos inicialmente, podem ser adicionadas ao ambiente
atravs de sua implementao e posterior publicao no componente Controle. O servio
adicionado includo em uma seqncia de workflow para ser avaliado pelo controle em
resposta a uma requisio do usurio. A flexibilidade obtida com essas tcnicas pode ser
assim resumida:
Componentes DIMS: Provm funcionalidades de servios de integrao de dados;
Frameworks: Provm flexibilidade ao componente dos DIMS;
Componente de Controle: possibilita a integrao dos DIMS em um sistema
configurado
A arquitetura do CoDIMS se baseia em componentes que podem se encontrados
distribudos na rede. Assim um fator importante a comunicao entre os diversos
componentes. Atualmente, os componentes so implementados como web services e
utilizam o protocolo SOAP (Simple Object Acess Protocol) para se comunicarem
[TREVISOL, 2004].
O CoDIMS pode agregar vrios componentes em sua arquitetura, contudo quatro
componentes bsicos devem sempre estar presentes: Controle, Gerncia de Metadados,
Processamento de Consulta e Acesso aos Dados.
O componente Controle disponibiliza mecanismos que implementam as
configuraes fsicas e lgica do CoDIMS. Ele tem como objetivo registrar a
configurao do sistema e garantir a consistncia do mesmo.
O componente Metadados armazena, gerencia e viabiliza o acesso aos metamodelos
existentes no sistema integrador. As meta-informaes podem ser divididas em quatro
nveis de metadados, que so: metadados de cada fonte, de exportao, global e externo

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.

4.2 Processamento de Consulta no CoDIMS


Consulta

Processamento de Consulta
O processamento de consulta no CoDIMS inicia-se na aplicao cliente, atravs da

submisso de uma consulta escrita em linguagem de alto nvel,Otimizador


tal como o SQL, sendo
Analisador
Re-escritor
ento enviada para o componente de Controle. O componente de Controle consulta o
workflow e repassa a consulta ao componente Processamento de Consulta.
MEC

Gerncia de Metadados

Acesso aos Dados

Wrapper

Wrapper

46
FD 1

FD2

Figura 15. Sub-Componentes interno do componente Processamento de


Consulta
Dada

complexidade

do

componente

Processamento

de

Consulta,

as

funcionalidades que ele possui so encapsuladas em sub-componentes, que so:


Analisador, Re-escritor, Otimizador e Mquina de Execuo de Consultas. A figura 15
mostra os sub-componentes do Processamento de consulta.
Analisador
Nesta fase a consulta global validada atravs da anlise sinttica e lxica, sendo
usadas as informaes contidas nos metadados. Em caso de erro de semntica, de sintaxe
ou tipo incorreto de dados a consulta rejeitada e retornada ao cliente com o respectivo
motivo da rejeio.
Uma consulta semanticamente incorreta se ela no apresentar todas as
informaes para a gerao do Plano de Execuo de Consulta (PEC).
A consulta transformada em uma forma intermediria que representa a consulta
em um formato cannico (como grafo de consulta) permitindo a expresso dos
componentes da consulta (tabelas e operaes lgicas relacionais) sem uma pr-definio
de uma ordem de execuo.

47

No grafo de consulta tal como na figura 9 (pg.34), um dos ns o resultado e os


outros, indicam as relaes globais. Uma aresta entre dois ns (exceto o n resultado)
representa uma juno, enquanto uma aresta ao n resultado indica uma projeo.
Re-escritor
Com o grafo da consulta global e baseando-se nas informaes contidas nos
metadados de exportao das fontes de dados que esto envolvidas na consulta, o Reescritor, como o nome diz, re-escreve a consulta submetida, agrupando as informaes
que devem ser fornecidas por cada fonte de dados.
O Re-escritor agrupa as sub-consultas por fonte de dados de maneira que uma, e
apenas uma sub-consulta, seja enviada a cada fonte de dados para cada consulta global
fornecida.
Otimizador
A partir do grafo passado pelo Re-escritor para o Otimizador, este produz um plano
de execuo que esteja otimizado para a consulta dada, atravs de transformaes
algbricas e fsicas. O otimizador faz uso das propriedades comutativas e associativas das
junes, e distributivas das selees sobre as junes, para modificar o plano inicial, o que
resulta em estratgia de execuo umas aceitveis e outras inviveis. O otimizador visa a
encontrar uma ordenao tima destas operaes, o que nem sempre possvel, pois de
acordo com o nmero de fontes envolvidas na consulta, o nmero de estratgias pode
chegar a ser um problema da classe NP. Ento, o papel do otimizador encontrar uma boa
estratgia, ou at mais importante do que isso, evitar as pssimas estratgias.
Mquina de Execuo de Consulta MEC
O PEC de menor custo escolhido pelo otimizador ento enviado para a MEC, que
implementa os operadores lgicos e fsicos (suportados pelo sistema). A MEC
responsvel por ativar a execuo, na cadeia de operaes explicitada no PEC, e retorna o
conjunto resultado para o cliente.
Os sub-componentes do Componente Processamento de Consulta podem ser
configurados para existirem de duas formas: dentro do componente de Processamento de
Consulta ou como componente remoto.

48

A vantagem dos sub-componentes estarem includos dentro do Processamento de


Consulta o ganho de velocidade no processamento da consulta. Isso ocorre, pois esto
reunidos em um mesmo componente e com isso elimina-se a possibilidade de ocorrer
problemas na comunicao atravs da rede. Porm, essa abordagem limita as
possibilidades de criar novas configuraes.
A criao de sub-componentes remotos permite que cada componente se torne
independente dos outros, permitindo a sua substituio sem que ocorra interferncia nos
outros. Isso tambm permite que os sub-componentes possam ser distribudos atravs da
rede o mais prximo possvel de onde eles so necessrios. A definio de interfaces para
a comunicao permite tambm a criao de novos componentes que tenham as mesmas
funcionalidades, mas que as realizem de forma diferentes, fazendo assim uma melhor
adaptao do CoDIMS ao cenrio em que ele ser utilizado.
Neste trabalho ser especificado e implementado um otimizador de consulta para o
CoDIMS, e essa implementao foi baseada em [PORTO, 2001].

4.3 Otimizador de Consulta do CoDIMS


O CoDIMS visa oferecer facilidade de adaptao ao contexto em que ele ser
utilizado. Logo, o Otimizador de Consulta do CoDIMS deve ser capaz de otimizar as
consultas independente dos cenrios em que elas ocorrem, como: replicao de dados,
ambiente de processamento paralelo, dados distribudos por vrias fontes, fluxo de dados
alternativos entre outros. O Otimizador deve ser capaz de atender a estas situaes.
O CoDIMS deve se adaptar a cada cenrio sem que isto cause problemas com o
aumento dos custos de desenvolvimento, necessitando de recursos de software e hardware
mais poderosos e problemas de desempenho. Em contra partida, a criao de um
otimizador que atenda a todos os cenrios ou a grande parte dos cenrios, resultaria na
criao de um middleware mais complexo. Assim, com a utilizao de um Otimizador
expansvel possvel criar operadores que melhor atendam aos tipos especficos de
consulta de cada cenrio, sem criar uma sobrecarga no middleware, alm de adaptar o
Otimizador a qualquer modelo de dados.

49

4.3.1 Funcionalidade do Otimizador


Com a criao de novos operadores algbricos e de controle possvel a criao de
um Otimizador expansvel para o CoDIMS. O Otimizador deve conhecer quais
operadores que esto implementados na MEC e determina os operadores algbricos e os
mdulos de execuo que formam o PEC.

4.3.2 Localizao Fsica do Otimizador


A localizao fsica do Otimizador de consulta pode ser feita de diferentes maneiras.
Fazendo uma analogia a localizao fsica da Mquina de Execuo de Consulta (MEC)
que se encontra em [PINHEIRO, 2004], podemos ter o otimizador como:
Uma instncia interna do componente Processamento de Consulta (Figura 16)
As vantagens de se ter o Otimizador como uma instncia interna do componente
Processamento de Consulta que com isto existe uma implementao mais simplificadas
e uma execuo mais eficiente. J as desvantagens so que com a criao de um
componente mais complexo e pesado existe uma menor possibilidade de criao de novas
configuraes.

Metadados

Componente Processamento de Consulta


Analisador

Re-escritor

Otimizador

MEC

Controle

Acesso aos Dados

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

Figura 17: Arquitetura Interna do Pacote Processamento de Consulta


Um componente remoto.
O otimizador pode ser instanciado como um componente remoto (Web Service). A
criao de componentes remotos a partir dos sub-componentes do Processamento de
Consulta uma possibilidade de evoluo da arquitetura interna do componente.
A desvantagem desta arquitetura : o trfego na rede de comunicao pode crescer
muito entre a localizao fsica dos componentes remotos e a gerao de componentes
remotos o que possui um alto grau de complexidade. A figura 18 ilustra a arquitetura com
Re-escritor
Otimizador
Analisador
os componentes
remotos.

MEC
Fachada Processamento de Consulta

51
Gerncia de
Metadados

Controle

Acesso aos
Dados

Figura 18: Arquitetura com os Componentes Remotos

4.4. Especificao Funcional do Otimizador de Consulta do CoDIMS


O Otimizador, conforme visto anteriormente, recebe um grafo de consulta, como
entrada, que est mapeado como uma mensagem em XML e produz um plano de
execuo de consulta (PEC). O grafo de consulta obtm as meta-informaes sobre os
vrtices e arestas. As metas-informaes sobre uma relao compreendem sua
cardinalidade, a definio de seus atributos e da respectiva quantidade de valores
distintos, alm de sua localizao. Cada predicado tem uma estimativa de seu fator de
seletividade. A seletividade uma estimativa da quantidade de tuplas que iro atender ao
predicado. As operaes lgicas empregadas so: seleo, juno, projeo, produto
cartesiano. E as operaes fsicas so: scan, send, materialize e read.
A determinao do plano timo de execuo baseada no modelo de custo e em um
algoritmo exaustivo de permutao na ordem de predicados caros. O modelo de custo
considera a execuo dos operadores em paralelo, segundo o modelo de fluxo de dados.
Um PEC expresso como uma seqncia de operaes executveis. Cada operao
apresenta um custo prprio que dependente de parmetro externo tais como: a taxa de
transferncia da rede, de entrada, de sada, etc., tamanho da entrada, cardinalidade da
relao, nmero de valores distintos e/ou tamanho da tupla e o custo de execuo do
algoritmo associado.
O custo de um plano de execuo de consulta completa computado considerandose as estratgias paralelas, independente e de fluxo de dados.
A tabela 1 mostra exemplos de expresses de custo para das operaes lgicas.

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

Tabela 1: Expresses de Custo das Operaes Lgicas


Onde:
Tamanho_tupla a quantidade de byte do atributo;
Card: a cardinalidade da tabela, ou seja, a quantidade de tupla que existe na tabela;
custo_scan: o custo da operao de scan;
custo_transferencia: o custo de transferncia da tupla;
custo_read: o custo de leitura da tupla;
custo_predicado: o custo do predicado.
A tabela 2 mostra exemplos de valores de custos das operaes fsicas.
Descrio
Taxa de transferncia na rede
Taxa de transferncia em disco
Acesso memria

Valor
70 Kb/s
10 MB/s
1000MB/s

Tabela 2: Custo das operaes fsicas

4.5 Diagrama de Classe do Otimizador


A figura 19 apresenta um resumo do diagrama de classes do Otimizador de Consulta
que se encontra no trabalho de [PORTO, 2001]. Apenas as classes mais importantes e que
sero necessrias ao otimizador do CoDIMS esto aqui apresentadas. As demais classes
esto mostradas no apndice.

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

Figura 19: Diagrama de Classe do Otimizador de Consulta

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

generateExecPlan(PredicateEvalList), e com o auxilio da classe ExecutePlano ele obtem 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
.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

custo de se executar um determinado plano. Tendo o custo de todos os planos calculados,


agora, o otimizador escolhe o que apresenta o menor custo, e passa o plano escolhido para
o MEC. A classe otimizador com seus atributos e mtodos est mostrada na figura 20

Figura 20: Classe Otimizador


Atributos da Classe Otimizador
printPerm: objeto da classe PrimPerm que realiza a impresso do plano;

55

pel: objeto da classe PredicadoEvalLista que contm a lista de predicado;


Pell: objeto da classe PredicadoEvalListaLista que contm a lista da lista de predicado;
AtributoLista: objeto da classe AtributoLista que contm a lista de atributo;
sietLista: objeto da classe SiteLista que contm a lista de site;
grafoConsulta: objeto da classe GrafoConsulta que contm o grafo da consulta;
transporte: objeto da classe Transporte que realiza o transporte;
relao: objeto da classe Relao que contm as relaes do grafo;
relaoLista: objeto da classe RelaoLista que contm a lista de relao;
predicadoLista: objeto da classe PredicadoLista que contm a lista de predicado;
projeto: objeto da classe Projeto que realiza a projeo;
processaProjeto: objeto da classe ProcessaProjeto que processa a projeo;
projetoLista: objeto da classe ProjetoLista que contm a lista de projeo;
estrategiaTransporte: inteiro que determina qual a estratgia de transporte;
site: objeto da classe Site que contm o site;
ExecPlan: objeto da classe ExecutePlano que executa o plano;
melhorCustoPlano: atributo com o custo do plano.

Mtodos da Classe Otimizador


getBestPlano(): Retorna o melhor plano gerado na otimizao.
generatExecPlan(PredicadoEvalList): Executa todos os planos que foram gerados.
generatePredicateEvalutionSequence():Gera todos os planos atravs do plano que foi
passado pelo Re-escritor.
generatePermution(PredicateEvalLista) : Gera as permutaes.
getNext(PredicadoEvalLista, int) : Busca o prximo predicado de acordo com a posio.
printPell(PredicadoEvalListaLista): Imprime os predicados.
printQg(): Imprime o grafo de consulta.

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.

Figura 21: Classe GrafoConsulta

57

Atributos da Classe Otimizador


arestaLista: objeto da classe ArestaLista que contm a lista de aresta;
predicadoLista: objeto da classe PredicadoLista que contm a lista de predicado;
relaoLista: objeto da classe RelaoLista que contm a lista de relao;
verticeLista: objeto da classe VerticeLista que contm a lista de vrtice;
atributoLista: objeto da classe AtributoLista que contm a lista de atributo;
siteLista: objeto da classe SiteLista que contm a lista de site;
atributoListaHash: objeto da classe AtributoListaHash que contm a lista de atributo em
uma tabela hash.
Mtodos da classe GrafoConsulta
getSite(ProgramInfoNode, int): Obtm um site de acordo com a posio.
getAresta(ProgramInfoNode, int): Obtm uma aresta de acordo com a posio.
getPredicado(ProgramInfoNode, int): Obtm um predicado de acordo com a posio.
getProjeto(ProgramInfoNode, int): Obtm um projeto de acordo com a posio.
getRelacao(ProgramInfoNode, int): Obtm uma relao de acordo com a posio.

4.6 Diagrama de Seqncia


A fachada do otimizador recebe o grafo e busca os atributos do grafo na classe
GrafoConsulta e busca as estatstica na classe Param. A fachada Otimizador, ento,
passa os dados obtidos para o Otimizador. O otimizador gera todos os planos e calcula o
custo de cada plano. Sabendo o custo de todos os planos que foram gerados, o
otimizador envia para a MEC o plano que tem o menor custo.
O diagrama de seqncia do otimizador est mostrado na figura 22.

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

5.2 Processamento da Consulta do Caso de Uso


Processamento de Consulta
Consulta
A empresa deseja saber quais os funcionrios que so motoristas e que tenham
dependentes, obtendo tambm o nome e o sobrenome dos funcionrio. A fim de se
obter a resposta, foi submetida para o CoDIMS a seguinte consulta em SQL
Select nome, sobrenome, dependente.nome
From Funcionario, Motorista, Dependente
Where Funcionario.codigo = dependente.funCodigo and
Funcionario.codigo = Motorista.funCodigo
A consulta ento enviada para o componente Processamento de Consulta e
depois repassada para os sub-componentes Analisador, Re-escritor e Otimizador. Depois
Analisador
de otimizada, o Plano de Execuo da Consulta gerado no otimizador entregue MEC.
Uma abstrao da estrutura da aplicao para o processamento de consulta, est
mostrada na figura 24.
Wrapper

Wrapper

Gerncia de Metadados
61
Figura 24. Sub-Componentes internos do componente Processamento
Consulta
Acesso aosde
Dados

Re-escritor

Otimizador

MEC

1.<QueryGraph name=GrafoConsulta2 numbVert=4 nList=5 >


2.<siteList listType=1 number=3>
3.<site Id=1 />
4.<site Id=2 />
5.<site Id=3 />
6.</siteList>
Wrapper
7.<relationList listType=2 number=3>
8.<relation site=1 name=Funcionario nAttribute=3 cardinality=500 >
9.<attributeList number=3 >
Funcionario
Motorista
Dependente
10.<attribute name=codigo type=1 distValue=350
/>
11.<attribute name=nome type=4 distValue=350 />
12.<attribute name=sobrenome type=4 distValue=350
/>
13.</attributeList>
14.</relation>
15.<relation site=2 name=Motorista nAttribute=2 cardinality=100 >
16.<attributeList number=2 >
17.<attribute name=funCodigo type=1 distValue=10
/>
Conforme visto
anteriormente, o grafo
da distValue=20
consulta gerado/>
a partir da consulta
18.<attribute
name=numCarteira
type=1
19.</attributeList>
inicial
submetida. O grafo representado no formato XML e o parmetro de entrada
20.</relation>
21.<relation
cardinality=100 >
do
Otimizador. O site=3
grafo estname=Dependente
mostrado na figuranAttribute=3
25.
22.<attributeList number=3 >
23.<attribute name=funCodigo type=1 distValue=100
/>
24.<attribute name=nome type=4 distValue=100
/>
25.</attributeList>
26.</relation>
27.</relationList>
28.<edgeList listType=4 number=2>
29.<edge name=e1 vertice1=Funcionario vertice2=Dependente />
30.<edge name=e2 vertice1=Funcionario vertice2=Motorista />
31.</edgeList>
32.<predicateList listType=5 number=2>
33.<predicate type=B name=p1 vertice1=Funcionario attribute1=codigo
34.vertice2=Dependente attribute2=funCodigo edge=e1 selectivity=0.3
cost=1e-6 />
35.<predicate type=B name=p2 vertice1=Funcionario attribute1=codigo
36.vertice2=Motorista attribute2=funCodigo edge=e2 selectivity=0.6
cost=1e-6 />
37.</predicateList>
38.<projectList listType=6 number=4>
39.<project vertice=Funcionario attribute=nome />
40.<project vertice=Funcionario attribute=sobrenome />
41.<project vertice=Dependente attribute=nome />
42.<project vertice=Motorista attribute=numCarteira />
43.</projectList>
62
44.</QueryGraph>

5.3 Grafo de Consulta

Figura 25: Grafo de Consulta Gerado a partir do SQL Enviado ao CoDIMS

O grafo de consulta exemplificado tem as seguintes caractersticas:


Na linha 1 a tag QueryGraph contm o nome do grafo de consulta, o nmero de
vrtices e o nmero de listas existentes no grafo. No caso especifico tem-se no grafo cinco
listas (siteList, relationList, edgeList, predicateList e projectList) e quatro vrtices
(Funcionrio, Dependente, Funcionrio e Motorista).
A linha 2 contm a lista dos sites envolvidos na consulta. Atravs da tag listType igual
a 1 o otimizador sabe que so listados os sites envolvidos. A quantidade de sites para essa
consulta so trs que determinado pelo number = 3.
Nas linhas 3, 4 e 5 esto os sites e seus identificadores. Na linha 6 tem uma tag que determina o fim do siteList.
Na linha 7 com o listType igual a 2 tem-se a determinao das listas de relaes, number determina a quantidade de relaes, no caso 3. Na linha 8 comea a ser mostrada a primeira relao: est no site 1, usa a tabela funcionrio com 3 atributos e cardinalidade igual a
500. A cardinalidade determina a quantidade de tuplas da tabela.
Na linha 9 attributeList determina que um lista de atributos e o atributo number=3
determina que so trs atributos listados. Nas linhas 10, 11, 12 temos os atributos listados.
Dos atributos so mostrados o nome, o tipo (que pode ser int, string, float, id, url) e distValue que determina a quantidade de valores distintos para aquele atributo. Na linha 13 fechada a lista de atributos e na linha 14 a lista de relaes.
As linhas de 15 a 27 so anlogas ao que foi dito acima, porm para os outros atributos
da consulta.
Na linha 28 com o listType igual a 4 determina que uma lista de arestas de number = 2,
ou seja, para o grafo existem duas arestas. As linhas de 29 a 30 descrevem arestas juntamente
com o nome das mesmas e os vrtices que as compem. Na linha 31 fechada a lista de
arestas.
Na linha 32 tem-se as listas de predicados atravs do listType = 5 e como o tag number
igual a 2, temos dois predicado da consulta. Na linha 33 e 34 so mostrados os predicados,
sendo descrito tambm o tipo do predicado (binrio ou unrio), o nome do predicado, os vrtices que compem o predicado, os atributos que ligam um vrtice ao outro, a aresta, a seletividade e o custo do predicado.
As linhas 35 e 36 so anlogas as linhas 33 e 34. Na linha 37 fechada a lista de predicados.

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.

5.4 Planos Gerados pelo Otimizador


Dado que a consulta apresenta dois predicados, ento o otimizador capaz de gerar 8
planos diferentes para a consulta. O clculo da quantidade de planos que podem ser gerados
feito da seguinte forma: Como cada predicado binrio e cada relao est em sites
diferente ento existem dois modos de buscar dados para aquele predicado. E como h dois
predicados temos dois modos de arranj-lo. Com isso, temos: 2x2x2 = 8 planos que o
otimizador capaz de gerar. Os planos para o caso de uso especifico est mostrado abaixo. O
plano 0 o plano que o otimizador recebe do re-escritor e a partir de variaes desse plano o
otimizador cria todos os outros.
Plano: 0
Predicado: p1 Vertice:Funcionario Site: 1
Predicado: p2 Vertice:Funcionario Site: 1
nome, sobrenome,Dependente.nome, numCarteira

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

Figura 27: Grafo do Plano 1


Plano: 2
Predicado: p1 Vertice:Dependente Site: 3
Predicado: p2 Vertice:Funcionario Site: 1

nome, sobrenome,Dependente.nome, numCarteira

Motorista
Dependente

Funcionario
Figura 28: Grafo do Plano 2
65

Plano: 3
Predicado: p1 Vertice:Dependente Site: 3
Predicado: p2 Vertice:Motorista Site: 2

nome, sobrenome,Dependente.nome, numCarteira

Motorista

Funcionario

Dependente

Figura 29: Grafo do Plano 3


Plano: 4
Predicado: p2 Vertice:Funcionario Site: 1
Predicado: p1 Vertice:Funcionario Site: 1
nome, sobrenome,Dependente.nome, numCarteira

Dependente
Funcionario

Motorista

Figura 30: Grafo do Plano 4

66

Plano: 5
Predicado: p2 Vertice:Funcionario Site: 1
Predicado: p1 Vertice:Dependente Site: 3

nome, sobrenome,Dependente.nome, numCarteira

Dependente

Motorista

Funcionario

Figura 31: Grafo do Plano 5

Plano: 6
Predicado: p2 Vertice:Motorista Site: 2
Predicado: p1 Vertice:Funcionario Site: 1
nome, sobrenome,Dependente.nome, numCarteira

Dependente
Motorista

Funcionario

Figura 32: Grafo do Plano 6

67

Plano: 7
Predicado: p2 Vertice:Motorista Site: 2
Predicado: p1 Vertice:Dependente Site: 3
nome, sobrenome,Dependente.nome, numCarteira

Dependente

Motorista

Funcionario

Figura 33: Grafo do Plano 7.

5.5 Clculo do Custo


Para o clculo do custo foram usadas as tabelas funcionrio, dependente e motorista e
os seus dados.
O clculo do custo de um plano feito usando as seguintes expresses:
CustoPlano: Custo_primeira_tupla + custo_caminho_critico
Onde o custo da primeira linha dado pela seguinte expresso:
Custo_primeira_linha = (cardinalidade * selectividade )/custo_transferencia
Abaixo se tem o resultado do clculo do custo do plano 0. Este clculo feito para
todos os outros planos com a finalidade de se obter o plano de menor custo.
Plano: 0
Custo: 0.03278

68

Vrtice Esquerda: Funcionario


Vrtice Direita: Motorista
Relao: Funcionario
Operao: SCAN
Custo: 0.0032000002
Relao: Dependente
Operao: SCAN
Custo: 3.4E-4
Relao: Motorista
Operao: SCAN
Custo: 8.0E-5
Relao: Funcionario
Operao: SEND
Custo: 0.256
Relao: Dependente
Operao: SEND
Custo: 0.0272
Relao: Motorista
Operao: SEND
Custo: 0.0064
Join com as Relaes
Funcionario x Dependente
Operao: JOIN
Custo: 1.0E-6
Join com as Relaes
Funcionario x Motorista
Operao: JOIN

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"/>

<coluna nome="nome" tabela-origem="Funcionario"/>


<coluna nome="sobrenome" tabela-origem="Funcionario"/>
</scan-relacional>

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"/>

PEC que est mostrado a seguir:

</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

A linha 3 mostra a ordem de execuo que no caso 1, ou seja, a primeira instruo


que ser executada. Neste caso um scan na tabela funcionrio, nos atributos: cdigo, nome
e sobrenome.
A linha 8 fecha o scan da tabela funcionrio.
A linha 9 mostra a ordem do consumidor, que para o grafo criado a terceira. A linha
10 fecha o operador.
As linhas de 11 a 24 so anlogas s linhas de 3 a 10.
A linha 25 mostra o primeiro operador que ser executado.
Nas linhas 26 e 27 mostrado que ser realizado um join relacional entre as tabelas
funcionrio esquerda e motorista direita.
Nas linhas 28, 29 so mostrados: o argumento usado na tabela esquerda
(funcionrio.codigo),

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.

5.7 Ferramentas Utilizadas


A implementao do prottipo foi feita utilizando a linguagem Java. Os seus artefatos
foram criados utilizando a linguagem UML (Unified Modelling Language).
O prottipo possui as seguintes caractersticas:
Foi utilizada a linguagem SQL como linguagem de consulta;
A comunicao entre os componentes feita atravs do Apache SOAP;
O prottipo foi implementado usando a linguagem Java da plataforma J2SDK1. 4.1_07
com o ambiente de programao Eclipse 3.1 e no sistema operacional Windows XP;

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.

A compatibilidade com a MEC permite a execuo de consultas otimizadas,

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.

6.2 Contribuies ao CoDIMS


Durante o desenvolvimento deste trabalho foram geradas algumas contribuies ao
CoDIMS, como:
Um prottipo de um otimizador de consulta para o CoDIMS. A partir deste prottipo o
CoDIMS passa a contar com o servio otimizador, permitindo assim a execuo de consultas
otimizadas.
Documentao do otimizador. Foi melhor descrito a especificao e funcionamento do
otimizador, em complemento ao existente em [PORTO, 2001] e em particular para o prottipo
utilizado no CoDIMS.
O modelo de grafo de consulta do CoDIMS, considerando que os servios de anlise e reescrtita ainda no foram especificados e implementados no CoDIMS. Este modelo dever ser
utilizado por tais componentes quando do seu desenvolvimento.
Compatibilidade com o PEC, conforme definido em [PINHEIRO, 2004], permitindo a
execuo do plano gerado pelo otimizador pela MEC.

73

6.3 Dificuldades Encontradas


Durante o desenvolvimento do trabalho a maior dificuldade foi o entendimento inicial
do assunto, considerando a sua complexidade. Isso envolve tanto o entendimento do CoDIMS
quanto o de otimizao de consultas.
A falta de documentao do projeto contida em [PORTO, 2001] o que necessitou fazer
uma re-engenharia do projeto para o entendimento do mesmo.

6.4 Trabalhos Futuros


Este trabalho teve o objetivo de desenvolver um sub-componente do CoDIMS, no caso o
Otimizador de Consulta, e durante o seu desenvolvimento foi percebida a possibilidade de
realizar estudos mais profundos que podero resultar na criao de novos trabalhos. Esses iro
completar o CoDIMS, a fim de tornar um middleware mais completo.
Estudo sobre operadores algbricos que podem ser incorporados MEC e sua implementao.
Esse estudo importante, pois a implementao do sub-componente Otimizador pode dispor
de um maior nmero de operadores algbricos a fim de criar diferentes possibilidade de
otimizao.
Estudo de novos operadores que possam realizar alteraes nos dados armazenados nas fontes,
que possam executar operaes no algbricas (como ordenao ou operaes agregadas do
SQL) e operadores que possam trabalhar com informaes sobre a prpria configurao do
CoDIMS ou seus metadados. Esses novos operadores permitiram a criao de consultas mais
complexas, alm de tornar o CoDIMS mais completo. Esses novos tipos de operadores
influenciaro principalmente no processamento do MEC e como o componente Acesso aos
Dados ir obter os dados nas fontes;
Execuo de mais de uma consulta simultaneamente. Esse estudo permitir que o CoDIMS
seja utilizado por mais de um usurio simultaneamente, aumentando assim as possibilidade da
sua utilizao.
A partir dos estudos de operadores que seriam capazes de modificar os dados nas fontes e de
execuo de mais de uma consulta simultaneamente surge a necessidade de assegurar o
controle da concorrncia que existir dentro do CoDIMS. Esse problema poder resultar em
um estudo sobre esse assunto.
74

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

Classe que contm as arestas


Atributos da classe:
vertice, verice1: objetos da classe Vertice;
verticeLista: Objeto da classe VerticeLista;
Nome: string que guarda o nome da aresta
Mtodos da classe:

getVerticeList: Retorna a lista de vrtice;


getNome: Retorna o nome da aresta
Classe ArestaLista

77

Classe que contm todas as arestas do grafo.


Atributo da classe:
arestaLista: vetor.
Mtodos da classe:
addElement: Adiciona as aresta no vetor
getElement: Retorna a aresta da posio especificada.
getSize: Retorna a quantidade de aresta que existe no grafo.
getAresta: Dado o nome da aresta retorna a aresta
Classe Atributo

Contm os dados dos atributos.


Atributos da Classe:
execOperante: objeto da classe ExecutingOperands;
vertice: objeto da classe Vertice;
nome: string que guarda o nome do atributo;
tipo: inteiro que guarda o tipo do atibuto;

78

distCard: float que guarda o valor dos atributos distintos


Mtodos da classe:
getVertice: Retorna o vrtice; se o vrtice no foi inicializado ento retorna null
getType: Retorna o tipo do atributo
getName Retorna o nome do atributo
getDistCard: Retorna o valor das cardinalidade distintas
setDistCard: Salva a quantidade de valores distintos
getSize: Dado o tipo do atributo retorna o tamanho do mesmo.
setExecutingOperand: Salva o tipo de operao
getExecutingOperand: Retorna o tipo de operao
Classe AtributoLista

AtributoLista: Classe que contm a lista dos atributos.


Atributo da classe
trace: objeto da classe Trace que contm os mtodos de erro do otimizador.

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

Contm os atributos em uma lista hash.


Atributos da classe:
alh: lista hash
Mtodos da classe:
Put: Insere o vrtice com a lista de atributo na lista hash;
Get: Busca um atributo dado um vrtice
Classe AtributoNecessario
80

Verificar se o atributo listado realmente necessrio


Atributos da classe:
Predicado: objeto da classe Predicado;
atributoLista: objeto da classe AtributoLista;
Mtodos da classe:
getPredicado: Busca o predicado;
getAttributeList: Busca o atributo da lista de atributo.

Classe AtributoNecessarioLista

Salva os atributos em uma lista para verificar a necessidade deles.


Atributos da Classe:
atnl: vetor

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 com os custos das operaes fsicas.


Atributos da classe:
custoMaterializao: custo de materializao;
custoTransferencia: custo de transferncia da tupla;
custoLeitura: custo de leitura da tupla;
acessoMemoria: custo de se acessar a memria;
Mtodos da classe:
putParameters: Passa os custos de transferncia de materializao de conexo e de
leitura e de acesso a memria.
getNetworkCost: retorna o custo de transferncia
getScanCost: Retorna o custo de leitura
getMemoryCacheCost: Retorna o custo de acesso a memria.
82

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

Executa a lista de operaes.


Atributos da classe:
mat: atributo de materializao;
join: atributo da operao join;
restrict: atributo de restrio;
custo: atributo de custo;
send: atributo da operao send;
matCusto: atributo com o custo de materializao;
84

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

Classe abstrata que Executa as operaes


Classe ExecutaRelacaoLista

Classe com as lista das relaes que ser executada.


Atributo da classe
erl: vetor.

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

Executar a relao da lista de blackboard


Atributo da classe:
erlb: vetor.
Mtodos da classe:
createExecutingRelationList: Cria a execuo da relao da lista;
addElement: Adiciona um elemento no vetor;
getElement: busca um elemento dado uma posio;
destroyExecutingRelationList: destri a lista com os elementos;
getSize: Retorna o tamanho da lista;
getCurrentER:
verifyNeededAttributes: verifica a necessidade do atributo.

Classe ExecuteRelacao

87

Classe que executa as relaes calculando o custo


Atributos da Classe
atributoLista: Objeto da classe do AtributoLista;
card: cardinalidade do atributo
operacao: objeto da classe Operacao.
Mtodos da classe:
setSite: Salva o site da operao
getSite: Retorna o site
getName: Retorna o nome da relao
setName: Seta o nome da operao
addAttributeList: Adiciona os atributo na lista.
getSchema: Retorna a lista de atributo
setOperation: Salva a operao
getOperation: Retorna a operao
setCard: Salva a cardinalidade da relao
getCard: Retorna a cardinalidade
88

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

Classe que listas as operaes


Atributos da classe:
opndl: vetor
Mtodos da classe:
addElement: Adiciona um objeto no vetor
getElement: Busca um objeto
getSize: Retorna a quantidade de objetos no vetor
Classe Operacao

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 que contm o tamanho do tipo


Atributos da classe:
tInt: valor do tipo int;
tFloat: valor do tipo float;
tString: valor do tipo string;
tId: valor do tipo ID.
Mtodos da classe:
getSizeInt: Retorna o tamanho para o tipo int
getSizeFloat: Retorna o tamanho para o tipo float
getSizeString: Retorna o tamanho para o tipo string
getSizeId: Retorna o tamanho para o tipo ID
Classe Parametros

Classe de parmetros
Atributos da Classe:
mat: atributo de materializao;
transferencia: atributo de transferncia;
92

coneccao: atributo de conexo;


testeId: atributo de teste de id;
acessoMemoria: atributo de acesso a memria;
read: aributo de leitura;
numSite: atributo que guarda a quantidade de site;
testePredcado: atributo que testa um predicado;
testeConeccao: atributo que testa a conexo.
Mtodos da classe:
putParameters
getNumberSites: Retorna o nmero de site da consulta
getTestPred: Teste se um predicado
getTestId: Teste se um ID
getTestCon: testa a conexo
Classe Predicado

93

Classe com os dados do Predicado.


Atributo da classe:
binario: atributo que determina se um predicado do tipo binrio;
unario: atributo que determina se um predicado do tipo unario;
custo: atributo que guarda o custo do predicado;
nome: atributo que guarda o nome do predicado;
esquerda: objeto da classe Atributo;
seletividade: atributo que guarda o valor da seletividade;
direitaB: objeto da classe Atributo;
direitaU: objeto da classe Atributo;
aresta: objeto da classe Aresta;
vrtice: objeto da classe Vertice;
Mtodos da classe:
Used: Retorna o atributo que usado.
isUnary: Verifica se o predicado do tipo unrio.
getVertice: Retorna um vrtice
getCost: Retorna o custo
getEdge: Retorna a aresta
getAllVertices: Retorna todas as vrtices listas
getName: Retorna o nome do predicado
getSelectivity: Retorna a seletividade do predicado
Classe PredicadoBinario

Contm os dados do predicado binrio, herda da classe predicado.

94

Classe PredicadoEval

Classe com os dados do predicado eval


Atributo da classe:
predicado: objeto da classe Predicado;
vertice: objeto da classe Vertice.
Mtodos da classe:
getPredicate: Retorna o predicado eval;
getVertice: Retorna o vrtice;
getPlan: Retorna a execuo do plano;
getRestrictOper: Retornas as operaes que so restritas;
getJoinOper: Retorna a lista de operaes Join;
checkCardinality: Checa a cardinalidade do atributo.
Classe PredicadoEvalLista

95

Classe com os dados da lista de predicado eval


Atributos da classe:
pel: vetor;
execOperLista: objeto da classe ExecOperLista.
Mtodos da classe:
addElement: Adiciona um predicado na lista
getIndexOf: Retorna a posio de um especifico predicado
getElement: Busca um elemento
setElementAt: Insere um predicado em uma posio especifica
bindExecOperList: Associa a seqncia de operadores executveis na lista de
predicado.
getExecOperList
findPredicate: Procura por um predicado.
Classe PredicadoEvalListaLista

96

Classe com os dados do predicado eval lista lista


Atributos da classe
peel: vetor
Mtodos da classe:
addElement: Adiciona um predicado eval lista
getElement: Busca um elemento
getSize: Retorna a quantidade de predicado eval lista
Classe PredicadoUnario

Classe com os dados do predicado Unrio, herdaddo da classe predicado.


Classe PrinPerm

Classe para impresso dos planos.


Classe ProcessaProjeto

Classe para processa o projeto

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

Classe com os dados do n.


Atributos da classe:
Nome: guarda o nome do n;
Atributo: guarda o nome do atributo;
programStringEnumeracao: objeto da classe ProgramStringEnumeracao.
Mtodos da classe:
getName: Obtm o nome do programInfoNo

98

getElements: Retorna o elemento do ProgramaInfoEnumeracao, ou seja, uma tag


getNode: Retorna um no.
getIntermediateAttributeComponents: Retorna um elemento intermedirio do atributo
loadHashTable: Carrega a tabela hash
nextString: Dado o ndice retorna uma string
getFirstAttributeName: Retorna o nome do primeiro atributo
findName: Retorna o nome do no
parse: Verifica se o arquivo est no formato correto.
ProgramInfoNoEnumeracao

Classe com os dados do no enumerado


Mtodos da classe:
hasMoreElements: Verifica h elementos no vetor
nextElement: Procura pelo prximo ProgramInfoNo
findName: Dado o n retorna a string correspondente
Classe ProgramStringEnumeracao

Classe com os dados da string enumerada


99

Mtodos da classe:
hasMoreElements: Verifica se existe mais elemento no vetor
nextElement: Procura pelo prximo elemento.
Classe Projecao

Classe com os dados da projeo.


Atributos da classe:
custo: guarda o custo da projeo;
execOper: objeto da classe ExecOper.
Mtodos da classe:
setExecOper: Seta a execuo da operao
Classe Project

Classe com os dados do projeto.


Atributo da classe:
site: objeto da classe Site;
atributoLista: objeto da classe AtributoLista;

100

projectLista: objeto da classe ProjectLista;


transporte: Objeto da classe Transporte.
Mtodos da classe:
setTransport: Seta o transporte
getPlan: Obtm a lista de execuo de operaes
Classe ProjectLista

Classe com os dados da lista de projeo


Atributo da classe:
atributoLista: objeto da classe AtributoLista.
Mtodos da classe:
addAttributeList: Adiciona atributo na lista
getAttributeList: Busca o atributo da lista.
Classe Relacao

Classe com os dados da relao.


Atributos da classe:

101

numAtributo: nmero de atributo da relao;


atributoLista: objeto da classe AtributoLista.
Mtodos da classe:
addAttributeList: Adiciona um atributo na lista
getSchema: Obtm o esquema da relao.
getPlan: Obtm a lista de execuo das operaes
Classe RelacaoLista

Classe com os dados da lista de relao


Atributo da classe
rell: vetor.
Mtodos da classe:
addElement: Adiciona um elemento na lista
getIndexOf: Obtm o ndice da relao
getElement: Busca um elemento da lista dado o seu ndice
getSize: retorna a quantidade de relao da lista

Classe Scan

102

Classe que herda os mtodos da classe Operacao.


Classe Send

Classe com os dado do send


Atributo da classe:
transferenciaCusto: Custo de transferncia;
emitenteSite: objeto da classe Site e local de onde a consulta iniciada;
card: cardinalidade da tabela que est no site;
destinoSite: objeto da classe Site e onde ser enviado a resposta da consulta;
execOper: objeto da classe ExecOperacao;
tuplaSize: guarda o tamanho da tupla;
custo: guarda o custo da operao Send.
Mtodos da classe:
setExecOper: Seta o operao que ser executado
Classe Site

103

Classe com os dados do Site


Atributo da classe:
predicado: objeto da classe Predicado;
Mtodos da classe:
evaluatePredicate: Retorna o predicado do site
getId: Retorna o ID do site
Classe SiteLista

Classe com os dados da lista de site


Atributo da classe:
sitel: vetor.
Mtodos da classe:
addElement: Adiciona um site
getIndexOf: Dado um site retorna o ndice dele
getElement: Dado uma posio retorna o site
getSize: Retorna a quantidade de site
getSite: Verifica se existe um site em uma determinada posio.
Classe TempRel

104

Classe com os dados das relaes temporrias


Mtodos da classe:
containsVertice: Verifica se a vrtice existe em uma relao
Classe Trace

Classe com os passo de execuo


Atributos da classe:
className: Nome da classe que esta sendo executada;
dateFormat: Data;
displayTime: mostra a hora.
Mtodos da classe:
Output: Formata a data de execuo do otimizador
Padd: Formata a tabulao
Log; Cria o log
Error: retorna o erro
Classe Transporte

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

Classe com os dados da vertice


Atributos da classe:
nome: Nome do vrtice;
site: Objeto da classe Site;
arestaLista: Objeto da classe ArestaLista.
106

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

Classe com os dados da lista de vrtice


Mtodos da classe:
addElement: Adiciona um vrtice na lista;
getIndexOf: Dado um vrtice retorna o ndice;
getElement: dado uma posio retorna um vrtice;
getSize; Retorna o tamanho da lista vrtice;
addList: Adiciona a lista de vrtice;
getVertice: Busca o nome de um vrtice.

107

Você também pode gostar