我正在寻找一些指针来改进以下问题的解决方案。尽管我正在使用 Unix 工具链,但我更喜欢通用方法而不是实现。
开始了:
应该记录对网站的每次访问,并且业务用户应该能够近乎实时地报告它(可以接受 5 分钟的延迟)。报告将按用户或时间段或两者的组合进行过滤。
匿名用户访问也会被记录,一旦匿名用户登录,登录前的信息应与注册用户相关联。
我想记录每个页面访问(GET 或 POST)以及任何参数和时间戳。
报告要求是:“告诉我用户 ID 1 在上午 11:15 到上午 11:18 之间做了什么”
响应应该是:
- 11:15:23,他来到了首页。
- 11:15:49 他去了关于我们的页面。
- 11:16:23,他进入登录页面。
- 在 11:16:34,他尝试使用用户名“hacked”登录。
- 11:16:38 登录请求失败 - 用户名/密码不正确
- 在 11:16:45,他使用用户名“myuser”登录
- 11:17:12,他去了产品页面。
一种解决方案是使用会话 ID 作为主键和帐户 ID 以及请求数据将所有这些插入到数据库中。
为了不让数据库陷入困境,在两者之间插入一个消息队列并延迟对数据库的写入。
但是,由于数据库中的数据量很大,报告可能很快就会变慢。
我知道诸如woopra之类的解决方案- 但是我想在内部保留访问者数据,并且还喜欢通过基于内部角色的数据访问等进行内部报告的想法。
编辑:你过去是怎么做这样的事情的,或者如果你有一个完整的选择,你会怎么做?