Vantagens do MySQL5

O MySQL5 representa um enorme passo adiante em relação ao MySQL4, ao disponibilizar as prepared statements, com funcionalidades como functions e stored procedures. Passar a business logic para a Base de Dados (BD) foi um passo que demorou a acontecer e foi bastante reflectido. E que fez todo o sentido na ocasião presente.

A Casavalor é um projecto, em desenvolvimento, que coloca ao dispor dos utilizadores que procuram casa algoritmos avançados de pesquisa. Na base da bateria de cálculos está o FIT: uma medida que calcula a proximidade entre as preferências do Utilizador e as caracteristicas do imóvel em 22 parâmetros tão abrangentes como a localização, a qualidade da zona envolvente, proximidade de escolas, a eficiência energética do edifício, etc...

Sendo o número expectável de imóveis activos na BD na ordem das varias centenas e os Utilizadores na ordem dos milhares, desde o início pensámos num sistema de informação focado na eficiência e rapidez no tratamento dos dados em tempo real.

As prepared statements permitem transpor para a BD o processamento dos complexos cálculos a realizar, reduzindo ao mínimo o número de acessos à BD por cada tarefa executada. Tendo em atenção o número de parâmetros e registos a transitar entre as duas camadas da aplicação, poupamos recursos (CPU) e tempo aos Utilizadores, trazendo satisfação ao Cliente.

Dum ponto de vista mais técnico, é importante referir que o PHP e MySQL5 ainda deverão ser melhorados nalguns aspectos. Refiro apenas dois pontos, bastante práticos:

  1. A impossibilidade de receber dados directamente da chamada ao stored procedure (erro «PROCEDURE MyStoredProcedure can't return a result set in the given context»), a não ser usada a extensão MySQLi do PHP;
  2. Mais grave é o facto de não poder usar funções directamente numa query dentro do stored procedure. Primeiro é necessário usar a instrução PREPARE e depois fazer o EXECUTE da query assim construída. Com a estrutura rígida dos stored procedure, em que primeiro têm de aparecer as declarações das variáveis usadas - e o cursor com a respectiva query também tem de ser declarado - torna-se impossível ter antes feito o PREPARE duma query usando uma função!

Apesar destes aspectos que concerteza serão revistos em próximas versões, que prejudicam o desenvolvimento, as melhorias a nível de desempenho da aplicação fazem toda a diferença e tornam esta tecnologia habilitada para aplicações de alto nível de exigência em termos de complexidade e desempenho.