大数量情况下如何快速从会员登录数据中筛选出5天内连续3天登录的会员

库表

  user_login_log表中核心字段:user_id、login_date  

处理方式:

  1、大数据处理【数据人员】:通常情况下会把user_login_log表同步到大数据平台,又由数据同事进行处理“5天内连续3天登录的会员”数据,再由大数据平台同步到业务库表。

  2、定时任务轮训【服务端人员】:轮训前5天登录过的会员,在分配对会员进行汇总查询“连续3天登录”的会员数据

优化方案

  Bit数组:

    • 初始化5个(代表五天)byte数组,每个数组长度为会员总数据大小(1亿),例如,Byte[] bytes = new Byte[100000000];
    • 初始化会员登录数据,根据5天时间,填充5个byte数组,如果会员当前登陆了,则找到对应日期的byte数组,再根据会员id,把指定index改为1;
    • 循环5个byte数据,判断是否有连续3天登录的index,找到index后,根据index查找对应会员id。

            

 

posted @ 2024-06-03 15:28  使用D  阅读(3)  评论(0编辑  收藏  举报