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
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?
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.
- 1. SAS für das folgende Szenario
- 2. Bestes Entwurfsmuster für das folgende Szenario
- 3. DB-Benchmarks: Cassandra vs. BigTable vs. Hadoop
- 4. Szenario vs. Szenario Gliederung
- 5. Docker Compose vs. Dockerfile - was ist besser?
- 6. heroku vs openshift was ist besser PaaS?
- 7. accdb vs mdb. Was ist schneller/besser?
- 8. dict() vs {} in Python was ist besser?
- 9. dict() vs {} in Python was ist besser?
- 10. Projektreferenz vs. DLL Referenz - Was ist besser?
- 11. Was ist besser? private static vs privaten
- 12. Was ist besser: Wählen Sie vs Threads?
- 13. Wie wird die Konvertierung für das folgende Szenario durchgeführt?
- 14. So erstellen Sie die Hibernate-Zuordnung für das folgende Szenario
- 15. Wie schreibe ich eine einzelne Abfrage für das folgende Szenario?
- 16. SAS für Szenario folgende (häufigster Beobachtung)
- 17. WPF Rectangle vs Border: Was ist besser für die Leistung?
- 18. Was ist besser für eine Abhängigkeit: Web Service vs XML?
- 19. XEmacs vs Emacs was ist besser für die Programmierung C++
- 20. Was ist das wichtigste Szenario Socket.IO
- 21. python isinstance vs hasattr vs versuchen/außer: Was ist besser?
- 22. Was ist ein typisches Szenario für das Design von Endbenutzerberichten?
- 23. MongoDB Normalisierung vs Denormalisierung für mein Szenario
- 24. Singleton Pattern - was ist besser?
- 25. PiG + Cassandra + Hadoop
- 26. Hadoop auf Cassandra-Datenbank
- 27. Was ist die erwartete Trainingszeit für das folgende Seq2Seq-Modell?
- 28. Was ist das Batch-Limit in Cassandra?
- 29. Casting (int?) Null vs. new int?() - Was ist besser?
- 30. String Ereignisse vs Klassen Ereignisse in L5.2, was ist besser?