Інструменти з відкритих джерел для допомоги у видобутку потоку балів лідерів


12

Розглянемо потік, що містить кортежі, що (user, new_score) представляють результати користувачів в онлайн-грі. Потік може мати 100-1000 нових елементів в секунду. У грі є 200K до 300K унікальних гравців.

Я хотів би мати кілька постійних запитів, таких як:

  1. Котрі гравці розміщували більше x балів у розсувному вікні години
  2. Які гравці набрали х% балів у розсувному вікні на одну годину

Моє запитання - які інструменти з відкритим кодом я можу використати для початку проекту? Я зараз розглядаю Еспер .

Примітка. Я щойно закінчив читати "Майнінг потоків даних" (глава 4 видобутку масивних наборів даних ), і я зовсім новачок у видобутку потоків даних.

Відповіді:


8

Це не повне рішення, але ви, можливо, захочете заглянути в OrientDB як частину свого стеку. Orient - сервер баз даних Graph-Document, повністю написаний на Java.

У графічних базах даних відносини вважаються громадянами першого класу, і тому проходження цих відносин можна зробити досить швидко. Orient - це також база даних документів, яка б дозволила вам створити архітектуру без схем, як це вам потрібно. Однак, я припускаю, що Схід орієнтується на те, що він орієнтується на його розширеність. Він підтримує потокове передача через сокети, і всю базу даних можна вбудувати в іншу програму. Нарешті, її можна ефективно масштабувати та / або працювати цілком через пам'ять. Отже, маючи певну експертизу Java, ви можете реально запускати задані запити проти бази даних у пам'яті.

Ми робимо щось подібне. Створюючи додаток / сайт для співпраці з науково-дослідницької роботи в суспільстві, ми опинилися з надзвичайно складними моделями даних. Ми закінчили написання декількох запитів за допомогою Gremlin Traversal Language (підмножина Groovy, яка, звичайно, є Java в основі), а потім викривши ці запити через сервер бінарних з'єднань OrientDB. Отже, клієнт відкриває сокет TCP, відправляє коротке двійкове повідомлення, а запит виконується на Java безпосередньо проти бази даних в пам'яті.

OrientDB також підтримує запити функцій запису в Javascript, і ви можете використовувати Node.js для взаємодії безпосередньо з екземпляром Orient.

Для чогось такого розміру я хотів би використовувати Orient спільно з Hadoop або щось подібне. Ви також можете використовувати Orient спільно з ефіром.

Розглянемо: вступ до орієнтування: 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/isissue/1227


Дякую за пропозицію. Я раніше дивився на neo4j, але ніколи в orientdb. В даний час я не можу передбачити великої користі в моделюванні даних лінійної дошки у вигляді графіка, але я все одно буду дивитись на параметри потоку в orientdb
Тахір Ахтар,

4

Нещодавно я прочитав дуже гарну статтю, яка пропонує використовувати штурм Twitter для завдання, схожого на ваше.


Я читав основи про Apache Storm, схоже, це хвилює проблеми, пов’язані зі масштабованістю / надійністю обробки потоків, залишаючи вам обробляти фактичні алгоритми. Esper на іншій обробці даних обробляють для вас на основі ваших запитів
Tahir Akhtar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.