Wir evaluieren derzeit Cassandra als Datenspeicher für eine analytische Anwendung. Der Plan war, Rohdaten in Cassandra auszugeben und dann hauptsächlich Aggregationsabfragen darüber auszuführen. Wenn man sich CQL ansieht, scheint es einige traditionelle SQL-Operatoren nicht zu unterstützen:
Ich habe nichts gefunden, was dazu beitragen könnte, das Obige in der Dokumentation zu erreichen. Außerdem wurde geprüft, ob es Haken für Funktionen wie Erweiterungen gab. Sagen Sie wie in der Datenbank map-reduce in Mongodb oder benutzerdefinierte Funktionen in relationalen DBs.
Die Leute reden über die kostenpflichtige Datastax Enterprise Edition, und das erreicht dies nicht über einfache Cassandra, sondern über separate Komponenten wie Hadoop-Hive-Pig-Hadoop usw. Oder es gibt Vorschläge, die erforderlichen Voraggregationen durchzuführen, bevor Daten gedumpt werden an die DB seit Cassandra schreibt sind schnell.
Es sah wie zu viel Overhead aus, zumindest für grundlegende Dinge, die wir brauchen. Fehle ich etwas Grundlegendes hier?
Würde mich sehr darüber freuen.
Aggregation ist in Cassandra als Teil von CASSANDRA-4914 verfügbar, das in 2.2.0 verfügbar ist -rc1 Freigabe.
In einer bestimmten Anwendung verwenden wir Cassandra für die Schreibgeschwindigkeit und lassen die App dann die Daten zu einer komprimierteren, leicht aggregierten Zusammenfassung komprimieren. Dann führen wir einen stündlichen Job aus, um das Zusammenfassungsformular in die Postgres-Tabelle zu kopieren. Dieser Ansatz ist für Eleganz nicht besonders hoch, aber er ist einfach und bedeutet, dass wir Ad-hoc-Analyseabfragen ausführen können, ohne den primären Dateneingabepfad verkomplizieren oder eine maßgeschneiderte Aggregation in der CQL-App erstellen zu müssen.
Es ist nur ein Vorschlag, wie wir es in unserem Fall getan haben. Um die Aggregation in der Cassandra-Datenbank durchzuführen, müssen Sie Sprachen wie PIG oder HIVE verwenden, die intern Map-Reduce-Code erzeugen, der sehr gut für große Daten im Cluster funktioniert. Dafür muss die Hadoop-Umgebung eingerichtet sein. Nach der Verarbeitung können Sie die verarbeiteten Daten in Cassandra-Datenbank oder sqoop in die MySQL-Datenbank schreiben.
Abhängig von der Art Ihrer Daten sollten Sie Kdb + in Erwägung ziehen, wenn Sie eine Aggregation für Daten wie Zeitreihen durchführen müssen.
Ich habe auch Cassandra zum Speichern von Telemetrie-Daten der Zeitserie ausgewertet. Ich dachte, es wäre perfekt. Allerdings habe ich festgestellt, dass es keine Aggregationsfunktionen gibt. Vielleicht ist das mit Pig und Hive lösbar. Wenn es jedoch eine Lösung gibt, die Datenerfassung, -speicherung und -analyse in einer einzigen Sprache kombiniert, warum sollten Sie das nicht in Erwägung ziehen?
Ich betrachte Cassandra als Speicher-Engine, die die Probleme der Verteilung und Verfügbarkeit gelöst hat und dabei Skalierung und Leistung beibehalten hat. Der Kompromiss ist natürlich Flexibilität und Funktionalität. Es wird immer ein Kompromiss zwischen Funktionalität und Leistung in der Datenbankwelt sein.
Cassandra spielt sehr gut mit Software von Drittanbietern wie Spark. Spark kann sich als sehr hilfreich für Ihren Anwendungsfall erweisen. Es gibt einen Open-Source-Connector Ссылка , der Spark dabei unterstützt, auf Cassandra-Daten basierende Analysen zu finden und auszuführen.
Mit SparkSQL können Sie sowohl Ihre SELECT-Summe als auch die meisten Hive-konformen Abfragen ausführen.
Sie können BENUTZERINDEXEN mit dem Apache Lucene-Plugin in Cassandra erstellen ( Ссылка ) oder Sie können eine andere Software verwenden (Suchmaschinen-Datenspeicher), die Ihrem Zweck wie Elasticsearch ( Ссылка ) entspricht, ist auch skalierbar und Open Source.
Elasticsearch kann auch zusammen mit Kibana zur Datenvisualisierung verwendet werden, basierend auf Ihren aggregierten Daten.
Sieh dir das an
Native Aggregate
Zählen
Mit der Funktion count können die von einer Abfrage zurückgegebenen Zeilen gezählt werden. Beispiel:
%Vor%Es kann auch verwendet werden, um den Nicht-Null-Wert einer bestimmten Spalte zu zählen:
%Vor%Max und Min
Die Max- und Min-Funktionen können verwendet werden, um das Maximum und das Maximum zu berechnen Mindestwert, der von einer Abfrage für eine bestimmte Spalte zurückgegeben wird. Zum Beispiel:
%Vor%Summe
Die Summenfunktion kann verwendet werden, um alle von a zurückgegebenen Werte zu summieren Abfrage für eine bestimmte Spalte. Zum Beispiel:
%Vor%Avg
Mit der Funktion avg kann der Durchschnitt aller Werte berechnet werden zurückgegeben von einer Abfrage für eine bestimmte Spalte. Zum Beispiel:
%Vor%
Sie können auch Ihre eigenen Aggregate erstellen, weitere Dokumentation zu Aggregaten finden Sie hier: Ссылка