Douglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador.

Slides:



Advertisements
Apresentações semelhantes
Álgebra Relacional Marcelo Mendes Manaus
Advertisements

Banco de Dados Prof. Antonio.
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
Gerenciamento de Banco de Dados
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Comandos de SQL Excel VBA II.
Otimização de Consultas em SQL Planos de Execução
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Recuperação de Dados Banco de Dados Carina Farias
UCSal – Bacharelado em Informática
SISTEMA PARA CONTROLE DE ESTOQUE DE BEBIDAS UNIVERSIDADE REGIONAL DE BLUMENAU CURSO DE SISTEMAS DE INFORMAÇÃO Fernando Schweder Volkmann Prof. Wilson Pedro.
Canal seguro de comunicação VoIP na plataforma Android André Luiz Lehmann.
Mecanismo de busca semântica de áudio Anderson Dorow Orientador: Aurélio Faustino Hoppe.
Gerador de grade de horários com Algoritmos Genéticos Prof. Roberto Heinzle, Doutor - Orientador Rodrigo Correia.
SyncEasy – Aplicativo para sincronização de arquivos entre dispositivos móveis e computadores utilizando metadados Acadêmico: Bernardo Marquardt Müller.
Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Isabel Cafezeiro
SISTEMA DE CONTROLE DE ACESSO, FREQÜÊNCIA E GESTÃO DE PERMISSÃO PARA AMBIENTE ACADÊMICO LEONARDO DENARDI ORIENTADOR: JACQUES ROBERT HECKMANN.
Compiladores - Introdução. O que é um Compilador? “Um compilador é um programa que lê um programa escrito em uma linguagem (linguagem fonte) e a traduz.
Categorias Computacionais N Um modelo categorial para bancos de dados Vítor De Araújo
Gerador de aplicativos Oracle PL/SQL WEB baseado na estrutura das tabelas do banco de dados Oracle Wagner da Silva Orientando Prof. Alexander Roberto Valdameri.
Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro
07/06/ João Paulo Pizani Flor ( Síntese comportamental de componentes de um Sistema Operacional em hardware João Paulo Pizani.
COMPONENTE DE GERAÇÃO DE BOLETOS BANCÁRIOS EM DELPHI Aluno: Jonas Ricardo Viel Prof. Adilson Vahldick - Orientador.
Protótipo de Software de Reconhecimento de Voz Para Navegação em Jogos, Utilizando Rede Neural Artificial Orientando: Derlei Brancher Orientador: Prof.
Protótipo de um ORM para a plataforma.NET Orientando: Thiago Boufleuhr Orientador: Adilson Vahldick.
SISTEMA PARA CONTROLE DA FROTA DE VEÍCULOS Ricardo Sorroche – Orientando Prof. Wilson Pedro Carli - Orientador.
SISTEMA PARA AUTOMATIZAÇÃO RESIDENCIAL CONTROLADO POR COMANDO DE VOZ Ronaldo Rother Prof. Francisco Adell Péricas, Orientador.
Linguagens de Programação Conceitos e Técnicas Expressões Prof. Isabel Cafezeiro
Distribuição otimizada de polígonos em um plano bidimensional Acadêmica: Denise Brandt Orientador: Dalton Solano dos Reis.
Ambiente Virtual de Avaliações Utilizando Certificados Digitais Fernando Gevard – Acadêmico Paulo Fernando da Silva - Orientador.
PLUGINS PARA TESTES AUTOMATIZADOS DE CONFORMIDADE COM A NORMA ISO/IEC Dionei Herkenhoff Orientador: Paulo Fernando da Silva.
PROTÓTIPO DE SISTEMA MÓVEL NA PLATAFORMA ANDROID PARA COMPARTILHAMENTO DE ARQUIVOS E MENSAGENS ENTRE DISPOSITIVOS BASEADO EM PROXIMIDADE GEOGRÁFICA Aluno:
5 UNIVERSIDADE REGIONAL DE BLUMENAU CURSO DE SISTEMAS DE INFORMAÇÃO SISTEMA DE FORÇA DE VENDAS. Gustav Dallmann Júnior Orientador: Prof. Francisco Adell.
Ferramenta Web para testes de fórmulas matemáticas Kauê da Silva Vieira Orientador: Aurélio Faustino Hoppe.
UM FRAMEWORK PARA ALGORITMOS BASEADOS NA TEORIA DOS GRAFOS Acadêmico: Maicon Rafael Zatelli Orientador: Dr. Paulo C é sar Rodacki Gomes.
Aula 3 - Estruturas de Repetição
SISTEMA DE GESTÃO E DIVULGAÇÃO DE IMÓVEIS
Álgebra Relacional Vania Bogorny.
Algoritmo e Estrutura de Dados I
UNIVERSIDADE REGIONAL DE BLUMENAU
Construção de Compiladores
Teoria da Computação Prof. Msc. Ricardo Loiola
UNIVERSIDADE REGIONAL DE BLUMENAU
Trabalho de Conclusão de Curso
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Estruturas de Decisão.
Orientanda: Ana Paula Joslin de Oliveira
Jhoni Conzatti – Acadêmico Mauro Marcelo Mattos - Orientador
GERAÇÃO DE CÓDIGO PARA A MÁQUINA VIRTUAL DE RÓTULOS
UNIVERSIDADE REGIONAL DE BLUMENAU
SISTEMA PARA CONTROLE DA PRODUÇÃO DE AGRICULTURA DE GRÃOS
Estrutura de dados Pilhas e filas
UNIVERSIDADE DE SÃO PAULO
Sistema para aprendizado de Álgebra Relacional e Linguagem SQL
Algoritmos e Técnicas CEFET/RN.
PROGRAMAÇÃO I UNIDADE 3.
COMPILADORES 06 Prof. Marcos.

BANCO DE DADOS Araújo Lima Ago / 2017 Araújo.
UNIVERSIDADE REGIONAL DE BLUMENAU
Traduções Dirigidas por Sintaxe
Professora Roberta Bonamichi Guidi Garcia
Linguagem de Programação I
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
CCT0672- Introdução a Programação Aula 01: Apresentação da ementa.
Representação de Algoritmos
Análise Sintática (parte 1) “Pois o salário do pecado é a morte, mas o dom gratuito de Deus é a vida eterna em Cristo Jesus, nosso Senhor.” (Romanos 6:23)
Introdução ao Modelo Relacional Capítulo 2 - Database System Concepts – 6ª. Ed - Silberschatz et al Curso: Ciência da Computação Disciplina: Banco de Dados.
Aula 2 Professores: Conteúdo: Dante Corbucci Filho
Transcrição da apresentação:

Douglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador

 Introdução  Objetivos  Fundamentação teórica  Desenvolvimento da ferramenta  Operacionalidade  Resultados e discussão  Conclusões  Versões futuras

 Aplicações  Consultas de dados  Banco de dados  Linguagem de consulta  Vetores e Collections  laços for e if

 Disponibilizar uma linguagem de consulta para coleções (Java Collections) e vetores  Implementar as operações básicas da álgebra relacional  Disponibilizar o uso de funções de agregação

FUNDAMENTAÇÃO TEÓRICA

 Programa que interpreta um outro programa escrito em certa linguagem

 Léxico  Reconhecimento dos tokens  Token  Palavra / Símbolo do texto  Lista de tokens  Sintático  Verificação da lista de tokens  Semântico  Verificação de tipos  Verificar declaração de variáveis  Execução de ações (interpretadores)

 Representação formal de consultas  Cláusula de consulta  Operadores  Seleção / Restrição  Projeção  Produto cartesiano  Junção  Agrupamento  Ordenação  Combinação de operadores  Árvore de consulta  Folhas  Relações  Nós internos  Operadores algébricos

 LambdaJ  Coollection

DESENVOLVIMENTO DA FERRAMENTA

 Permitir a realização de consultas em coleções ou vetores  Permitir ao desenvolvedor informar uma sequência de comandos de consulta  Interpretar a sequência de comandos informada pelo usuário  Exibir mensagens de erros caso comandos inválidos sejam encontrados  Retornar uma coleção com o resultado da consulta efetuada  Ter uma linguagem de consulta similar ao SQL  Ser desenvolvido em Java

 select  informar as projeção  from  informar as relações / coleções  where  informar as restrições  group by  informar o agrupamento  order by  informar a ordenação  range  informar um intervalo de registros

 JavaCC  Definição dos tokens  Regras gramaticais  Notação EBNF  Especificação com código puramente Java  Principais classes  ParserTokenManager  Reconhecimento dos tokens  Parser  Analisador sintático  TokenMgrError  Erros léxicos  ParseException  Erros sintáticos  Objetivo  Gerar listas de operadores da álgebra relacional

 Duas etapas principais  Plano de execução ▪ Etapa muito importante ▪ Montar / Otimizar árvore de consulta  Execução da consulta  Verificações semânticas  Existência das relações declaradas  Existência dos atributos nas relações  Compatibilidade de tipos

 Inserir projeções  Executa por último  Precisa da coleção final

 Inserir projeções  Inserir ordenação  Antes do agrupamento  Agrupamento diminui coleção

 Inserir projeções  Inserir ordenação  Inserir agrupamento  Calcula funções de agregação

 Inserir projeções  Inserir ordenação  Inserir agrupamento  Inserir restrições  Restrições do where  Ordem que foram informadas

 Inserir projeções  Inserir ordenação  Inserir agrupamento  Inserir restrições  Descer restrições simples  Posicionar mais abaixo  Executar primeiro  Diminuir coleção para junção

 Inserir projeções  Inserir ordenação  Inserir agrupamento  Inserir restrições  Descer restrições simples  Inserir relações  Folhas  Formar produto cartesiano

 Inserir projeções  Inserir ordenação  Inserir agrupamento  Inserir restrições  Descer restrições simples  Inserir relações  Ordenar restrições simples  Ligar com suas coleções  Diminuir produto cartesiano

 Inserir projeções  Inserir ordenação  Inserir agrupamento  Inserir restrições  Descer restrições simples  Inserir relações  Ordenar restrições simples  Ordenar junções  Eliminar produto cartesiano

select artista.nmArtista, count(album.nrAlbum) from album, artista where album.cdArtista = artista.cdArtista and artista.nmArtista = ‘metallica’ group by artista.cdArtista order by artista.nmArtista

 Restrições com operador de disjunção OR  Cada operador OR  Subárvore na raiz  Resolução  Unir das subárvores da raíz  Restrições entre parênteses  Cada restrição  Nova árvore de consulta  Resolução  Resolver árvore de consulta

 Projeção  Linear  Ordenação  Comparator  Agrupamento  Baseado em hash  Restrições  Busca linear  Junção de loop aninhado  Junção hash

 Algoritmo linear  Para cada registro  Projetar atributos

 Baseado em hash  Agrupamento por igualdade de hashes  Registros de hash igual são agrupados

 Busca linear  Para cada registro  Verifica se atende condição

 Laços for aninhados  Força bruta  Custo alto  Produto cartesiano  R1 X R2

 Cálculo do hash dos atributos de junção  Junção por igualdade de hashes  Registros com mesmo hash fazem junção

 Erros verificados  Erros léxicos e sintáticos  Classes do JavaCC  Erros semânticos ▪ Não existência de uma coleção ▪ Não implementação de Collection ou Object[] ▪ Redeclaração de uma relação ▪ Falta de nome das relações nos atributos ▪ Não declaração do GROUP BY caso existam funções de agregação

OPERACIONALIDADE

RESULTADOS E DISCUSSÃO

 Consulta utilizando laço for  Estática  Interpretador  Consulta String  Dinâmica

QueryTempo (ms) Interpretadorfrom artistas where nmArtista = ‘metallica’31 Coollectionfrom(artistas).where("getNmArtista", eq("Metallica")).all();24 LambdaJ filter(new Predicate () public boolean apply(Artista a) { return a.getNmArtista().equalsIgnoreCase("Metallica"); } }, artistas); 26 LINQ from art in artistas where art.nmArtista == "metallica" select art 2

Filtragem por atributos Junção/ Produto cartesiano Agrupamento/ Agregação SubconsultasOrdenação InterpretadorXXXX CoollectionXXX LambdaJXXXX LINQXXXXX

CONCLUSÕES

 Recuperar dados em coleções usando linguagem de consulta  Consulta com String  Mais dinâmicas  Mais fácil para fazer junções e agrupamentos

VERSÕES FUTURAS

 Otimizar as projeções  Dar suporte ao uso de expressões aritméticas com parênteses e nomes de atributos  Implementar a cláusula having  Permitir aninhar n atributos nas cláusulas da consulta (ex: pessoa.filho.idade)  Disponibilizar funções matemáticas  Disponibilizar funções para tratamento de Strings  Permitir subconsultas

DEMONSTRAÇÃO DA FERRAMENTA