我打算将我的squid实例记录到mongodb,但实际问题是我们要记录大量流量,每次访问都使用user / pass进行身份验证。最终我们必须根据日志制作一些报告。我想插入按月和用户分发的日志,所以我的收藏将如下所示:
{month: 'april', users: [{user: 'loop0', logs: [{timestamp: 12345678.9, url: 'http://stackoverflow.com/question/ask', ... }]}]
因此,如果我想根据4月份生成报告,我只需要获得正确的月份,而不是查看数以万计的行来获取4月1日和4月30日之间时间戳匹配的行。
当然这种类型的插入比直接插入日志行要慢。所以我的问题是:有最佳方法吗?
现在我们每天有大约1200万行日志。
答案 0 :(得分:0)
在不知道细节的情况下很难分辨,但我会说你可能会担心错误的问题:你正在考虑插入速度而不是报告计算速度。
Mongo整天都在存储这1200万条记录,但您可能希望报告 - 可能包含5亿条记录(〜= 1个月的数据) - 实时渲染(秒可能是一分钟)。从这个角度来看,最好是优化阅读,而不是写作。
答案 1 :(得分:0)
您还可以每月创建一个新的集合。或者将数据存储两次。磁盘空间很便宜。