Olá, estou fazendo alguma pesquisa antes de implementar o recurso de pesquisa em meu serviço. Atualmente, estou usando o PostgreSQL como meu armazenamento principal. Definitivamente, eu poderia usar a pesquisa de texto completo do PostgreSQL, mas o problema é que tenho dados espalhados por várias tabelas.
Meu serviço é um site de comércio eletrônico. Portanto, se um cliente pesquisar "um bom laptop da apple", preciso entrar em uma Brand
tabela, post
tabela e review
tabela (uma postagem é uma combinação de várias revisões + breve resumo) para pesquisar completamente todas as postagens. Se eu usasse a elasticsearch, poderia inserir postagens completas por pré-processamento.
De minha pesquisa, algumas pessoas disseram que o STF e a elasticsearch do PostgreSQL têm desempenho semelhante e algumas pessoas disseram que a pesquisa elástica é mais rápida. Qual seria a melhor solução para o meu caso?
desde já, obrigado
Respostas:
Resposta curta: Elasticsearch é melhor
Explicação: O PostgreSQL e o Elasticsearch são bancos de dados diferentes de dois tipos. O Elasticsearch é poderoso para pesquisar documentos e o PostgreSQL ainda é um RDBMS tradicional. Verifique seu objetivo de pesquisar textos em algumas postagens. Independentemente do desempenho do PostgreSQL em suas pesquisas de texto completo, o Elasticsearch foi projetado para pesquisar em enormes textos e documentos (ou registros). E quanto mais tamanho você desejar pesquisar, mais Elasticsearch será melhor que o PostgreSQL em desempenho. Além disso, você também pode obter muitos benefícios e ótimo desempenho se pré-processar as postagens em vários campos e índices bem antes de armazenar no Elasticsearch.
Se você certamente precisa de um recurso de texto completo, considere o MSSQL, que pode se sair melhor que o PostgreSQL.
Resposta nos comentários: deve ser o senso comum para a comparação de propriedades nos diferentes tipos de banco de dados. Como o OP não forneceu qual quantidade e tamanho de dados armazenados. Se este for um tamanho pequeno de dados em pesquisa, talvez escolha Postgre ou ES estejam OK. No entanto, se o repositório de transações e dados se tornar tão maior no futuro, o ES obterá seu benefício.
Você pode verificar este site para conhecer a classificação atual de cada tipo de banco de dados e escolher a melhor dentre seus requisitos, arquitetura e crescimento de dados no futuro de seus aplicativos.
fonte
Se o PostgreSQL já estiver na sua pilha, a melhor opção é usar a pesquisa de texto completo do PostgreSQL.
Por que a pesquisa de texto completo (STF) no PostgreSQL?
Porque, caso contrário, você precisará alimentar o conteúdo do banco de dados para mecanismos de pesquisa externos.
Os mecanismos de pesquisa externos (por exemplo, elasticsearch) são rápidos, MAS :
Se você quiser ler mais sobre o STF no PostgreSQL, há uma ótima apresentação de Oleg Bartunov (extraí a lista acima daqui): " Você precisa de uma pesquisa de texto completo no PostgreSQL? "
Este é um pequeno exemplo de como você pode criar um "Documento" (leia a documentação de pesquisa de texto ) de mais de uma tabela no SQL:
Se você estiver usando o Django no seu site de comércio eletrônico, também poderá ler este artigo que escrevi em " Pesquisa de texto completo no Django com PostgreSQL "
fonte