Warum sollte ich ElasticSearch verwenden, wenn ich bereits eine Grafikdatenbank verwende?


15

Ich finde im Web keine tiefgreifende Erklärung für einen Vergleich zwischen ElasticSearch und den Graphendatenbanken.

Beide sind für das Durchlaufen von Daten optimiert.
ElasticSearch scheint für die Analyse optimiert zu sein.
Neo4j basiert jedoch auch auf Lucene, um Indizes und einige Volltextfunktionen zu verwalten.

Warum sollte ich ElasticSearch verwenden, wenn ich bereits eine Grafikdatenbank verwende?

In meinem Fall verwende ich Neo4j , um ein soziales Netzwerk aufzubauen.
Welchen wirklichen Nutzen kann ElasticSearch bringen?

UPDATE ----------

Ich habe gerade diesen Absatz gefunden:

Es gibt unzählige Fälle, in denen die elastische Suche nützlich ist. Einige Anwendungsfälle erfordern dies deutlicher als andere. Nachfolgend sind einige Aufgaben aufgeführt, für die sich die Elasticsearch besonders gut eignet.

  • Durchsuchen Sie eine große Anzahl von Produktbeschreibungen nach der besten Übereinstimmung für einen bestimmten Ausdruck (z. B. „Kochmesser“) und geben Sie die besten Ergebnisse zurück
  • Im vorherigen Beispiel die verschiedenen Abteilungen aufteilen, in denen das „Kochmesser“ erscheint (siehe Facettierung weiter unten in diesem Buch)
  • Text nach Wörtern durchsuchen, die nach "Jahreszeit" klingen
  • Automatisches Ausfüllen eines Suchfelds basierend auf teilweise eingegebenen Wörtern basierend auf zuvor ausgegebenen Suchen unter Berücksichtigung von Rechtschreibfehlern
  • Speichern einer großen Menge von JSON-Daten (Semi-Structured Data) auf verteilte Weise mit einer festgelegten Redundanzstufe in einem Cluster von Computern

Es sollte jedoch beachtet werden, dass elasticsearch zwar hervorragend zur Lösung der oben genannten Probleme geeignet ist, für andere jedoch nicht die beste Wahl ist. Es ist besonders schwierig, Probleme zu lösen, für die relationale Datenbanken optimiert sind. Probleme wie die unten aufgeführten.

  • Berechnung, wie viele Artikel noch im Inventar sind
  • Ermitteln der Summe aller Positionen auf allen Rechnungen, die in einem bestimmten Monat versandt wurden
  • Ausführen von zwei Vorgängen mit Rollback-Unterstützung
  • Erstellen von Datensätzen, die garantiert über mehrere Begriffe hinweg eindeutig sind, z. B. eine Telefonnummer und eine Durchwahl
  • Elasticsearch ist im Allgemeinen fantastisch, wenn es darum geht, ungefähre Antworten aus Daten zu erhalten, beispielsweise die Bewertung der Ergebnisse nach Qualität. Während elasticsearch exakte Matching- und statistische Berechnungen durchführen kann, ist die primäre Suchaufgabe eine inhärente Näherungsaufgabe.
  • Das Finden von ungefähren Antworten ist eine Eigenschaft, die die elastische Suche von traditionelleren Datenbanken trennt. Allerdings zeichnen sich traditionelle relationale Datenbanken durch Präzision und Datenintegrität aus, für die Elasticsearch und Lucene nur wenige Bestimmungen haben.

Kann ich behaupten, dass ElasticSearch im Vergleich zu einer bereits verwendeten Graphendatenbank nutzlos wäre, wenn ich keine ungefähren Antworten benötige?


Antworten:


17

Ich zögere, ElasticSearch eine Datenbank aufzurufen. Es ist kein Ersatz für eine Datenbank, aber es ist eine gute Ergänzung, um Funktionen, insbesondere erweiterte Textsuche, neben Ihrer vorhandenen Datenbank hinzuzufügen.

