实时排名算法简单分析

需求分析

排名这个需求在比较多的项目中都有出现过,大家对此都不会感到太陌生,排名需要满足一下需求:
1查询用户所在的名次。
2查询前N名的用户。
3实时排名。

解决的办法有:

一数据库解决方案
  1. 单表操作
    mysql使用limit ,SqlServer使用top,单表操作就让数据帮我们进行操作,简便,但是缺点也是明显的,当数据量大时,数据库的IO读写会出现严重的性能问题。
  2. 分库分表操作
    分库分表后没法实现关联查询,而且数据分布在好几个库/表中,那就需要把数据合并。效率低和实现起来比较麻烦。
二排名算法
  1. 根据N个用户建立长度为N的排名对象数组,然后使用一个常用的排序算法,当有新的用户加入进来,重新排序。数据量少时使用还是可以的,当数据量大,程序所占用的内存会大,影响实时排序的效率。
  2. 换一个角度想,我们在一个具体的积分下有多少个用户。所以下面根据积分范围创建平衡二叉树在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值