1 / 14

HSQL database engine

HSQL database engine. Processamento e Optimização de Interrogações Vitor Silva. 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

sammy
Download Presentation

HSQL database engine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  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/ • Código Fonte

  14. Obrigado pela atenção

More Related