Ich sehe, wo Sie sie verwirren können. Sie können tatsächlich das gleiche Bedürfnis erfüllen, aber nicht immer. ElasticSearch macht genau das, wonach es sich anhört, sucht . In einer Diagrammdatenbank werden keine Beziehungen oder Indizes angegeben, wie dies bei ElasticSearch der Fall ist. Sie arbeiten also grundsätzlich ganz anders. ElasticSearch analysiert Dokumente beispielsweise mit einem englischen Analysegerät. In diesem Fall werden Wörter benötigt und verschiedene Variationen dieses Wortes oder sogar Synonyme analysiert. Beispielsweise digwürde als anaylzed werden dig,digs,dug,digging,digger .... Wenn Sie eine Abfrage ausführen , auf Elasticsearch Ihre Anfragen können auch analysiert werden, dann werden diese Worte abgefragt für und kann erzielte nach Relevanz.

ElasticSearch ist ein großartiges Tool, da es sehr flexibel ist. Sie können eine breite Palette von relativen Inhalten finden, oder Sie können eine Nadel im Heuhaufen finden, und es ist relativ einfach.

Graphdatenbanken haben auch ihren Vorteil. Ermitteln von Relevanz / Beziehungen zwischen Dingen wie z. B. Hashtags oder Dingen mit vielen veränderlichen Beziehungen. Es handelt sich um großartige und interessante Technologien, aber ich muss sagen, dass sie nicht so leistungsfähig sind wie ElasticSearch. Vor allem, weil ElasticSearch auf diese Art von Dingen ausgerichtet ist und die Analyse für Sie erledigt, sodass Sie Volltextsuche durchführen können. Wenn Sie jedoch ein System verwenden möchten, das eher der Twitter-Suche entspricht und auf vordefinierten Tags / Schlüsselwörtern basiert, sollten Sie die bereits verwendete Grafikdatenbank verwenden.

Die Frage ist, wie robust Ihre Suche sein soll. Wenn Sie wirklich feinkörnige (Volltext-) Suchen durchführen müssen, würde ich elasticsearch verwenden. Ansonsten können Sie eine Suche in einer Grafikdatenbank immer relativ einfach durchführen. Sobald Sie die Suche implementiert haben, ist es nicht unmöglich, auf elasticsearch zu migrieren, wenn Sie später eine robustere Suchmaschine benötigen. Implementieren Sie Ihre Suche unter Berücksichtigung dieser Kriterien.


3

Beide Datenbanken haben ihren spezifischen Bedarf, spezifische Probleme bei bestimmten Anwendungsanforderungen zu lösen. Obwohl wir Graph Database nicht benutzt haben. Wir verwenden Elasticsearch mit MySQL in einem unserer Projekte der letzten 5 Jahre. Dieses Projekt verfügt über umfangreiche Daten, die in 6 Millionen Dokumenten durchsucht werden müssen, und über umfangreiche Beziehungen zwischen diesen Entitäten (10 Millionen Beziehungsdokumente).

Anwendungsfall: Suchen Sie wie in Hotels, die von meinen Freunden gemocht wurden, und sortieren Sie alle Hotels nach der Anzahl der gemachten Bewertungen. Und wenn Sie es genau sehen. In diesem Fall handelte es sich um zwei Beziehungen (Friend, Like). Also muss ich die Like-Beziehung zwischen Hotels und My Friends durchsuchen und dann die Hotels nach der Gesamtzahl der Likes sortieren. Für solche Suchvorgänge ist die Grafikdatenbank also gut geeignet.

Elasticsearch leistet hervorragende Arbeit für die vollständige Testsuche in Dokumenten, aber wenn es um die Suche in Beziehungen wie oben geht, ist dies nicht so gut. Listen Sie Dokumente (Entitäten) auf, die meine Fans sind, und sortieren Sie sie nach Anzahl der Fans. Aber diese sind eine Ebene tiefer und wenn es darum geht, tiefer zu suchen. Elasticsearch ist nicht gut genug.

Verstehen Sie also Ihre Anwendungsanforderungen und greifen Sie auf die Datenbank zu. Möglicherweise müssen Sie beide haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.