嘿,弗拉德,关于日志(log),你有几个简单的策略.
首先要知道的是,Mongo通常可以在没有大量RAM的情况下处理大量连续插入.原因很简单,你只需要插入或更新最近的内容.因此,索引大小会增加,但数据会不断被调出.
换句话说,您可以将RAM的使用分为两个主要部分:索引和;数据
如果您运行的是典型的日志(log)记录,那么数据部分会不断被清除,因此只有索引真正留在RAM中.
要知道的第二件事是,可以通过将日志(log)放入较小的存储桶来缓解索引问题.这样想吧.如果将所有日志(log)收集到带有日期戳的集合中(称为logs20101206
),那么还可以控制RAM中索引的大小.
随着时间的推移,旧的索引将从RAM中刷新,不再被访问,因此它将消失.
但我也在考虑使用cron脚本来转储和删除旧数据
这种按天记录的方法也有助于删除旧数据.在三个月内,当你处理完数据后,你只需做db.logs20101206.drop()
次,收集的数据就会立即消失.请注意,您不会回收磁盘空间(都是预先分配的),但新的数据将填补空白.
我是否应该考虑使用更小的键,如在其他论坛上建议的?
对
事实上,我把它内置到了我的数据对象中.所以我使用logs.action
或logs->action
访问数据,但在下面,数据实际上保存到了logs.a
.在"字段"上比在"值"上花费更多的空间真的很容易,所以缩小"字段"并try 将其抽象到其他地方是值得的.