Este artigo foi escrito com o objetivo de exibir ao usuário, administrador de bancos de dados MySQL, o novo suporte que o InnoDB apresenta ao recurso denominado FullText Search, que é basicamente focado na busca de determinados termos dentro de grandes textos, com buscas naturais, booleanas e outras. Tal funcionalidade e suporte poderá ser testada ao longo do artigo caso o leitor tenho instalado em sua máquina de testes o MySQL 5.6, disponível em http://labs.mysql.com. A discussão deste tema é interessante para o usuário ou administrador que deseja disponibilizar os recursos de busca textual baseada em termos os quais serão utilizados para a busca de registros em tabelas de um banco de dados.
Em que situação o tema é útil
Imagine que você tenha uma base de dados que armazena teses de doutorado ou mesmo dissertações de mestrado e precisa efetuar uma busca pelo termo “InnoDB”. Caso o texto de uma daquelas dissertações ou teses contiver o termo procurado, o registro será retornado, como mostraremos neste artigo.
Resumo DevMan
Este artigo pretende mostrar aos leitores como o suporte aos recursos de busca textual pelo InnoDB Plugin poderá fazer com que grandes sistemas até então presos ao Storage Engine MyISAM poderão conseguir mais autonomia, utilizando os recursos necessários, agora com o motor transacional com o InnoDB, este que passou a suportar o FullText Search, e também melhorou aquelas features que já eram muito utilizadas e trouxe o suporte à buscas por relevância.
Participante ativo do twitter, ou melhor, twiteiro que sou, pude ver muita gente enviando seus tweets sobre recursos que já estavam na lista interna de features a serem entregues pelo pessoal do desenvolvimento do MySQL. Dentre estes vários recursos, vários deles já podem ser testados, mas não mais que isso, pois os binários que se encontram no “Labs” do mysql.com ainda não foram largamente homologados e a Oracle mesmo alerta quanto a não colocar o MySQL 5.6 em produção. Fato é que, o produto está cada vez mais maduro, passando a atender sistemas altamente robustos e que necessitam de desempenho e segurança para ambiente web, como é o caso dos maiores cases da internet e também de sites como Facebook, Twitter, YouTube, Google, Yahoo! dentre outros.
Os recursos mais comentados na internet são:
• as melhorias no particionamento de tabelas, podendo com o MySQL 5.6 selecionar explicitamente no meio do SELECT qual partição será necessário recuperar dados;
• as melhorias relacionadas com o InnoDB, que na nova versão, a 1.2.2 do InnoDB Plugin permite melhor organização para consultas que utilizam ORDER BY e LIMIT, como no caso de consultas para sistemas que necessitam paginar dados;
• melhorias relacionadas com os recursos “Index Condition Pushdown”, chamado de ICP, que executa a cláusula WHERE de uma consulta baseada em índices já no nível dos Storage Engines, possibilitando que menos dados sejam carregados ou trafegados do disco para a primeira camada dos “internals” do MySQL e muitos outros novos recursos que comentaremos ao longo do tempo.
Também em voga, neste artigo falaremos então do tão festejado e motivante recurso de FullText Search, a busca textual do MySQL, que antes funcionava somente em tabelas controladas pelo Storage Engine (ver nota DevMan 1) MyISAM e que agora também é suportado pelo InnoDB. Grande parte do que existia para o MyISAM em relação ao recurso FullText Search passou a ser suportado pelo InnoDB, aproveitando o suporte deste Storage Engine ao modelo ACID, ou seja, FullText Search + Transações. Passou então a ser completo, o que torna o MySQL ainda mais valorizado, já que o InnoDB também é o Storage Engine padrão desde a versão 5.5. Para que você possa testar os conceitos que discutiremos nesse artigo, acesse o “labs.mysql.com”, selecione o binário mysql-5.6-innodb-fts e finalmente, selecione o pacote que condiz com a sua plataforma e rode o MySQL.
Para este artigo a plataforma utilizada foi Linux, uma máquina virtual Xen com 512MB de RAM, 8GB de disco, rodando a versão 6.0 da distribuição Linux CentOS, atualizada e com o MySQL 5.6. Caso haja dúvidas para colocar o MySQL 5.6 para rodar, me adicione no twitter @wagnerbianchijr.
Muitas são as dúvidas de quem vem de outro sistema
de gerenciamento de bancos de dados para trabalhar ou mesmo, estudar o MySQL.
Dúvidas relacionadas com os Storage Engines ou motores de armazenamento. Então,
o que são os Storage Engine? Os Storage Engines são módulos desenvolvidos
individualmente que são “plugados” na segunda camada do servidor de bancos de dados
MySQL e que oferecem ao ambiente determinadas características de armazenamento
dos dados de um banco de dados. Em uma busca na internet, você encontrará alguns
artigos tratando de “tabelas que são controladas” por Storage Engine esse ou
aquele. No MySQL, quando você cria uma tabela pertencente a um banco de dados,
você omite ou aponta com auxílio da cláusula ENGINE qual será o Storage Engine
que controlará os dados de uma tabela. Por exemplo, se você cria uma tabela
controlada pelo Storage Engine InnoDB, em versões do MySQL acima da 5.5, não é
mais necessário apontar o motor, já que o InnoDB é o motor padrão. Mas em
outras versões, você terá um trabalho parecido com o apresentado abaixo: