OpenSource-Tools für die Unterstützung beim Mining von Streams von Ranglistenwerten


12

Stellen Sie sich einen Stream mit Tupeln vor, (user, new_score) die die Punktzahlen der Benutzer in einem Online-Spiel darstellen. Der Stream könnte 100-1.000 neue Elemente pro Sekunde enthalten. Das Spiel hat 200K bis 300K einzigartige Spieler.

Ich hätte gerne ständige Fragen wie:

  1. Welche Spieler haben mehr als x Punkte in einem Schiebefenster von einer Stunde gepostet?
  2. Welche Spieler haben in einem Schiebefenster von einer Stunde x% Punkte erzielt?

Meine Frage ist, welche Open Source-Tools kann ich verwenden, um dieses Projekt zu starten? Ich denke gerade über Esper nach.

Hinweis: Ich habe gerade das Lesen von "Mining Data Streams" (Kapitel 4 des Mining massiver Datensätze ) abgeschlossen und bin mit dem Mining von Datenströmen noch recht neu.

Antworten:


8

Dies ist keine vollständige Lösung, aber Sie möchten möglicherweise OrientDB als Teil Ihres Stapels betrachten. Orient ist ein Graph-Document-Datenbankserver, der vollständig in Java geschrieben ist.

In Graphendatenbanken werden Beziehungen als Bürger erster Klasse betrachtet, und daher kann das Durchlaufen dieser Beziehungen ziemlich schnell erfolgen. Orient ist auch eine Dokumentendatenbank, die Ihnen die Art von schemafreier Architektur ermöglicht, die Sie benötigen würden. Der wahre Grund, warum ich Orient vorschlage, ist jedoch seine Erweiterbarkeit. Es unterstützt das Streaming über Sockets und die gesamte Datenbank kann in eine andere Anwendung eingebettet werden. Schließlich kann es effizient skaliert werden und / oder vollständig über den Speicher arbeiten. Mit etwas Java-Fachwissen können Sie Ihre voreingestellten Abfragen tatsächlich für die Datenbank im Speicher ausführen.

Wir machen etwas Ähnliches. Bei der Erstellung einer App / Site für die sozialwissenschaftliche Forschungszusammenarbeit stießen wir auf immens komplexe Datenmodelle. Am Ende haben wir einige der Abfragen mit der Gremlin Traversal Language (einer Teilmenge von Groovy, bei der es sich natürlich um Java handelt) geschrieben und diese Abfragen dann über den binären Verbindungsserver der OrientDB verfügbar gemacht. Der Client öffnet also einen TCP-Socket, sendet eine kurze Binärnachricht und die Abfrage wird in Java direkt für die In-Memory-Datenbank ausgeführt.

OrientDB unterstützt auch das Schreiben von Funktionsabfragen in Javascript, und Sie können Node.js verwenden, um direkt mit einer Orient-Instanz zu interagieren.

Für etwas dieser Größe würde ich Orient in Verbindung mit Hadoop oder so etwas verwenden wollen. Sie können Orient auch in Verbindung mit esper verwenden.

Bedenken Sie: Eine Einführung in orient: http://www.sitepoint.com/a-look-at-orientdb-the-graph-document-nosql/

Komplexe Echtzeitabfragen: http://www.gft-blog.com/business-trends/leveraging-real-time-scoring-through-bigdata-to-detect-insurance-fraud/

Eine Diskussion über Streaming-Optionen mit Java und Orient: https://github.com/orientechnologies/orientdb/issues/1227


Danke für den Vorschlag. Ich habe neo4j früher angeschaut, aber nie orientdb. Derzeit kann ich mir keinen großen Nutzen bei der Modellierung von Leadeboard-Daten als Grafik vorstellen, aber ich werde mir weiterhin die Streaming-Optionen in orientdb
Tahir Akhtar

4

Ich habe kürzlich einen sehr guten Artikel gelesen , der vorschlägt, Twitter Storm für eine Aufgabe zu verwenden, die Ihrer ziemlich ähnlich sieht.


Ich habe einige Grundlagen zu Apache Storm gelesen. Es sieht so aus, als ob es um Probleme im Zusammenhang mit der Skalierbarkeit / Zuverlässigkeit der Stream-Verarbeitung geht, sodass Sie die eigentlichen Algorithmen handhaben können. Esper auf der anderen Seite verarbeiten Prozessdaten für Sie basierend auf Ihren Anfragen
Tahir Akhtar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.