我们正在考虑将日志信息写入MongoDB日志数据库,但在生产环境中运行Mongo的实践经验基本没有。
每天我们都会写一百万个+日志条目。超过(比如说)一个月的日志需要每天清除(比如说)。我担心的是Mongo将如何处理这些删除。
Mongo计划的潜在问题是什么? 我们需要删除删除吗? 鉴于我们将按时间顺序删除(即:插入顺序),我可以假设碎片不会成为问题吗? 数据库是否需要定期压缩?
答案 0 :(得分:1)
db.yourCollection.createIndex(
{"nameOfDateField":1},
// Seconds in Minutes * Minutes in hour * hours a day * days in month (commercial)
{"expireAfterSeconds": 2592000}
)
这样,mongod
子进程将负责删除过期数据,将集合转换为循环数据库。运动部件少,关心少。请注意,文档将在过期的同一时间内删除。在最糟糕的情况下,它们在到期之前可能需要2分钟(iirc)才能实际删除。在中位数处,过期文档应在到期后30秒内删除。
答案 1 :(得分:0)
您可以为日志文件轮换配置MongoDB:
"管理日记" 部分当然感兴趣:
我的最后一个建议是关于" smallfiles" 选项:
设置为false以防止在不需要持久性的情况下日记的开销。要减少日记对磁盘使用的影响,可以启用日志,并将smallfiles设置为true以减小数据和日志文件的大小。