Algorithm 管理每个用户访问日志的最佳方法是什么?

Algorithm 管理每个用户访问日志的最佳方法是什么?,algorithm,logging,Algorithm,Logging,我想知道用户登录服务的历史记录。 我只是想看看用户每天、每周和每月登录的频率 目前,用户ID和连接时间存储在DB表中 不必要的排长队 如果还有其他好方法,请参考 感谢您的关注。用夸张的语言表达的解决方案: 您必须为每个用户保留两个数据项: TimeStamp firstLoginOf(user_id) : returns time stamp of first login for given user Integer totalLoginsOf(user_id) : returns total

我想知道用户登录服务的历史记录。 我只是想看看用户每天、每周和每月登录的频率

目前,用户ID和连接时间存储在DB表中

不必要的排长队

如果还有其他好方法,请参考


感谢您的关注。

用夸张的语言表达的解决方案:

您必须为每个用户保留两个数据项:

TimeStamp firstLoginOf(user_id) : returns time stamp of first login for given user
Integer totalLoginsOf(user_id)  : returns total number of logins for given user
数据必须存储在文件或数据库中,并按用户id编制索引。 每当相应的用户登录时,总登录数就会增加

然后,您可以按如下方式计算所需的数据:

Float loginsPerDay(user_id) {
    return totalLoginsOf(user_id) / asDays( now() - firstLoginOf(user_id) )
}

Float loginsPerWeek(user_id) {
    return totalLoginsOf(user_id) / asWeeks( now() - firstLoginOf(user_id) )
}

Float loginsPerMonth(user_id) {
    return totalLoginsOf(user_id) / asMonths( now() - firstLoginOf(user_id) )
}

你所说的“不必要地排得太长”是什么意思?使用DB听起来很合理。@whdals0:所以您需要每天、每周和每月登录的平均值,对吗?@MrSmith42数据以N*3的形式叠加。(seq,userid,time)。“我想知道是否有一种更有效的方法。”格雷戈洛菲不一般。我想检查每个用户的登录数据。哦,我想,你的方法太棒了。谢谢你,格雷戈。