リーダーボードスコアのストリームのマイニングに役立つオープンソースツール


12

オンラインゲームでのユーザーのスコアを表すタプル を含むストリームについて考え(user, new_score)ます。ストリームは、毎秒100〜1,000の新しい要素を持つことができます。ゲームには20万人から30万人のユニークプレイヤーがいます。

次のような永続的なクエリが欲しいのですが。

  1. 1時間のスライディングウィンドウでxを超えるスコアを投稿したプレーヤー
  2. 1時間のスライディングウィンドウでx%のスコアを獲得したプレーヤー

私の質問は、このプロジェクトを迅速に開始するために使用できるオープンソースツールは何ですか?現在、エスパーを検討しています。

注:「マイニングデータストリーム」(大規模データセットマイニングの第4章)を読み終えたばかりで、データストリームのマイニングはまったく初めてです。

回答:


8

これは完全なソリューションではありませんが、スタックの一部としてOrientDBを調べることをお勧めします。オリエントは完全にJavaで書かれたグラフドキュメントデータベースサーバーです。

グラフデータベースでは、関係はファーストクラスの市民と見なされるため、それらの関係のトラバースはかなり迅速に実行できます。オリエントはまた、必要なように聞こえるようなスキーマフリーのアーキテクチャを可能にするドキュメントデータベースでもあります。ただし、Orientを提案する本当の理由は、その拡張性にあります。ソケット経由のストリーミングをサポートし、データベース全体を別のアプリケーションに埋め込むことができます。最後に、効率的にスケーリングしたり、メモリ全体を使用したりできます。したがって、Javaに関する専門知識があれば、メモリ内のデータベースに対して実際に事前設定されたクエリを実行できます。

同様のことをしています。社会科学研究のコラボレーションのためのアプリ/サイトを作成するにあたり、私たちは非常に複雑なデータモデルを見つけました。最終的には、Gremlin Traversal Language(Groovyのサブセットであり、Javaは中心にある)を使用していくつかのクエリを記述し、OrientDBのバイナリ接続サーバーを介してそれらのクエリを公開しました。したがって、クライアントはTCPソケットを開き、短いバイナリメッセージを送信し、クエリはJavaでメモリ内データベースに対して直接実行されます。

また、OrientDBはJavaScriptでの関数クエリの作成をサポートしており、Node.jsを使用して、Orientインスタンスと直接対話することができます。

このサイズのものについては、私はオリエントをHadoopなどと組み合わせて使用​​したいと思います。オリエントをesperと組み合わせて使用​​することもできます。

検討:オリエントの紹介:http : //www.sitepoint.com/a-look-at-orientdb-the-graph-document-nosql/

複雑なリアルタイムクエリ:http : //www.gft-blog.com/business-trends/leveraging-real-time-scoring-through-bigdata-to-detect-insurance-fraud/

Javaとオリエントのストリーミングオプションに関するディスカッション:https : //github.com/orientechnologies/orientdb/issues/1227


提案をありがとう。私は以前にneo4jを見てきましたが、orientdbを見たことはありません。現在、リードボードデータをグラフとしてモデル化することで多くの利点を想像することはできませんが、それでもorientdbのストリーミングオプションを見ていきます
Tahir Akhtar

4

最近、Twitterストームを使用してあなたのタスクによく似たタスクを提案する非常に優れた記事を読みました。


Apache Stormに関するいくつかの基本を読みましたが、ストリーム処理のスケーラビリティ/信頼性に関連する問題が懸念されているため、実際のアルゴリズムを処理する必要があります。クエリに基づいてプロセスデータを処理する他の方法についてエスパー
Tahir Akhtar 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.