23
AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Embed Size (px)

Citation preview

Page 1: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

AJAX – Algoritmo de Junção Adaptativo para

eXecução em ambientes móveis

Monografia

Eriko Werbet

Unifor-CNPq

Page 2: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Motivação

Computação Móvel Bancos de Dados + Mobilidade Mobilidade + Restrições = Atraso Técnicas Convencionais são Ineficientes Processamento de Consultas Adaptativo Definição de Operadores Adaptativos

Page 3: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Objetivos

Implementar um algoritmo de junção capaz de executar operações de junção de forma eficiente, num ambiente com suporte à mobilidade.

Este algoritmo deve adaptar-se dinamicamente às restrições do ambiente.

Page 4: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Mobilidade e Bancos de Dados

Ambiente de Computação Móvel

Redes ad hoc Mobilidade Física e

Lógica (Agentes) Desafios Soluções

Page 5: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Bancos de Dados Móveis

Autônomos Heterogêneos Distribuídos

Page 6: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

A Arquitetura AMDB

Acesso a Bancos de Dados Móveis

Comunidade de Bancos de Dados Móveis

Interoperabilidade Agentes Móveis x

Estáticos

Page 7: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

O Agente Executor

Acesso aos Membros da CBDM Consultas Coordenador do Protocolo 2PC Operações de Junção

Page 8: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

O Algoritmo AJAX

Adaptive Join Algorithm for mobile environments eXecution

Simetria Pipelining Buckets Dinâmicos Comparação

Progressiva Prevenção de Estouro

de Memória

Page 9: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Simetria

Tratar as fontes de dados de maneira independente, por meio de multithreading.

Evitar o bloqueio ou atraso na execução da junção.

Page 10: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Buckets Dinâmicos

Comparação de buckets com o mesmo “endereço” hash, em tabelas opostas.

Buckets com tamanho variável implicam em mais flexibilidade, pois não precisamos tratar bucket overflow.

Buckets podem acumular mais tuplas antes de iniciar o probing.Melhor adaptação à Comparação Progressiva.

Baixo overhead de manipulação.

Page 11: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Pipelining

Suprimento de tuplas para operadores mais altos na hierarquia da consulta.

Recebimento de tuplas de operadores mais baixos.

Padrão recursivo implica em pseudo-paralelismo na execução da consulta, ou seja, diminuição no tempo de resposta.

Page 12: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Comparação Progressiva

Comparação cíclica dos buckets.

Cada par de buckets é comparado e somente o conteúdo numa iteração “i” é considerado.Tuplas subseqüentes serão comparadas numa iteração “i + 1”.

Comparação e Hashing contínuo das tuplas.

Page 13: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Last Probe Remembrance

Cada tupla do bucket Alfa “lembra” a última tupla do bucket Beta (bucket oposto) que foi comparada com ela.

Evita Duplicatas. Evita Comparações

Desnecessárias.

Page 14: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Prevenção de Estouro de Memória

A granularidade observada passa do nível de bucket para o nível do sistema computacional.

Monitoramento da memória do sistema. Escolha de um ou vários pares de buckets

para descarregamento em disco.

Page 15: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Fases de Execução

Primeira Fase Fase de execução

normal do AJAX

Segunda Fase Executada quando

ocorre EOF ou quando as fontes estão em retardo.

O recebimento continua, mas a comparação passa a usar buckets em disco.

Page 16: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

AJAX em Pseudocódigo1 thread de monitoramento EPSILON é iniciada em background;2 thread de acesso à fonte de dados ALFA é iniciada; //simetria3 se (operador depende de resultado parcial inferior) então 4 fonte BETA passa a ser o resultado parcial do operador inferior;5 thread de acesso à fonte de dados BETA é iniciada;6 iniciar geração da tabela hash para ambas as fontes; //dynamic bucket hashing 7 enquanto(não terminar o processamento) faça { //progressive probing8 pegar próximo bucketAlfa; 9 localizar próximo bucketBeta pelo hashcode do bucketAlfa; 10 se (houver tuplas novas no bucketAlfa ou no bucketBeta) então { 11 se (a.UltimoProbe < b.Indice) então { //”a” é tupla de Alfa e “b” de Beta 12 adicionar o par (a, b) no resultado;13 atualizar a.UltimoProbe; //last probe remembrance14 se (existir operador superior na consulta) então 15 enviar tuplas parciais para o operador superior; //pipelining 16 }17 se (EPSILON detectar a iminência de memory overflow) então { //overflow18 escolher par de buckets que ocupa maior espaço de memória;

19 descarregar buckets escolhidos em disco;20 }21 se (as fontes atrasarem e houver buckets em disco) então { //segunda fase22 comparar tuplas em disco [Alfa] com tuplas em disco [Beta];23 comparar tuplas em disco [Alfa] com tuplas em memória [Beta];24 comparar tuplas em memória [Alfa] com tuplas em disco [Beta];25 comparar tuplas em memória [Alfa] com tuplas em memória [Beta];26 }27 }28 }

Page 17: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Implementação do Protótipo

Linguagem Java Threads simples Função hash embutida etc AMDB e Aglets

Page 18: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Estruturas de Dados

LinkedList Tupla Bucket TabelaHash

Page 19: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Classes de Suporte

Ajax FonteDados Timer TimerTask

Page 20: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Detalhes de Implementação

Desafios Multithreading Sincronização Persistência HashTable de Java

A Tabela Hash do AJAX Encadeada Buckets Dinâmicos Deque (Deck)

Page 21: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Conclusão

AJAX garante: Produção incremental de tuplas-resultado Continuidade da execução da consulta

mesmo com fontes bloqueadas Reação proativa em caso de estouro de

memória

Page 22: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Trabalhos Futuros

Testes comparativos Aperfeiçoamento da Tabela Hash do AJAX Definição de uma nova função hash Pesquisa de estruturas de dados mais

adaptadas ao contexto do AJAX

Page 23: AJAX – Algoritmo de Junção Adaptativo para eXecução em ambientes móveis Monografia Eriko Werbet Unifor-CNPq

Agradecimentos

CNPq Angelo Brayner, Dr-Ing. José de Aguiar, M.Sc. A todos que tornaram este projeto possível!