Analytik - mongodb oder cassandra

8

Ich benutze mongodb heute und ich bin wirklich glücklich damit. Ich muss eine Lösung für eine Ereignisprotokollierungslösung finden. Das Protokoll enthält Logins von Content-Imports und Klicks (wie das Anzeigensystem). Es ist viel schreiben und wenig lesen (hauptsächlich für die tägliche Berichterstattung). Es scheint so, als wäre Casandra eine bessere Lösung als Mongodb, was für eine dokumentenorientierte Datenstruktur besser scheint. Irgendwelche Gedanken?

    
Ido Shilon 06.03.2011, 00:03
quelle

4 Antworten

6

Eines der schönen Dinge an Cassandra ist die Unterstützung von Hadoop map / reduce, die ihm Zugriff auf ein sehr robustes Ökosystem (z. B. Pig) von Tools, Beispielen usw. gibt.

Je nach Datenvolumen und Anwendungsfall möchten Sie möglicherweise auch die Funktion für auslaufende Spalten ( Ссылка ).

Gemini hat kürzlich auch sein Cassandra Echtzeit-Protokollverarbeitungstool geöffnet, das dem ähnelt, was Sie möchten ( Ссылка , Ссылка ).

    
jbellis 07.03.2011 15:09
quelle
4

Wir haben mongodb in einem der Projekte verwendet, um die Ereignisprotokollierung für eine verteilte Anwendung zu erfassen. Es funktioniert wirklich gut und es macht Sinn, vorher einige Berechnungen über die Menge an Speicher, Sharding und anderen Faktoren zu machen.

Als Vorschlag, gehen Sie mit capped collection und lassen Sie eine mapreduce Operation alle 24 Stunden oder so laufen, um die Logs auf eine aggregierte Tabelle des gewünschten Wertes zu reduzieren. Ich habe festgestellt, dass die Dokumente in mongodb aufgrund der "schemafreien" Tatsache dazu führen können, dass die Größe der Datenbankdatei sehr schnell anwächst.

    
Ankur Chauhan 06.03.2011 00:27
quelle
1

Cassandra ist für einen hohen Schreibdurchsatz optimiert (viele tausend Schreibvorgänge pro Sekunde), so scheint es zumindest für dieses Kriterium geeignet zu sein. Wenn die MongoDB-Leistung für Ihre App jedoch gut genug ist und Sie damit vertraut sind, ist Cassandra möglicherweise nicht von großem Vorteil.

    
DNA 13.04.2011 22:35
quelle
0

Tatsächlich wird keine dieser Datenbanken für die Analyse allein verwendet. Jedes Mal, wenn Sie NoSQL-Lösung für Ihre Lösung wählen, müssen Sie überlegen, wie Daten manipuliert werden.

Cassandra eignet sich hervorragend zum Schreiben großer Datenmengen mit vorhersagbarer Leistung. Es lässt sich problemlos in Umgebungen mit mehreren Rechenzentren skalieren. Auf der anderen Seite hängt die Leseleistung vom Konsistenzfaktor ab.

MongoDB ist perfekt für strukturierte Daten, was in Ihrem Fall nicht von Vorteil ist. MongoDB stellt sicher, dass ihre Daten konsistent sind, aber diese Tatsache könnte eine Ursache für Leistungseinbußen sein. Mehr über MongoDB ist nicht gut für Multi-Datencenter-Umgebungen.

Hinsichtlich des Zugriffs auf Daten sind sie auch völlig verschieden. Cassandra bietet CQL (akka SQL), das Join, group usw. nicht unterstützt. Im Gegensatz zu Cassandra CQL verwendet MongoDB JavaScript , Json, der eigene Implementierung von map / reduce für Join-Operationen verwendet.

Zusammenfassend denke ich, dass Sie all diese Fakten berücksichtigen sollten, wenn Sie eine dieser Datenbanken wählen. Von meinem Standpunkt aus passt Cassandra gut zu Ihrer Aufgabe, aber Sie sollten gut über das Modell nachdenken und welche Art von Abfragen verwendet werden, bevor Sie mit Cassandra arbeiten.

P.S. Ich empfehle, zu Analysezwecken SQL Engines als Apache Drill für MongoDb und PrestoDB für Cassandra zu betrachten.

    
Oleksandr Petrenko 20.04.2016 09:20
quelle

Tags und Links