监视应用程序的用户活动

时间:2012-08-02 10:04:52

标签: java mysql

我有一个java应用程序。我的应用程序有'n'个用户,有3种角色(r1,r2和r3)。我需要用户的每日使用情况报告。换句话说,我需要找到每天使用我的应用程序的用户数(按角色)。

我需要每天用户数,因为, role1的用户 - 456, role2的用户 - 3463等。

我该怎么做?我打算将用户登录日期存储在单独的表中。这样我就可以按日期轻松计算用户数量。但是数据库中这些数据所需的存储空间可能太高了。

任何人都可以建议我上述过程是否是一种有效的方式,或者是否有任何预定义(开源或付费)工具来跟踪用户数量(按角色)和活动。或者还有其他有效的方法吗?

2 个答案:

答案 0 :(得分:1)

你的想法很好。如果你需要的只是用户登录计数那么好。我认为在用户登录时保留日志是好的。我知道您不需要跟踪活动。您可以使用用户登录,登录日期等将数据保存在表中。如果数据过大,请使用MongoDB等非关联数据库或上个月/年的汇总数据等。我的意思是创建聚合行,如{{1}只需保留每天的角色数量并删除“原始”数据。

答案 1 :(得分:0)

如果您确定基于3个(或更多)角色只需要计数,那么我建议以下方法可以节省大量空间。 (假设它是Oracle数据库)

  • 在表格中添加新的“计数器”列。
  • 创建序列。
  • 编写一个触发器,该触发器将在您的表的'update'上执行。在此触发器中。
  • 在此触发器中,从序列中获取NEXTVAL并更新为“计数器”列。
  • 每日删除此序列并再次创建以重新发送计数器

在这种方法中,您只有等于角色数量的行。在删除序列之前,检索每个角色的“计数器”值,然后将其删除以重置。您可以进一步自动化整个过程。