webentwicklung-frage-antwort-db.com.de

Elasticsearch vs Cassandra vs Elasticsearch mit Cassandra

Ich lerne NoSQL und schaue mir verschiedene Optionen für eine der Anforderungen meines Kunden an. Ich habe verschiedene Ressourcen durchlaufen, bevor ich diese Frage stellte (eine Person mit wenig Wissen in NoSQL).

  • Ich muss Daten schneller speichern und Daten lesen. 
  • Vollständig ausfallsicher und leicht skalierbar.
  • Kann Daten nach Analytics durchsuchen.

Ich bekam eine kurze Liste mit: Cassandra and Elasticsearch

Was ich verstehe ist, dass Cassandra für mich eine perfekte NoSQL-Speicherlösung ist, da ich Daten schreiben und Daten mithilfe von Indizes lesen kann. Wo es versagt oder es könnte fehlschlagen, ist in Analytics. Wenn ich in der Zukunft Daten von from_date to to_date erhalten möchte, oder mehr Möglichkeiten, um Daten für die Analyse zu erhalten, wenn ich das Datenmodell nicht richtig entwerfe oder langfristig orientiere, was in einer sich ständig verändernden Welt ziemlich schwierig sein kann.

Elastic Search eignet sich am besten für die Indizierung (unterstützt von Lucene) und kann die Daten zufällig durchsuchen, indem ein zufälliger Text ausgegeben wird. Aber funktioniert es genauso, auch wenn ich Daten from_date to to_date abrufen möchte (ich nehme an, dass es sein könnte). Aber die eigentliche Frage ist, ist es eine Suchmaschine oder eine perfekte NoSQL-Datenspeicherung wie Cassandra? Wenn ja, warum brauchen wir noch Cassandra?

Wenn beide in einer anderen Welt sind, erklären Sie das bitte! Wie kombinieren wir sie, um eine effektivere Lösung zu erhalten?

95
Reddy

Eine unserer Anwendungen verwendet Daten, die sowohl in Cassandra als auch in ElasticSearch gespeichert sind. Wir verwenden Cassandra, um auf diese Datensätze zuzugreifen, wann immer wir können, und lassen Daten in Abfragetabellen duplizieren, um bestimmte anwendungsseitige Anforderungen zu erfüllen. Für eine liberalere Suche, als unsere Abfragetabellen zulassen, führt ElasticSearch diese Funktionalität gut aus.

Wir haben dieselbe Frage (von uns) gestellt: "Warum bekommen wir nicht einfach alles von ElastsicSearch?"

Die Antwort ist, dass ElasticSearch als Suchmaschine und nicht als permanenter Datenspeicher konzipiert wurde. Manchmal verliert ElasticSearch Schreibvorgänge. Schema-Änderungen sind in ElasticSearch schwierig durchzuführen, ohne alles wegzublasen und neu zu laden. Zu diesem Zweck habe ich Jobs geschrieben, die dazu dienen, ElasticSearch mit unserem Cassandra-Cluster in Einklang zu halten. Es gab auch eine ziemlich aktuelle Diskussion über Quora zu diesem Thema , die ähnliche Punkte hervorbrachte.

Davon abgesehen arbeitet ElasticSearch great als Suchmaschine. Und Cassandra arbeitet great als skalierbarer Hochleistungs-Datastore. Die Daten von querying unterscheiden sich jedoch von search nach Daten. Es gibt Zeiten, in denen wir das eine oder das andere brauchen, und eine Kombination der beiden funktioniert gut für unsere Anwendung. Es kann (oder auch nicht) für Sie gut funktionieren.

Was die Analyse anbelangt, hatte ich mit dem Cassandra Spark-Connector einige Erfolge, um komplexere OLAP - Abfragen bedienen zu können. Hoffentlich hilft das.

130
Aaron

Cassandra + Lucene ist eine großartige Option. Es gibt verschiedene Initiativen für dieses Problem, zum Beispiel:

28
Alvaro Agea

Nachdem ich an diesem Problem selbst gearbeitet habe, habe ich erkannt, dass NoSQL-Datenbanken wie casandra gut sind, wenn Sie sicherstellen möchten, dass Sie Ihr Datenschema mit zuverlässigem Schreibvorgang beibehalten und die Indexierungsoperationen von elasticsearch nicht nutzen möchten. Wenn Sie einige Indexdaten beibehalten möchten, ist Elasticsearch gut für den Fall, dass Sie Ihrem Schema vertrauen und nur weitaus mehr Lesevorgänge als Schreibvorgänge durchführen.

