2

我打算将我的 squid 实例记录到 mongodb,但实际问题是我们要记录大量流量,每次访问都经过用户/通行证的身份验证。最终,我们必须根据日志进行一些报告。我正在考虑插入按月和用户分发的日志,所以我的集合将如下所示:

{month: 'april', users: [{user: 'loop0', logs: [{timestamp: 12345678.9, url: 'http://stackoverflow.com/question/ask', ... }]}]

因此,如果我想根据 4 月生成报告,我只需要获取正确的月份,而不是查看无数行来获取时间戳在 4 月 1 日和 4 月 30 日之间匹配的行。

当然这种类型的插入会比直接插入日志行要慢。所以我的问题是:有没有最好的方法来做到这一点?

现在我们每天有大约 1200 万行日志。

4

2 回答 2

0

不知道细节很难说,但我会说你很可能担心错误的问题:你正在考虑插入速度而不是报告计算速度。

Mongo 有一整天的时间来存储这 1200 万个条目,但您可能希望报告 - 可能跨越十亿个条目(~= 1 个月的数据) - 实时呈现(几秒钟可能一分钟)。从这个角度来看,优化阅读而不是写作可能是可取的。

于 2010-04-25T15:56:18.093 回答
0

您还可以每月创建一个新集合。或者将数据存储两次。磁盘空间很便宜。

于 2010-04-26T09:31:33.470 回答