A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

HSQL database engine Processamento e Optimização de Interrogações Vitor Silva.

Apresentações semelhantes


Apresentação em tema: "HSQL database engine Processamento e Optimização de Interrogações Vitor Silva."— Transcrição da apresentação:

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


Carregar ppt "HSQL database engine Processamento e Optimização de Interrogações Vitor Silva."

Apresentações semelhantes


Anúncios Google