1
ong 2014-11-20 22:28:24 +08:00 via iPhone
思路基本正确
难度在流水数据 可以根据业务分表,比如按appid或日期 留存数据的持久化拆不拆看业务 |
2
lshero 2014-11-20 23:34:07 +08:00
只用Postgres+Redis 做过
Redis做计数器 用用你需要统计的最小粒度做key 次日读取当天计数器内所有计数器key对应的数值然后丢给postgresql进行聚合获得当日的数据,因为有计数器所以Postgresql基本都没有执行过count UID是一个哈希值,按照UID前一位对用户表进行表分区,分了16份 离职前用户数据在2亿左右 不过缺点也是很明显,主要都是用的计数器所以只能知道当天的数字但是数字后面具体对应的列表也没有做,再加上用拍黄片这种最好的语言在我的能力范围内对分析数据也没有是什么特别的能力,所以也没有继续完善 要是用户数量不多的话你可以直接用 https://count.ly/ |
3
akira 2014-11-21 20:06:06 +08:00
用一个表统计出每日的各渠道各版本的数据,包括登录人数,次日留存人数等。
需要查看单一渠道/版本的数据的时候,根据上面那个表去获取数据计算出结果(DAU/DNU/次留等)就可以了。 |
4
panlijohn 2014-12-16 10:15:50 +08:00
楼主,我觉得你的思路是没有问题的。做一个JOB定期做任务,例如每天凌晨。将你需要的1-7日,14日,30日数据计算,然后插入一张目标表,例如tar_tbl。至于你后面所说的,计算很麻烦,实际不麻烦啊。复杂点的话,你利用报表工具,一个groupby就能出来。简单的话,你excel直接导出数据,数据透视表也能解决。(你用这种思路,去实现一下,如果你的groupby 后面的数据量极大,以及机器性能不是特别好,一张报表的查询需要耗时1分钟及以上。你可以将group by这个动作放到定期任务里,将计算过的数据,放到不同维度的表中。就是先group by 然后insert into tar_tbl1.然后通过简单的查询从tar_tbl1中取数据。)
|