it-swarm.com.de

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

Ich finde im Internet keine ausführliche 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 Diagrammdatenbank 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 Elastiksuche nützlich ist. Einige Anwendungsfälle fordern dies deutlicher als andere. Nachfolgend sind einige Aufgaben aufgeführt, für die elasticsearch besonders gut geeignet ist.

  • 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 werden die verschiedenen Abteilungen aufgeschlüsselt, in denen das „Kochmesser“ angezeigt wird (siehe Facettierung weiter unten in diesem Buch).
  • Durchsuchen von Text nach Wörtern, die wie "Jahreszeit" klingen
  • Automatisches Ausfüllen eines Suchfelds basierend auf teilweise eingegebenen Wörtern basierend auf zuvor ausgegebenen Suchvorgängen unter Berücksichtigung von Rechtschreibfehlern
  • Speichern einer großen Menge von halbstrukturierten (JSON) Daten auf verteilte Weise mit einem bestimmten Redundanzgrad über einen Cluster von Maschinen hinweg

Es sollte jedoch beachtet werden, dass Elasticsearch zwar die oben genannten Probleme hervorragend lösen kann, für andere jedoch nicht die beste Wahl ist. Es ist besonders schlecht bei der Lösung von Problemen, für die relationale Datenbanken optimiert sind. Probleme wie die unten aufgeführten.

  • Berechnen, wie viele Artikel noch im Inventar sind
  • Ermittlung der Summe aller Werbebuchungen auf allen Rechnungen, die in einem bestimmten Monat versandt wurden
  • Ausführen von zwei Operationen transaktional mit Rollback-Unterstützung
  • Erstellen von Datensätzen, die garantiert über mehrere Begriffe hinweg eindeutig sind, z. B. eine Telefonnummer und eine Nebenstelle
  • Elasticsearch ist im Allgemeinen fantastisch, wenn es darum geht, ungefähre Antworten aus Daten zu liefern, z. B. die Ergebnisse nach Qualität zu bewerten. Während elasticsearch exakte Übereinstimmungen und statistische Berechnungen durchführen kann, ist seine Hauptaufgabe der Suche eine inhärent ungefähre Aufgabe.
  • Das Finden von ungefähren Antworten ist eine Eigenschaft, die die Elasticsearch von herkömmlichen Datenbanken unterscheidet. Davon abgesehen bieten traditionelle relationale Datenbanken Excel mit Präzision und Datenintegrität, für die Elasticsearch und Lucene nur wenige Bestimmungen haben.

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

15
Mik378

Ich zögere, ElasticSearch als Datenbank zu bezeichnen. 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 den gleichen Bedarf decken, aber nicht immer. ElasticSearch macht genau das, wonach es sich anhört, sucht. Eine Diagrammdatenbank gibt keine Beziehungen oder Indizes an, wie dies bei ElasticSearch der Fall ist. Grundsätzlich funktionieren sie also ganz anders. ElasticSearch Analysen Dokumente mit beispielsweise englischem Analysator. In diesem Fall werden Wörter verwendet und verschiedene Variationen dieses Wortes oder sogar Synonyme analysiert. Zum Beispiel würde Dig als Dig,digs,dug,digging,digger ... Analysiert. Wenn Sie eine Abfrage in elasticsearch ausführen, können Ihre Abfragen auch analysiert werden. Diese Wörter werden abgefragt und können bewertet nach Relevanz sein.

ElasticSearch ist ein großartiges Tool, weil 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.

Graphendatenbanken haben auch ihren Vorteil. Finden von Relevanz/Beziehungen zwischen Dingen wie beispielsweise Hash-Tags oder Dingen mit vielen veränderlichen Beziehungen. Es sind 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 übernimmt, damit Sie die Volltextsuche durchführen können. Wenn Sie jedoch ein System verwenden möchten, das der Suche von Twitter ähnelt 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 Suchen (Volltext) durchführen müssen, würde ich elasticsearch verwenden. Andernfalls können Sie eine Suche in einer Diagrammdatenbank immer relativ einfach implementieren. 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 einfach in diesem Sinne.

17
tsturzl

Beide Datenbanken haben ihren spezifischen Bedarf, ein bestimmtes Problem auf einer bestimmten Ebene der Anwendungsanforderungen zu lösen. Obwohl wir Graph Graph Database nicht verwendet haben. Aber 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 nach Hotels, die meinen Freunden gefallen haben, und sortieren Sie alle Hotels nach der Anzahl der Likes, die sie haben. Und wenn Sie es genau sehen. In diesem Fall handelte es sich um zwei Beziehungen (Freund, Gefällt mir). Also muss ich das Like-Relationship-Schiff zwischen Hotels und meinen Freunden durchsuchen und dann sollten Hotels nach der Gesamtzahl der Likes sortiert werden, die sie haben. Für solche Suchvorgänge ist die Grafikdatenbank also gut.

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

Verstehen Sie also Ihre Anwendungsanforderungen und gehen Sie dann zur Datenbank. Möglicherweise müssen Sie beide haben.

3
Terry