2017-01-08 3 views
0

Es gibt eine Situation in unseren Systemen, in der der Benutzer einen Bericht anzeigen und "schließen" kann. Nachdem sie geschlossen wurden, wird der Bericht in eine temporäre Tabelle in der Datenbank verschoben, in der er für 24 Stunden aufbewahrt und dann in eine Archivtabelle verschoben wird (in der der Bericht für die nächsten 7 Jahre gespeichert wird). Zu jedem Zeitpunkt während der 7 Jahre kann ein Benutzer den Bericht "öffnen" und daran arbeiten. Das Problem besteht darin, dass der Archivspeicher immer größer wird und dass das Auffinden/Wiedereröffnen von Berichten zeitaufwendig ist. Und ich muss von Zeit zu Zeit Statistiken über die Archive bekommen (d. H. Berichtstermine, Kunden, durchschnittliche Länge "geöffnet", usw.). Ich möchte einen Big-Data-Ansatz verwenden, bin aber nicht sicher, ob ich Hadoop, Cassandra oder etwas anderes verwenden soll. Kann mir jemand eine Anleitung geben, wie ich anfangen und entscheiden kann, was ich benutzen soll?Hadoop vs Cassandra: Was ist besser für das folgende Szenario?

Antwort

0

Wenn Ihr Archiv groß ist und Sie Berichte von ihm erhalten möchten, können Sie nicht nur Cassandra verwenden, da es keine einfache Möglichkeit gibt, die Daten zu aggregieren. Am Ende werden Sie Hadoop und Cassandra auf denselben Knoten zusammenstellen.

Aus meinen Erfahrungsarchiven (einmal schreiben - viele lesen) ist nicht der beste Anwendungsfall für Cassandra, wenn Sie viele Schreibvorgänge haben (wir haben es für ein Backend für ein Backup-System versucht). Abhängig von Ihrer Verdichtungsstrategie zahlen Sie entweder im Weltraum oder in iops dafür. Hinzugefügte Änderungen werden über die SSTable-Hierarchien weitergegeben, was zu viel mehr Schreibvorgängen als die ursprüngliche Änderung führt.

Es ist nicht möglich, Ihre Frage vollständig zu beantworten, ohne andere Variablen zu kennen: Wie viel Hardware (Server, ihre RAM/CPU/HDD/SSD) werden Sie zuweisen? Wie groß ist der Eintrag für jeden Bericht? Wie viele Lese-/Schreibvorgänge haben Sie normalerweise täglich? Wie groß ist Ihr Archivspeicher jetzt?

0

Cassandra könnte gut funktionieren. Behalte zwei Tabellen, Berichte und reports_archive. Definieren Sie das Schema eines TTL von 24 Stunden und 7 Jahre using:

CREATE TABLE reports (
    ... 
) WITH default_time_to_live = 86400; 

CREATE TABLE reports_archive (
    ... 
) WITH default_time_to_live = 86400 * 365 * 7; 

Verwenden Sie die neue Zeitfenster Verdichtungsstrategie (TWC) Write Amplification zu minimieren. Es könnte vorteilhaft sein, die Berichtsmetadaten zu speichern und binäre Daten in separaten Tabellen zu melden.

Verwenden Sie für Roll-up-Analysen Spark mit Cassandra. Sie erwähnen nicht die Größe Ihrer Daten, aber ungefähr 1-3 TB pro Cassandra-Knoten sollten gut funktionieren. Mit RF = 3 benötigen Sie mindestens drei Knoten.

Verwandte Themen