Por qué elegir la búsqueda de texto completo de tu SGBD en lugar de un motor de búsqueda dedicado

En Sophilabs estamos acostumbrados a ver esta arquitectura: un SGBD relacional para almacenar datos, realizar consultas estructuradas y manipularlos, y un motor de búsqueda separado para las búsquedas. Sin embargo, muchos SGBD admiten búsquedas de texto completo. PostgreSQL, nuestro favorito, las admite al menos desde la versión 8.3, publicada en 2008.
Si tu proyecto ya usa un SGBD y no sabes si usar un motor de búsqueda dedicado, hoy compartiremos 3 razones para no hacerlo.
1. Simplicidad
Lo simple es mejor que lo complejo.
— El Zen de Python
Esta es una razón sencilla. ¿Por qué trabajar con dos sistemas diferentes cuando puedes usar uno solo? Probablemente hablamos de sistemas que entienden lenguajes distintos, tienen dependencias diferentes y, por supuesto, consumen recursos por separado. Cada dependencia que agregas al proyecto es una responsabilidad para tu equipo. Si puedes mantenerlo simple, ¡hazlo!
2. No tendrás que sincronizar tus datos entre sistemas
Solo hay dos cosas difíciles en informática: invalidar cachés y poner nombre a las cosas.
— Phil Karlton
Mantener más de una copia de tus datos es difícil. Salvo que estés en una situación especial en la que puedas conservar los datos del negocio únicamente en tu SGBD y los datos para búsquedas solo en tu motor de búsqueda, tendrás que mantener una copia de los datos que se pueden buscar en ambos sistemas. Esto abre todo un conjunto nuevo de problemas que podrías tener que resolver.
Usar tu SGBD para las búsquedas te permitirá buscar texto completo en la versión más reciente de los datos sin escribir código para mantener ambos sistemas sincronizados. No tendrás que preocuparte por buscar en versiones antiguas de documentos, registros huérfanos o tareas ETL complejas.
3. Más flexibilidad para consultas complejas
Casi todo lo que sabemos sobre una buena arquitectura de software tiene que ver con facilitar los cambios en el software.
— Mary Poppendieck
La última razón para usar tu SGBD en las búsquedas de texto completo quizá no resulte tan obvia al principio, pero será útil al implementar nuevas funcionalidades.
Ahora que todos tus datos están en un mismo lugar, tus consultas de texto completo y tus consultas relacionales habituales se escriben en el mismo lenguaje y se pueden combinar por completo. Si llega un nuevo requisito que implica buscar texto completo en una entidad y filtrar por atributos específicos de otra entidad relacionada, bastará con agregar unas pocas uniones a la consulta. Antes, esto podía significar replicar una tabla entera de la base de datos en el motor de búsqueda, redefinir el esquema de los datos del motor o trasladar datos específicos entre sistemas —como los id— en cada consulta.
Hay muy buenas razones para aprovechar tu SGBD en las búsquedas de texto completo en lugar de añadir un componente más. Esta lista no pretende ser exhaustiva, y seguramente podríamos crear otra con razones para “elegir un motor de búsqueda dedicado en lugar de tu SGBD”. Todo se reduce a conocer tus requisitos y tus herramientas, pero esperamos que nuestra experiencia te ayude a tomar la decisión adecuada. Si todavía tienes dudas, vuelve al punto #1.