Os pesquisadores do Laboratório de Compiladores, do Departamento de Ciência da Computação da UFMG, tornaram pública a biblioteca SEPE, uma ferramenta para geração de funções hash. SEPE é um projeto financiado pela empresa Google Inc. e pela Fundação de Amparo à Pesquisa do Estado de Minas Gerais (FAPEMIG), que tem por objetivo gerar funções hash customizadas para determinados tipos de chaves. Segundo o professor do DCC e coordenador do projeto, Fernando Pereira, a finalidade desta cooperação entre a universidade, a agência de financiamento e a empresa é que o código criado possa de fato ser usado em ambiente de produção para implementar sistemas de banco de dados eficientes e fáceis de usar.
Conforme o professor, as funções hash transformam dados de qualquer tamanho em números inteiros de tamanho fixo. “Elas são fundamentais em sistemas de bancos de dados, pois permitem que registros possam ser encontrados muito rapidamente. Quase sempre as funções hash são gerais, isto é, funcionam sobre qualquer tipo de dados. Dados, nesse caso, são vistos como sequências de bytes que não possuem estrutura específica. Porém, várias chaves de funções hash são dados que seguem formatos específicos: CPFs, placas de carros, endereços IP, números de identidade, etc. O que a biblioteca SEPE faz é gerar funções hash sob medida para esses dados. O usuário fornece exemplos de chaves, e o compilador SEPE produz uma função especializada para aqueles dados”, explicou.
Experimentos mostram que as funções sintetizadas por SEPE podem ser até 50 vezes mais eficientes que funções hash muito populares, como aquelas usadas na biblioteca padrão de C++ e na biblioteca Abseil da empresa Google. “SEPE é um sistema de código aberto, distribuído via licença GPL 3.0. A biblioteca é fácil de usar, e pode ser acessada no link: https://github.com/lac-dcc/sepe”, contou Fernando.
De acordo com o coordenador, todos que tenham interesse podem baixar o código e testar as funções. “Caso alguém encontre bugs, esses podem ser reportados abrindo issues no próprio repositório. Temos todo o interesse em receber a opinião dos usuários. Assim, deixamos um convite: visitem o repositório, vejam o código, usem as funções e submetam feedback para os desenvolvedores!”, convidou.