NanoBase: Um Processador de Consultas para a Plataforma JME CLDC/MIDP

Histórico

O NanoBase foi um projeto iniciado em 2006 na cadeira de Técnicas de Implementação de Sistemas de Banco de Dados, sob orientação do Prof. José Maria Monteiro, na UNIFOR por Bruno Borges, David Rodrigues e eu. À época foi construído um um compilador SQL portando o JavaCC para a arquitetura Java ME e o processo de construção da árvore de consulta, utilizando algorítmos baseados em heurísticas.

Posteriormente, o Prof. Monteiro contou com ajuda de Vitor Vasconcelos, que na sua monografia estendeu o NanoBase, fazendo com que a árvore de consulta gerada realmente obtivesse resultados armazenados em registros no celular.

Em 2007, o NanoBase evoluiu com um novo projeto arquitetural, fornecendo uma visão relacional dos dados armazenados no dispositivo móvel, abstraindo a tecnologia utilizada para a persistência destes dados, que pode ser a API Record Management System (RMS) ou FileChannel (JSR 75). As consultas são realizadas utilizando SQL padrão, onde é possível utilizar expressões DDL e DML, além de utilizar diferentes estruturas de índices (Árvore B+, Hashing Dinâmico, Índice Bitmap e Árvores Kd) para acelerar o processo de recuperação de informações, além de permitir a realização de consultas “remotas” via SMS ou Bluetooth, através da extensão NanoTooth.

Esta evolução contou com a participação de Vitor Vasconcelos, Pedro Belmino e eu, sob orientação dos professores José Maria Monteiro e Ângelo Brayner, resultando na aceitação de um paper na Seção de Demos do SBBD 2007, além da apresentação juntamente com a Seção de Posters. No mesmo ano, o NanoBase também foi selecionado para o Mundo Unifor.

Em 2007, sob orientação do Prof. Júlio Guido Militão na cadeira de Computação Gráfica, construí o NanoZoom, uma interface que se utiliza de Zoom Contínuo para visualização e criação de consultas em cima do NanoBase, ainda em dispositivos móveis.

Visão Técnica

O motor de consultas realiza o acoplamento de todas as APIs internas do NanoBase. Sendo responsável pela análise sintática, análise semântica, parsing e otimização das expressões SQL. A gramática SQL desenvolvida consiste em uma
simplificação da linguagem PL/SQL, sendo ao mesmo tempo concisa (para minimizar o tempo de processamento) e expressiva (para permitir a utilização de expressões DDL, DML e hints).
O otimizador de consultas utiliza a técnica de otimização baseada em heurísticas, uma vez que a otimização baseada em custos se mostra inviável para dispositivos com pouco poder de processamento. Neste sentido, 18 heurísticas foram
cuidadosamente escolhidas, implementadas e ordenadas segundo sua importância O NanoBase possibilita ao desenvolvedor diversas opções de customização, a fim de adequar sua utilização aos requisitos da aplicação e aos recursos de hardware disponíveis no equipamento portátil: a persistência dos dados pode ser realizada através da API RMS ou FileChannel (JSR 75), pode-se escolher um subconjunto qualquer das 18 heurísticas de otimização (permitindo assim uma sintonia entre a qualidade do processo de otimização e o overhead gasto neste processo), diferentes estruturas de índices podem ser criadas e utilizadas através de hints, além disso um determinado índice pode ser persistido ou armazenado inteiramente em memória.

Desempenho

Toda esta camada de abstração pode diminuir a performance da sua aplicação. Mas com os índices que disponibilizamos, justificamos a utilização do NanoBase, como está mostrado na figura abaixo:

Análise de Desempenho do NanoBase

Na figura, é feita uma comparação entre uma consulta em RMS nativo e com NanoBase, ainda utilizando RMS como armazenamento, mas SQL como interface de consulta. A recuperação de 800 tuplas em RMS, utilizando uma busca seqüêncial (a única disponível), leva quase 3,5 segundos. Já com o NanoBase, utilizando um índice B+, a mesma consulta leva menos de 280 ms para ser realizada.

Downloads

Em breve estarei disponibilizando mais arquivos para download, enquanto o site oficial do NanoBase não está pronto.

Banner Mundo Unifor

Apresentação SBBD