分享开源一个 Python 写的百万数据的排行系统

2014-08-18 09:49:35 +08:00
 lianghui

Leaf

Leaf is a Leaderboard system that helps you rank million user data.

项目已经完成基本功能,但还是有比较多bug。 项目是为了建立一个可复用抽象的排行系统模块。

现在支持分布式定时任务,mysql直排和三种有效的桶排。将来将会集成多数据库支持。

项目地址: https://github.com/thomashuang/Leaf

Design

In system, supporting two leaderboard ways, one is ranking by score DESC,the same score has the same rank; another is 'dense' that ranks by score DESC, entry id ASC, the same score has diffrent rank order by entry id ASC.

In leaderboard attribute 'adapter', has four values ('base', 'bucket', 'block', 'chunk'), they are four leaderboard algorithms, but the kernel algorithm is bucket sort algorithm.

.. note:: When you don't use base adapter to rank leaderboard, you shuld set cron to fresh the bucket table

Base MySQL SQL

When set leaderboard adapter to 'base', the system will use the MySQL SQL, realtime sort the entries.
It suits for small data leaderboard that less 10k data.

Score Bucket

When set leaderboard adapter to 'bucket', it will summary user count by score to help rank your leaderboard.

Block Bucket

When set leaderboard adapter to 'block', it will summary user's conunt by a static scoce grap, like score block [0-100], [101-200]…,
it can be used to rank the user score histgram is steady and smooth.

Chunk Bucket

When set leaderboard adapter to 'chunk', unlike block algorithm using a static score grap, but is dynamic score grap that makes sure user's count between a suitable range like (5000, 10000]

2836 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/128482

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX