我有一个系统,它通过http(> 10k生产者,每天10个日志,每个约100行文本)从不同的地方接收日志文件.
我想存储它们以便能够计算misc.每晚统计它们,出口它们(按到达日期或第一行内容排序)......
我的问题是:存储它们的最佳方法是什么?
平面文本文件(具有适当的锁定),每个上传文件一个文件,每天一个目录/生产者
平面文本文件,所有生产者每天一个(大)文件(这里的问题将是索引和锁定)
带有文本的数据库表(由于内部原因,MySQL是首选)(pb与DB清除为删除可能会很长!)
数据库表,每行文本一条记录
具有分片的数据库(每天一个表),允许简单的数据清除.(这是分区.但是我有权访问的mysql版本(即内部支持)不支持它)
基于文档的DBàlacouchdb或mongodb(问题可能与索引/成熟度/摄取速度有关)
有什么建议?
(免责声明:我在MongoDB上工作.)
我认为MongoDB是最好的日志记录解决方案.它非常快,因为它可能比发送数据更快地插入数据.您可以对数据(例如,日期或日志级别的范围)以及索引和字段或字段组合进行有趣的查询.它也很好,因为你可以随机地向日志添加更多字段("oops,我们想要一些堆栈跟踪字段")并且它不会引起问题(就像使用平面文本文件一样).
就稳定性而言,很多人已经在生产中使用MongoDB(参见http://www.mongodb.org/display/DOCS/Production+Deployments).在我们转到1.0之前,我们还想要添加一些其他功能.