เครื่องมือ Opensource สำหรับความช่วยเหลือในการขุดคะแนนกระดานผู้นำ


12

พิจารณาสตรีมที่มีtuples ซึ่ง (user, new_score)แสดงคะแนนของผู้ใช้ในเกมออนไลน์ สตรีมสามารถมีองค์ประกอบใหม่ 100-1,000 รายการต่อวินาที เกมดังกล่าวมีผู้เล่นที่ไม่ซ้ำกัน 200K ถึง 300K

ฉันต้องการมีข้อความค้นหาที่ยืนอยู่เช่น:

  1. ผู้เล่นคนใดโพสต์คะแนนมากกว่า x ในหน้าต่างบานเลื่อนหนึ่งชั่วโมง
  2. ผู้เล่นคนใดที่ได้คะแนน x% ในหน้าต่างบานเลื่อนหนึ่งชั่วโมง

คำถามของฉันคือเครื่องมือโอเพนซอร์สที่ฉันสามารถใช้เพื่อเริ่มต้นโครงการนี้ได้อย่างไร ฉันกำลังพิจารณาEsperในขณะนี้

หมายเหตุ: ฉันเพิ่งเสร็จสิ้นการอ่าน "Mining Data Streams" (ตอนที่ 4 ของการขุดชุดข้อมูลขนาดใหญ่ ) และฉันค่อนข้างใหม่สำหรับการขุดกระแสข้อมูล

คำตอบ:


8

นี่ไม่ใช่วิธีการแก้ปัญหาที่สมบูรณ์ แต่คุณอาจต้องการค้นหาOrientDBเป็นส่วนหนึ่งของสแต็กของคุณ Orient เป็นเซิร์ฟเวอร์ฐานข้อมูลกราฟ - เอกสารที่เขียนด้วยภาษาจาวาทั้งหมด

ในฐานข้อมูลกราฟความสัมพันธ์ถือเป็นพลเมืองชั้นหนึ่งดังนั้นการสำรวจความสัมพันธ์เหล่านั้นสามารถทำได้อย่างรวดเร็ว Orient ยังเป็นฐานข้อมูลเอกสารที่จะช่วยให้คุณมีสถาปัตยกรรมที่ปราศจาก schema ซึ่งดูเหมือนว่าคุณต้องการ อย่างไรก็ตามเหตุผลที่แท้จริงที่ฉันแนะนำให้โอเรียนท์นั้นเป็นเพราะความสามารถในการขยายตัวของมัน รองรับการสตรีมผ่านซ็อกเก็ตและฐานข้อมูลทั้งหมดสามารถฝังลงในแอปพลิเคชันอื่น ในที่สุดมันสามารถปรับขนาดได้อย่างมีประสิทธิภาพและ / หรือสามารถทำงานได้อย่างสมบูรณ์ผ่านหน่วยความจำ ดังนั้นด้วยความเชี่ยวชาญของ Java คุณสามารถเรียกใช้คิวรีที่ตั้งไว้ล่วงหน้าของคุณกับฐานข้อมูลในหน่วยความจำ

เรากำลังทำสิ่งที่คล้ายกัน ในการสร้างแอพ / ไซต์สำหรับการทำงานร่วมกันในการวิจัยทางสังคมศาสตร์เราพบว่าตัวเรามีรูปแบบข้อมูลที่ซับซ้อนอย่างมาก เราลงเอยด้วยการเขียนแบบสอบถามหลายข้อโดยใช้ภาษา Gremlin Traversal (ส่วนย่อยของ Groovy ซึ่งแน่นอนว่า Java เป็นหัวใจของมัน) จากนั้นจึงเปิดเผยข้อความค้นหาเหล่านั้นผ่านเซิร์ฟเวอร์การเชื่อมต่อไบนารีของ OrientDB ดังนั้นไคลเอ็นต์จะเปิดซ็อกเก็ต TCP ส่งข้อความไบนารีสั้น ๆ และแบบสอบถามกำลังดำเนินการใน Java โดยตรงกับฐานข้อมูลในหน่วยความจำ

OrientDB ยังรองรับการเขียนแบบสอบถามฟังก์ชันใน Javascript และคุณสามารถใช้ Node.js เพื่อโต้ตอบโดยตรงกับอินสแตนซ์ Orient

สำหรับขนาดนี้ฉันต้องการใช้ Orient ร่วมกับ Hadoop หรืออะไรทำนองนั้น นอกจากนี้คุณยังสามารถใช้ Orient ร่วมกับ 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 stormสำหรับงานที่มีลักษณะคล้ายกับของคุณ


ฉันได้อ่านพื้นฐานเกี่ยวกับ Apache Storm แล้วดูเหมือนว่ามันเกี่ยวข้องกับปัญหาที่เกี่ยวข้องกับความสามารถในการปรับขนาด / ความน่าเชื่อถือของการประมวลผลสตรีมทำให้คุณจัดการกับอัลกอริทึมที่แท้จริง Esper บนข้อมูลกระบวนการจัดการอื่น ๆ สำหรับคุณตามการสืบค้นของคุณ
Tahir Akhtar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.