Laravel生产用户统计一样的DAU和毛斯

时间:2019-01-31 09:39:41

标签: laravel

我使用Laravel 5.7与内置的用户认证。我希望能够产生每日和每月活跃用户等指标。

我将使用一个事件监听器上登录保存数据,但我不知道是什么造成这种情况的最佳做法是在如何存储信息方面,因为我在努力寻找这些信息或教程。

选项1:UserLogins表

我考虑添加表UserLogins与2列:user_idlogin_date。后者将是DATETIME柱。然后,每次用户登录时,都会向该表添加一行。从那里我可以生成指标。

此方法的缺点是随着时间的流逝,表可能会变得非常大。

选项2:统计信息表

我已经为每个用户登录时保存了他们的last_login_date。使用此功能,我可以设置2个计划的流程,以每天和每月运行。这些过程计算DAU和MAU并将这些统计信息保存在表中。

此方法的缺点是,我不会有原始数据了。该数据可以是在未来是有用的。

我肯定有一些最佳实践,因为许多公司都需要这些指标。任何提示将不胜感激!

1 个答案:

答案 0 :(得分:0)

好问题!这确实取决于您的用例,但我可能会选择选项1

假设您选择了选项2 ,并且在users表中有一个last_login_at字段。

请考虑以下情形:您对营销团队有新的要求。他们想知道客户登录的位置,或者他们想知道使用的设备。

您需要将所有其他必需信息保存在users表中。您还将只保存最后一个已知的度量,并且将依赖cron作业将此数据保存到其他位置。如果您考虑一下,它的伸缩性不是很好。每次需要一个新字段时,都必须修改cron作业以适应它。

考虑第二种情况。在具有敏感性质的应用程序中,最好举一个标志,例如,如果您从一个无法识别的位置检测到登录名。通过将所有登录活动保存在专用表中,您可以轻松判断位置与上次用户登录后是否已更改。

使用选项1 ,您可以拥有一个user_logins表,该表可以跟踪所有这些信息。添加新字段也不会很麻烦。由于所有这些信息都驻留在单个表中,因此登录活动的查询/报告也将更加容易。

执行诸如“月度活跃用户”和“每日活跃用户”之类的查询仍然可以在适当的索引等情况下执行良好。 。