Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRaíssa Martinho de Caminha Alterado mais de 9 anos atrás
1
HSQL database engine Processamento e Optimização de Interrogações Vitor Silva
2
O HSQL Grupo de desenvolvimento formado em 2001 Continuação do Hypersonic SQL Project 6 novas versões desde 2001 Linguagem JAVA Driver JDBC ANSI-92 SQL + SQL 99 + SQL 2003 Tabelas em Memória Principal ou Secundária Motor de Base de Dados de pequena dimensão, compacto Capacidade: 8 GB de Dados
3
Software que recorre ao HSQL Open Source Software Office and Productivity OpenOffice 2.0 Application Servers JBossJBoss, JFox, JonasJFoxJonas Object Relational Mapping Software Hibernate ObJectRelationalBridge - OJB Mr. Persister ORM Database Clustering Software C-JDBC Commercial Software Mathematics and Science Mathematica Issue Tracking Jira TrackStudio
4
Processamento de Interrogações - Validação O processamento de interrogações inicia-se ao invocar o método execute Consoante o tipo de comando fornecido é seleccionado o método a invocar. A execução de um comando sql começa por validar a interrogação - recompileStatement A validação começa por verificar qual o tipo de interrogação (Select, Insert, Update, Delete ou Call) - sqlCompileStatement src\org\hsqldb\Session.java
5
Processamento de Interrogações - Preparação É efectuado o parsing que identificará o esquema da interrogação – compileSelectStatement, compileUpdateStatement, etc Uma vez validada a interrogação é iniciada a execução propriamente dita - executeImpl src\org\hsqldb\Parser.java src\org\hsqldb\CompiledStatement.java src\org\hsqldb\CompiledStatementExecutor.java
6
Processamento de Interrogações - Resultados Numa interrogação de select começa-se pela análise dos atributos envolvidos e colocam-se todos os tuplos que obedeçam às condições num conjunto de resultados possíveis – getResult O algoritmo utilizado para processar Selects é baseado no algoritmo de nested loops join adaptado a objectos O cálculo de agregados é apenas efectuado após a obtenção dos resultados Por último poderá ser necessário remover duplicados ou, em caso de união, reordenar os resultados src\org\hsqldb\Select.java
7
Resultados - Estrutura de Dados Os resultados do processamento de interrogações são guardados em HashSet, em que cada Set é um array que representa uma linha de resultados O objecto Result incorpora os resultados e a informação adicional sobre colunas, tipos dos atributos (metadados), etc. src\org\hsqldb\Result.java src\org\hsqldb\GroupedResult.java
8
Select – Alguns Pormenores O algoritmo de execução de Select faz distinção entre um Select simples ou um Select envolvido numa union É utilizada a metodologia de programação de objectos para obter os valores que obedecem às condições do Select (método get de acesso às estruturas) HSQL permite funções agregadas aninhadas (count(id)+2, max(id)-min(id)) src\org\hsqldb\Select.java src\org\hsqldb\GroupedResult.java src\org\hsqldb\TableFilter.java
9
Optimização Uma vez que o processamento das interrogações segue algoritmos estáticos as optimizações são feitas ao nível desses algoritmos e têm a ver com a depuração de código Neste momento a optimização é feita mais ao nível das aplicações que interagem com o HSQL e é nestas que se devem ter alguns cuidados para obter o melhor desempenho, como garantir que a outer relation seja a de menor dimensão
10
Optimização de Interrogações O HSQL não utiliza índices para acelerar a ordenação dos resultados, mas utiliza-os para acelerar o tempo de processamento das interrogações A utilização dos índices permite localizar mais rapidamente o primeiro tuplo que obedece a uma dada condição, reduzindo o número de linhas a processar
11
Optimização de Interrogações Existe reescrita de condições de modo a que a primeira condição a ser processada seja uma condição com atributos índexados src\org\hsqldb\TableFilter.java
12
Futuras Optimizações Uma optimização que está a procurar ser implementada diz respeito ao melhor aproveitamento dos índices para o processamento das interrogações, mais concretamente identificar, num select com múltiplas condições com atributos indexados, procurar identificar qual terá melhor caminho de acesso Melhoria do processo de parsing de modo a permitir uma melhor análise e reescrita de interrogações (considerar outros parâmetros para além dos índices)
13
Bibliografia Portal HSQLdb - http://hsqldb.org/http://hsqldb.org/ Código Fonte
14
Obrigado pela atenção
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.