0

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

我需要每天计算用户数,角色 1 - 456 的用户,角色 2 - 3463 的用户等。

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

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

4

3 回答 3

1

你的想法很好。如果您所需要的只是用户登录数,那很好。我认为在用户登录时保留日志是好的。我了解您不需要跟踪活动。您可以将数据保存在包含用户登录、登录日期等的表中。如果数据太大,请使用 MongoDB 等非关系型数据库或上个月/上年的聚合数据等。我的意思是创建聚合行等(day:2012-08-02, role:Role1, count:123),(day:2012-08-02, role:role2, count:453)。只需保留每天的角色计数并删除“原始”数据。

于 2012-08-02T10:15:46.937 回答
0

我会为这些目的使用一些简单的数据库:我想 SQLite 会适合。

于 2012-08-17T10:13:08.497 回答
0

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

  • 在表中添加一个新的“计数器”列。
  • 创建一个序列。
  • 编写一个触发器,它将在您的表的“更新”时执行。在这个触发器中。
  • 在此触发器中,从序列中获取 NEXTVAL 并更新到“计数器”列。
  • 每天删除此序列并再次创建以重新发送计数器

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

于 2018-04-04T06:19:57.330 回答