2017-07-20 4 views
1

Ist Cassandra eine gute Alternative für Hadoop als Data Warehouse, wo Daten nur angehängt werden und alle Updates in Quellendatenbanken die vorhandenen Zeilen im Data Warehouse nicht überschreiben sollen, sondern angehängt werden. Ist Cassandra wirklich in der Lage, als Data Warehouse oder einfach als Datenbank zu fungieren, um die Ergebnisse von Batch/Stream-Abfragen zu speichern?Cassandra für Datawarehouse

Antwort

1

Cassandra kann sowohl als Data Warehouse (Rohdatenspeicher) als auch als Datenbank (für die Enddatenspeicherung) verwendet werden. Es hängt mehr von den Fällen ab, die Sie mit den Daten machen möchten.
Möglicherweise müssen Sie auch Hadoop und Cassandra für verschiedene Zwecke verwenden.
Angenommen, Sie müssen Daten von mehreren mobilen Geräten erfassen und verarbeiten und dem Benutzer einen komplexen Aggregationsbericht bereitstellen. Also zuerst müssen Sie Daten so schnell wie möglich speichern (da neue Teile sehr oft erscheinen), so dass Sie Cassandra hier verwenden. Da Cassandra in Aggregationsfunktionen eingeschränkt ist, laden Sie Daten in HDFS und führen einige Verarbeitungen über HQL-Skripte durch (nehmen Sie an, Sie sind nicht sehr gut im Codieren, aber in komplizierten SQL-Anweisungen sehr gut). Und dann verschieben Sie die Berichtsergebnisse von HDFS nach Cassandra in einer dedizierten Berichtstabelle, die durch die Benutzer-ID partitioniert ist.
Wenn der Benutzer also einen Aggregationsbericht über seine Aktivität im letzten Monat haben möchte, nimmt die Anwendung die ID des aktiven Benutzers und gibt das aggregierte Ergebnis von Cassandra zurück (da es sich um eine einfache Schlüsselwertsuche handelt).
Also für Ihre Frage, ja, es könnte eine Alternative sein, aber die Auswahlstrategie hängt von den Datentypen und Ihren Anwendungsfällen ab.
Sie können mehr Informationen über die Nutzung von Cassandra lesen here

+0

Sagen wir, ich will jede Änderung in einer Quelldatenbank protokollieren, um die Änderungen, um es sehen Überstunden dann kann Cassandra dort helfen, da seine in erster Linie eine OLTP-Datenbank es die Aktualisierung könnte bestehende Reihe, anstatt für jede Änderung eine neue hinzuzufügen – guru107

+0

Ja, dies ist mit einigen Einschränkungen sinnvoll. Zum Beispiel entspricht jede Cassandra der RDBMS-Zeile. Im Grunde würde Cassandras Befehl "insert" nur die Zeile mit der neuen Spalte anhängen, und das würde gut funktionieren. Angenommen, Ihre Daten werden häufig geändert. Sie möchten also nur einige Änderungen rückgängig machen, aber Sie haben nur eine Zeile mit 10 Millionen Spalten. Wie würdest du den Rollback finden? Sie können auch erwägen, Änderungen nicht nach Zeilen, sondern nach Zeitmarken zu speichern. Aber dann wäre es schwer, die Zeile in der großen Liste der Zeilen zu ändern. –