我有一个包含大约 5000 万行的请求数据的大型数据库表,类似于 Apache 请求日志:
request_url
user_agent
created
包含这样的数据:
/profile/Billy
Mozilla.....
2012-06-17...
/profile/Jane
Mozilla.....
2012-06-17...
然后我有我的用户数据库表,其中包含我的所有用户数据,包括用户名。
目前,每天晚上,我都会逐行处理前一天的请求数据,并查看它是否包含与 users 表中的一个用户名匹配的 URL。如果是这样,我会在另一个存储统计信息的表中增加总数,这些统计信息允许用户查看他们在任何特定日期获得了多少网页浏览量。
然而,随着数据集的增长,这将变得资源密集,并且也可能需要很长时间才能完成,即使按 URL 对请求数据进行分组并获取该组的计数也是如此。
有没有更好的方法来处理这些信息以获得我需要的最终结果?无论如何都会记录请求数据,因此最好在事后生成统计信息,而不是在每个页面视图上增加总数。
我在一台服务器上运行它,因此不需要在多台服务器上对数据进行分布式处理。