Por que eu usaria o ElasticSearch se já uso um banco de dados de gráficos?

15

Não encontro nenhuma explicação profunda na Web sobre uma comparação entre o ElasticSearch e os bancos de dados de gráficos.

Ambos são otimizados para atravessar dados.
O ElasticSearch parece estar otimizado para análises.
No entanto, o Neo4j também é baseado no Lucene para gerenciar índices e alguns recursos de texto completo.

Por que eu usaria o ElasticSearch se já uso um banco de dados de gráficos?

No meu caso, estou usando o Neo4j para construir uma rede social.
Que benefício real o ElasticSearch pode trazer?

ATUALIZAÇÃO ----------

Acabei de encontrar este parágrafo:

Existem inúmeros casos em que a pesquisa elástica é útil. Alguns casos de uso exigem mais claramente do que outros. Abaixo estão listadas algumas tarefas para as quais a pesquisa elástica é particularmente adequada.

  • Pesquisando um grande número de descrições de produtos para a melhor correspondência para uma frase específica (por exemplo, “faca do chef”) e retornando os melhores resultados
  • Dado o exemplo anterior, detalhando os vários departamentos em que a “faca do chef” aparece (consulte Facetamento mais adiante neste livro)
  • Pesquisando texto por palavras que pareçam "temporada"
  • Preenchimento automático de uma caixa de pesquisa com base em palavras parcialmente digitadas, com base em pesquisas emitidas anteriormente e contabilizando erros de ortografia
  • Armazenando uma grande quantidade de dados semiestruturados (JSON) de maneira distribuída, com um nível especificado de redundância em um cluster de máquinas

Note-se, no entanto, que, embora a pesquisa elástica seja excelente para solucionar os problemas mencionados acima, não é a melhor escolha para os outros. É especialmente ruim na solução de problemas para os quais os bancos de dados relacionais são otimizados. Problemas como os listados abaixo.

  • Cálculo de quantos itens restam no inventário
  • Descobrir a soma de todos os itens de linha em todas as faturas enviadas em um determinado mês
  • Executando Duas Operações Transacionalmente com Suporte à Reversão
  • Criação de registros com garantia de exclusividade em vários termos, como um número de telefone e extensão
  • A pesquisa elástica geralmente é fantástica ao fornecer respostas aproximadas dos dados, como pontuar os resultados por qualidade. Embora a pesquisa elástica possa executar cálculos estatísticos e de correspondência exata, sua principal tarefa de pesquisa é uma tarefa inerentemente aproximada.
  • Encontrar respostas aproximadas é uma propriedade que separa a pesquisa elástica dos bancos de dados mais tradicionais. Dito isto, os bancos de dados relacionais tradicionais se destacam pela precisão e integridade dos dados, para os quais a elasticsearch e o Lucene têm poucas provisões.

Posso afirmar que, se não precisar de respostas aproximadas, o ElasticSearch seria inútil em comparação com um banco de dados de gráficos já usado?

Mik378
fonte

Respostas:

17

Hesito em chamar o ElasticSearch de banco de dados. Não é um substituto para um banco de dados, mas é uma boa adição para adicionar funcionalidade, pesquisa de texto especificamente avançada, ao lado do banco de dados existente.

Eu vejo onde você pode confundi-los. Eles podem realmente atender à mesma necessidade, mas nem sempre. O ElasticSearch faz exatamente o que parece: pesquisas . Um banco de dados gráfico não especifica relações ou índices, como o ElasticSearch. Então, fundamentalmente, eles funcionam de maneira bem diferente. O ElasticSearch analisa documentos com, por exemplo, analisador de inglês. Para isso, serão necessárias palavras e analisará diferentes variações dessa palavra ou até sinônimos. Por exemplo dig,, seria anaylzed como dig,digs,dug,digging,digger .... Quando você executa uma consulta na pesquisa elástica, suas consultas também podem ser analisadas; essas palavras são consultadas e podem ser pontuadas por relevância.

O ElasticSearch é uma ótima ferramenta, porque é realmente flexível. Você pode encontrar uma ampla variedade de conteúdo relativo ou uma agulha na pilha de feno, e é relativamente fácil.

Os bancos de dados de gráficos também têm suas vantagens. Encontrar relevância / relações entre coisas como tags de hash, por exemplo, ou coisas com muitas relações mutáveis. São ótimas e interessantes peças de tecnologia, no entanto, devo dizer que não é tão poderoso quanto o ElasticSearch. Principalmente porque o ElasticSearch é voltado para esse tipo de coisa, e trata da análise para você, para que você possa fazer uma pesquisa de texto completo. No entanto, se você deseja usar um sistema mais parecido com a pesquisa do twitter, com base em tags / palavras-chave predefinidas, é melhor usar o banco de dados gráfico que já está usando.

A questão é quão robusta você deseja que sua pesquisa seja? Se você precisar fazer pesquisas realmente detalhadas (texto completo), usaria o elasticsearch. Caso contrário, você sempre poderá implementar uma pesquisa com relativa facilidade em um banco de dados de gráficos. Depois de implementar a pesquisa, não é impossível migrar para a elasticsearch, se você precisar mais tarde de um mecanismo de pesquisa mais robusto, basta implementar sua pesquisa com isso em mente.

tsturzl
fonte
3

Ambos os bancos de dados têm sua necessidade específica de resolver problemas específicos em determinado nível de requisito de aplicativo. Embora não tenhamos usado o Graph Database. Mas estamos usando elasticsearch com MySQL em um de nossos projetos nos últimos 5 anos. Esse projeto possui um grande número de dados a serem pesquisados ​​nos documentos de 6 milhões e possui um relacionamento massivo entre essas entidades (10 milhões de documentos de relacionamento).

Caso de uso: curta a pesquisa nos hotéis que meus amigos gostaram e classifique todos os hotéis com o número de curtidas que eles têm. E se você vê de perto. este caso envolveu 2 relações (amigo, gosto). Por isso, preciso pesquisar a relação Como enviar entre Hotéis e Meus amigos e os hotéis devem ser classificados pelo número total de curtidas que eles têm. Portanto, para essas pesquisas, o banco de dados gráfico é bom.

O Elasticsearch está fazendo um ótimo trabalho para a pesquisa de teste completa em documentos, mas quando se trata de pesquisar em relacionamentos como o descrito acima, isso não é bom. Liste o documento (entidades) que são meus fãs e os ordene pelo número de fãs. Mas estes são um nível profundo e, quando se trata de pesquisar mais profundamente. A pesquisa elástica não é boa o suficiente.

Portanto, entenda o requisito do seu aplicativo e vá para o banco de dados. Você pode precisar de ambos.

Terry
fonte