domingo, 17 de agosto de 2008

Testanto o rucksack

Elephant é uma biblioteca para persistência de dados em Common Lisp construída em cima do BerkeleyDB. A biblioteca tem uma boa documentação e uma comunidade de usuários e mantenedores ativa, porém, eu não consigo fazer ela funcionar no Linux 64 bits (No Mac 32 bits funciona). Já escrevi para a lista deles e nenhuma resposta. É um bug na invocação da função em C db-env-create da BerkeleyDB. Tentei eu mesmo debugar o código do elephant, mas não foi para frente.

Resolvi uma nova abordagem, hoje eu testei a biblioteca Rucksack. É um código menos maduro que o Elephant e aparentemente só um desenvolvedor o mantém, no entanto, o Rucksack não depende de nenhum código em C, é uma implementação de persistência totalmente feita em Common Lisp, inclusive com indexação por B-Tree. O desempenho me pareceu bom, consegui inserir mais de 26 mil registros em aproximadamente 140 segundos no MacBook.

É muito bonito fazer tudo isso sem sair do Lisp. Essa biblioteca parece ter um grande potencial, por exemplo, uma linguagem de queries OOP ou baseada em Prolog iria ser muito legal (uma espécie de AllegroCache Free software).

Um comentário:

JP disse...

Legal ver código eficiente em Common Lisp! Uma vez testei as árvores vermelho-preto do CL-Containers, e era tão terrivelmente lento que não valia a pena usar. Ainda não tinha olhado mecanismos de persistência... Bom saber que existe esse