Hola, estoy investigando antes de implementar la función de búsqueda en mi servicio. Actualmente estoy usando PostgreSQL como mi almacenamiento principal. Definitivamente podría usar la búsqueda de texto completo incorporada de PostgreSQL, pero el problema es que tengo datos dispersos en varias tablas.
Mi servicio es un sitio web de comercio electrónico. Entonces, si un cliente busca "una buena computadora portátil de Apple", necesito unirme a la Brand
tabla, post
tabla y review
tabla (1 publicación es una combinación de varias revisiones + resumen breve) para buscar completamente todas las publicaciones. Si tuviera que usar Elasticsearch, podría insertar publicaciones completas mediante el preprocesamiento.
Según mi investigación, algunas personas dijeron que FTS y Elasticsearch de PostgreSQL tienen un rendimiento similar y algunas personas dijeron que Elasticsearch es más rápido. ¿Cuál sería la mejor solución para mi caso?
Gracias por adelantado
Respuestas:
Respuesta corta: Elasticsearch es mejor
Explicación: PostgreSQL y Elasticsearch son bases de datos de 2 tipos diferentes. Elasticsearch es potente para la búsqueda de documentos y PostgreSQL sigue siendo un RDBMS tradicional. Verifique su objetivo de que desee buscar texto en algunas publicaciones. No importa cómo PostgreSQL tenga un buen desempeño en sus búsquedas de texto completo, Elasticsearch está diseñado para buscar en textos y documentos (o registros) enormes. Y cuanto más tamaño desee buscar, más Elasticsearch es mejor que PostgreSQL en rendimiento. Además, también podría obtener muchos beneficios y un gran rendimiento si procesa previamente las publicaciones en varios campos e índices antes de almacenarlas en Elasticsearch.
Si seguramente necesita la función de texto completo, puede considerar MSSQL, que puede funcionar mejor que PostgreSQL.
Respuesta a los comentarios: Debe ser el sentido común para la comparación de propiedades en esos diferentes tipos de bases de datos. Dado que OP no proporcionó la cantidad y el tamaño de los datos almacenados. Si se trata de datos de búsqueda de tamaño pequeño, tal vez elegir Postgre o ES están bien. Sin embargo, si el depósito de transacciones y datos se vuelve tan grande en el futuro, ES obtendrá su beneficio.
Puede consultar este sitio para conocer el ranking actual de cada tipo de base de datos y elegir el mejor entre sus requisitos, arquitectura y crecimiento de datos en el futuro de sus aplicaciones.
fuente
Si PostgreSQL ya está en su pila, la mejor opción para usted es usar la búsqueda de texto completo de PostgreSQL.
¿Por qué la búsqueda de texto completo (FTS) en PostgreSQL?
Porque de lo contrario, debe alimentar el contenido de la base de datos a motores de búsqueda externos.
Los motores de búsqueda externos (p. Ej., Elasticsearch) son rápidos PERO :
Si desea leer más sobre FTS en PostgreSQL, hay una gran presentación de Oleg Bartunov (extraje la lista anterior de aquí): " ¿Necesita una búsqueda de texto completo en PostgreSQL? "
Este es un breve ejemplo de cómo puede crear un "Documento" (lea la documentación de búsqueda de texto ) de más de una tabla en SQL:
Si está utilizando Django para su sitio web de comercio electrónico, también puede leer este artículo que escribí sobre " Búsqueda de texto completo en Django con PostgreSQL "
fuente