Artigos

Por que escolher a busca de texto completo do seu SGBD em vez de um mecanismo de busca dedicado

Na Sophilabs, estamos acostumados a ver esta arquitetura: um SGBD relacional para armazenar dados, fazer consultas estruturadas e manipulá-los, e um mecanismo de busca separado para as buscas. No entanto, muitos SGBDs oferecem busca de texto completo. O PostgreSQL, nosso favorito, oferece esse recurso pelo menos desde a versão 8.3, lançada em 2008.

Se seu projeto já usa um SGBD e você está em dúvida sobre usar um mecanismo de busca dedicado, hoje compartilharemos 3 motivos para não fazer isso.

1. Simplicidade

Simples é melhor que complexo.
— O Zen do Python

Essa é uma razão simples. Por que trabalhar com dois sistemas diferentes quando você pode usar apenas um? Provavelmente estamos falando de sistemas que entendem linguagens diferentes, têm dependências diferentes e, naturalmente, consomem recursos separadamente. Cada dependência que você adiciona ao projeto é uma responsabilidade para sua equipe. Se puder manter a simplicidade, faça isso!

2. Você não precisará sincronizar seus dados entre sistemas

Só há duas coisas difíceis em ciência da computação: invalidar caches e dar nomes às coisas.
— Phil Karlton

Manter mais de uma cópia dos seus dados é difícil. A menos que você esteja em uma situação especial na qual possa manter os dados do negócio apenas no SGBD e os dados para busca apenas no mecanismo de busca, terá de manter uma cópia dos dados pesquisáveis nos dois sistemas. Isso abre todo um novo conjunto de problemas que você talvez precise resolver.

Usar seu SGBD para as buscas permitirá pesquisar texto completo na versão mais recente dos dados sem escrever código para manter os dois sistemas sincronizados. Você não precisará se preocupar com buscas em versões antigas de documentos, registros órfãos ou tarefas ETL complexas.

3. Mais flexibilidade para consultas complexas

Quase tudo o que sabemos sobre uma boa arquitetura de software tem a ver com facilitar mudanças no software.
— Mary Poppendieck

O último motivo para usar seu SGBD na busca de texto completo talvez não seja tão óbvio de início, mas será útil ao implementar novas funcionalidades.

Agora que todos os seus dados estão em um só lugar, suas consultas de texto completo e suas consultas relacionais habituais são escritas na mesma linguagem e podem ser combinadas por completo. Se surgir um novo requisito que envolva uma busca de texto completo em uma entidade e filtros por atributos específicos de outra entidade relacionada, bastará acrescentar algumas junções à consulta. Antes, isso poderia significar replicar uma tabela inteira do banco de dados no mecanismo de busca, redefinir o esquema de dados do mecanismo ou mover dados específicos entre os sistemas —como os id— em cada consulta.


Há bons motivos para aproveitar seu SGBD na busca de texto completo em vez de acrescentar mais um componente. Esta lista não pretende ser completa, e certamente poderíamos criar outra com razões para “escolher um mecanismo de busca dedicado em vez do seu SGBD”. Tudo depende de conhecer seus requisitos e suas ferramentas, mas esperamos que nossa experiência ajude você a tomar a decisão adequada. Se ainda estiver em dúvida, volte ao ponto #1.

“Por que escolher a busca de texto completo do seu SGBD em vez de um mecanismo de busca dedicado” por Javier Ayres está sob a licença CC BY SA. Os exemplos de código-fonte estão sob a licença MIT.

Foto de João Silas.

Classificado em Pesquisa e aprendizado.

Leituras relacionadas