Leaf is a Leaderboard system that helps you rank million user data.
项目已经完成基本功能,但还是有比较多bug。 项目是为了建立一个可复用抽象的排行系统模块。
现在支持分布式定时任务,mysql直排和三种有效的桶排。将来将会集成多数据库支持。
项目地址: https://github.com/thomashuang/Leaf
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
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.
When set leaderboard adapter to 'bucket', it will summary user count by score to help rank your leaderboard.
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.
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]