Lider tahtası puanlarının madencilik akışında yardım için açık kaynak araçları


12

Çevrimiçi bir oyunda kullanıcıların puanlarını temsil eden tuples içeren bir akış düşünün (user, new_score). Akışın saniyede 100-1.000 yeni öğesi olabilir. Oyun 200K - 300K eşsiz oyunculara sahiptir.

Ben gibi bazı ayakta sorguları istiyorum:

  1. Hangi oyuncular bir saatlik sürgülü pencerede x'ten fazla skor yayınladı
  2. Hangi oyuncular bir saatlik sürgülü pencerede% x puan kazandı

Sorum şu: Bu projeyi hızlı bir şekilde başlatmak için hangi açık kaynak araçlarını kullanabilirim? Şu anda Esper'i düşünüyorum .

Not: "Madencilik Veri Akışları" ( Devasa Veri Kümeleri Madenciliği bölüm 4) okumayı tamamladım ve veri akışları madenciliği konusunda oldukça yeniyim.

Yanıtlar:


8

Bu tam bir çözüm değildir, ancak yığınızın bir parçası olarak OrientDB'ye bakmak isteyebilirsiniz . Orient, tamamen Java ile yazılmış bir Graph-Document veritabanı sunucusudur.

Grafik veritabanlarında, ilişkiler birinci sınıf vatandaşlar olarak kabul edilir ve bu nedenle bu ilişkilerin üzerinden geçmek oldukça hızlı bir şekilde yapılabilir. Orient ayrıca, ihtiyacınız olduğu gibi göründüğü şema içermeyen mimariye izin veren bir belge veritabanıdır. Bununla birlikte, Orient'i önermemin gerçek nedeni, genişletilebilirliğinden kaynaklanıyor. Soketler aracılığıyla akışı destekler ve tüm veritabanı başka bir uygulamaya gömülebilir. Son olarak, verimli bir şekilde ölçeklendirilebilir ve / veya tamamen bellek üzerinden çalışabilir. Bu nedenle, bazı Java uzmanlığıyla, önceden ayarlanmış sorgularınızı bellekteki veritabanında çalıştırabilirsiniz.

Benzer bir şey yapıyoruz. Sosyal bilim araştırma işbirliği için bir uygulama / site oluştururken, kendimizi son derece karmaşık veri modelleri ile bulduk. Gremlin Geçiş Dili'ni (elbette kalbinde Java olan bir alt grup olan Groovy'yi) kullanarak birkaç sorguyu yazdık ve ardından bu sorguları OrientDB'nin ikili bağlantı sunucusu aracılığıyla açtık. Böylece, istemci bir TCP soketi açar, kısa bir ikili ileti gönderir ve sorgu Java'da doğrudan bellek içi veritabanına karşı yürütülür.

OrientDB ayrıca Javascript'te işlev sorguları yazmayı destekler ve doğrudan bir Orient örneğiyle etkileşim kurmak için Node.js'yi kullanabilirsiniz.

Bu boyuttaki bir şey için Orient'i Hadoop veya bunun gibi bir şeyle birlikte kullanmak istiyorum. Orient'i esper ile birlikte de kullanabilirsiniz.

Şunu düşünün: Yönlendirmeye giriş: http://www.sitepoint.com/a-look-at-orientdb-the-graph-document-nosql/

Karmaşık, gerçek zamanlı sorgular: http://www.gft-blog.com/business-trends/leveraging-real-time-scoring-through-bigdata-to-detect-insurance-fraud/

Java ve orient ile akış seçenekleri hakkında bir tartışma: https://github.com/orientechnologies/orientdb/issues/1227


Önerin için teşekkürler. Daha önce neo4j'e baktım ama asla orientdb'ye bakmadım. Şu anda leadeboard verilerinin grafik olarak modellenmesinde pek çok fayda öngöremiyorum ama yine de orientdb'deki akış seçeneklerine bakacağım
Tahir Akhtar

4

Son zamanlarda sizinkine oldukça benzeyen bir görev için Twitter fırtınasının kullanılmasını öneren çok iyi bir makale okudum .


Apache Storm hakkında bazı temel bilgiler okudum, akış işlemenin ölçeklenebilirliği / güvenilirliği ile ilgili konularla ilgili gibi görünüyor, sizi gerçek algoritmaları işlemeye bırakıyor. Sorgularınıza dayanarak sizin için diğer tanıtıcı işlem verilerini Esper
Tahir Akhtar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.