开源工具,可帮助挖掘排行榜得分流


12

考虑一个包含表示在线游戏中用户分数的元组 的流(user, new_score)。该流每秒可能有100-1,000个新元素。该游戏有200K至300K独特的玩家。

我想提出一些长期的要求,例如:

  1. 哪些玩家在一小时的滑动窗口中发布了超过x的分数
  2. 哪些玩家在一小时的滑动窗口中获得了x%分数

我的问题是我可以使用哪些开源工具来启动该项目?我目前正在考虑Esper

注意:我刚刚阅读完“挖掘数据流”(挖掘大量数据集的第4章),并且对挖掘数据流还很陌生。

Answers:


8

这不是一个完整的解决方案,但是您可能希望将OrientDB作为堆栈的一部分。Orient是完全用Java编写的Graph-Document数据库服务器。

在图形数据库中,关系被视为头等公民,因此遍历这些关系可以很快完成。Orient还是一个文档数据库,它将使您听起来像您需要的那种无模式的体系结构。我建议Orient的真正原因是因为它的可扩展性。它支持通过套接字进行流传输,并且整个数据库可以嵌入到另一个应用程序中。最后,它可以有效地扩展和/或可以完全通过内存工作。因此,借助一些Java专业知识,您实际上可以对内存中的数据库运行预设查询。

我们正在做类似的事情。在创建用于社会科学研究合作的应用程序/网站时,我们发现自己拥有非常复杂的数据模型。我们最终使用Gremlin遍历语言(Groovy的子集,当然,它是Java的核心)编写了几个查询,然后通过OrientDB的二进制连接服务器公开了这些查询。因此,客户端打开一个TCP套接字,发送一条简短的二进制消息,并且查询直接在Java中针对内存数据库执行。

OrientDB还支持使用Javascript编写函数查询,并且您可以使用Node.js直接与Orient实例进行交互。

对于这种大小的东西,我想将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和Orient的流式传输选项的讨论:https : //github.com/orientechnologies/orientdb/issues/1227


谢谢你的建议。我之前看过neo4j,但从未看过orientdb。目前,我无法在将排行榜数据建模为图表方面带来很多好处,但我仍将关注orientdb中的流式传输选项
Tahir Akhtar

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.