¿Por qué usaría ElasticSearch si ya uso una base de datos gráfica?


15

No encuentro ninguna explicación profunda en la web sobre una comparación entre ElasticSearch y las bases de datos de gráficos.

Ambos están optimizados para atravesar datos.
ElasticSearch parece estar optimizado para análisis.
Sin embargo, Neo4j también se basa en Lucene para administrar índices y algunas características de texto completo.

¿Por qué usaría ElasticSearch si ya uso una base de datos gráfica?

En mi caso, estoy usando Neo4j para construir una red social.
¿Qué beneficio real puede aportar ElasticSearch?

ACTUALIZACIÓN ----------

Acabo de encontrar este párrafo:

Hay miles de casos en los que elasticsearch es útil. Algunos casos de uso lo requieren más claramente que otros. A continuación se enumeran algunas tareas para las cuales elasticsearch es particularmente adecuado.

  • Buscar una gran cantidad de descripciones de productos para la mejor coincidencia para una frase específica (por ejemplo, "cuchillo de cocinero") y obtener los mejores resultados
  • Dado el ejemplo anterior, desglosando los diversos departamentos donde aparece el "cuchillo de cocinero" (ver Facetado más adelante en este libro)
  • Búsqueda de texto para palabras que suenan como "temporada"
  • Completar automáticamente un cuadro de búsqueda basado en palabras parcialmente tipadas basadas en búsquedas emitidas previamente mientras se explican faltas de ortografía
  • Almacenar una gran cantidad de datos semiestructurados (JSON) de manera distribuida, con un nivel específico de redundancia en un grupo de máquinas

Sin embargo, debe tenerse en cuenta que si bien elasticsearch es excelente para resolver los problemas antes mencionados, no es la mejor opción para otros. Es especialmente malo para resolver problemas para los que las bases de datos relacionales están optimizadas. Problemas como los que se enumeran a continuación.

  • Calcular cuántos artículos quedan en el inventario
  • Calcular la suma de todas las partidas en todas las facturas enviadas en un mes determinado
  • Ejecutar dos operaciones transaccionalmente con soporte de reversión
  • Crear registros que garanticen ser únicos en varios términos dados, por ejemplo, un número de teléfono y una extensión
  • Elasticsearch es generalmente fantástico para proporcionar respuestas aproximadas de los datos, como la calificación de los resultados por calidad. Si bien Elasticsearch puede realizar coincidencias exactas y cálculos estadísticos, su tarea principal de búsqueda es una tarea inherentemente aproximada.
  • Encontrar respuestas aproximadas es una propiedad que separa la búsqueda elástica de las bases de datos más tradicionales. Dicho esto, las bases de datos relacionales tradicionales sobresalen en precisión e integridad de datos, para lo cual elasticsearch y Lucene tienen pocas disposiciones.

¿Puedo afirmar que si no necesito respuestas aproximadas, ElasticSearch sería inútil en comparación con una base de datos de gráficos ya utilizada?


Respuestas:


17

Dudo en llamar a ElasticSearch una base de datos. No es un reemplazo para una base de datos, pero es una buena adición para agregar funcionalidad, específicamente búsqueda avanzada de texto, junto con su base de datos existente.

Veo dónde puedes confundirlos. En realidad, pueden satisfacer la misma necesidad, pero no siempre. ElasticSearch hace exactamente lo que parece, busca . Una base de datos de gráficos no especifica relaciones o índices, como lo hace ElasticSearch. Así que fundamentalmente funcionan de manera bastante diferente. ElasticSearch analiza documentos con, por ejemplo, un analizador de inglés. Lo que hace esto tomará palabras y analizará diferentes variaciones de esa palabra o incluso sinónimos. Por ejemplo, digse analizaría como dig,digs,dug,digging,digger .... Cuando ejecuta una consulta en Elasticsearch, sus consultas también se pueden analizar, luego esas palabras se consultan y se pueden puntuar por relevancia.

ElasticSearch es una gran herramienta, porque es realmente flexible. Puede encontrar una amplia gama de contenido relativo, o puede encontrar una aguja en la pila de heno, y es relativamente fácil.

Las bases de datos de gráficos también tienen su ventaja. Encontrar relevancia / relaciones entre cosas como etiquetas hash, por ejemplo, o cosas con muchas relaciones mutables. Son grandes e interesantes piezas de tecnología, sin embargo, debo decir que no es tan poderoso como ElasticSearch. Principalmente porque ElasticSearch está orientado a este tipo de cosas, y maneja el análisis por usted para que pueda hacer una búsqueda de texto completo. Sin embargo, si está buscando usar un sistema más parecido a la búsqueda de Twitter que se basa en etiquetas / palabras clave predefinidas, entonces sería mejor usar la Base de datos de gráficos que ya está usando.

La pregunta es ¿cuán robusto quieres que sea tu búsqueda? Si necesita realizar búsquedas de grano muy fino (texto completo), usaría elasticsearch. De lo contrario, siempre puede implementar una búsqueda con relativa facilidad en una base de datos gráfica. Una vez que haya implementado la búsqueda, no es imposible migrar a Elasticsearch si más tarde necesita un motor de búsqueda más robusto, simplemente implemente su búsqueda con eso en mente.


3

Ambas bases de datos tienen su necesidad específica de resolver problemas específicos en cierto nivel de requisito de aplicación. Aunque no hemos usado Graph Database. Pero estamos usando Elasticsearch con MySQL en uno de nuestros proyectos de los últimos 5 años. Ese proyecto tiene una gran cantidad de datos para buscar en 6 millones de documentos y tiene relaciones masivas entre esas entidades (10 millones de documentos de relación).

Caso de uso: me gusta buscar en hoteles que han sido del agrado de mis amigos y ordenar todos los hoteles con el número de me gusta que tienen. Y si lo ves de cerca. Este caso ha involucrado 2 relaciones (Friend, Like). Así que necesito buscar a través de la relación Me gusta entre Hoteles y Mis amigos y luego los hoteles deben ordenarse por el número total de Me gusta que tienen. Entonces, para tales búsquedas, la base de datos de gráficos es buena.

Elasticsearch está haciendo un gran trabajo para la búsqueda de prueba completa en documentos, pero cuando se trata de buscar a través de relaciones como las anteriores, no es tan bueno. Enumere el documento (entidades) que son mis admiradores y ordénelos por su número de admiradores. Pero estos son de un nivel profundo y cuando se trata de buscar más profundo. Elasticsearch no es lo suficientemente bueno.

Entonces, comprenda los requisitos de su aplicación y luego busque la base de datos. Es posible que necesite tener ambos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.