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?
Respostas:
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 comodig,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.
fonte
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.
fonte