大数量情况下如何快速从会员登录数据中筛选出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。
收藏文章数量从多到少与“把书读薄”是一个道理