Mein Fall war Datenanalyse. So habe ich viele meiner Latices in der elastischen Suche erhalten, da ich später viel durch die Daten gehen wollte, um zu sehen, was mein nächster Schritt sein sollte. Ich hätte casandra benutzt, wenn ich viele Änderungen im Schema der Daten in meinen analytischen Pilelines haben wollte.

Es gibt auch viele Nice-Tools wie Kibana, mit denen Sie Ihre Daten mit guten Grafiken präsentieren können. Vielleicht bin ich faul, aber sie sehen sehr gut aus und haben mir geholfen. 

7
M.Rez

Das Speichern von Daten in einer Kombination aus Cassandra und ElasticSearch bietet Ihnen die meisten Funktionen. Es ermöglicht Ihnen das Nachschlagen von Schlüsselwerttabellen sowie das Durchsuchen von Daten in Indizes.

Die Kombination bietet Ihnen viel Flexibilität, ideal für Ihre Anwendung. 

3
user2089236
  • Da Elasticsearch auf dem Lucene-Index basiert, und wenn Sie die Indexierung in Elasticsearch speichern möchten, ist dies der beste Vergleich mit der Indexierung in Cassandra, um die Daten abzurufen.
  • Wenn Ihre Anforderungen nicht auf Echtzeit-Abruf bezogen sind, können Sie Elasticsearch auch als NoSQL-Datenbank verwenden. Es gibt die Überlegung, dass ElasticSearch Schreibvorgänge verliert und Schemaänderungen schwierig sind, aber wenn Ihr Datenvolumen nicht zu groß ist. Sie können elasticsearch als Suchmaschine mit bester Indexierung zusammen mit elasticsearch als aoSQL-Datenbank leicht erreichen. Es gibt mehrere Möglichkeiten, um dies zu verhindern. Ich habe an den Schemaänderungen in Elasticsearch gearbeitet. Wenn Ihre Datenstruktur konsistent ist, werden Probleme erzeugt.
  • Als Unterstützer von ElasticSearch oder SOlr. Ich habe an beiden Suchmaschinen gearbeitet und habe festgestellt, dass beide Suchmaschinen fließend verwendet werden können, wenn Sie sie richtig konfigurieren. 
  • Nur Nachteile, die ich mir vorstellen kann, wenn Sie Echtzeit-Ergebnisse anvisieren und nicht in Millisekunden verzögern können. Dann ist es besser, andere NoSQL-Datenbanken wie cassandra oder couchbase zu nutzen. 
  • Cassandra mit Solr, besser funktionieren als Cassandra mit ElasticSearch. 
0
vishal yadav

Wir hatten eine Anwendung entwickelt, in der wir Elasticsearch und Cassandra verwendeten. Ähnliche Daten wurden in Cassandra gespeichert und in Elasticsearch indiziert.

Die Benutzeroberfläche unserer Anwendung enthielt Funktionen wie Suchen, Aggregationen, Datenexport usw. Die Back-End-Microservices sammelten kontinuierlich große Datenmengen (zu Kafka-Themen) und speicherten sie in Cassandra. Sobald die Daten in Cassandra gespeichert sind, stellen die Dienste sicher, dass die Daten in Elasticsearch indiziert werden.

Cassandra fungierte als "Quelle der Wahrheit" für Elasticsearch. In den Fällen, in denen eine Neuindizierung des ES-Index erforderlich war, haben wir Cassandra abgefragt und die Daten in ES neu indiziert.

Diese Lösung hat uns geholfen, da diese sehr einfach zu skalieren war und die Suche und Aggregation viel schneller waren.

0
Sumit A

Elassandra ist die kombinierte Lösung von Cassandra + Elastic search. Sie verwendet die elastische Suche zur Indizierung der Daten und Cassandra als Datenspeicher. Ich bin nicht sicher über die Leistung, aber gemäß diesem article die Leistung ist gut.
Wenn Ihre Anwendung eine Suchfunktion benötigt, ist Elassandra die beste Open-Source-Option. DSE-Suche ist verfügbar, aber es ist teuer.

0