在用grep等分析了几千兆字节的日志文件之后,我想知道如何通过使用数据库来记录这些内容,从而使这更容易。什么数据库适合这个purpuse?当然,vanillia SQL数据库可以工作,但提供了许多事务保证等,这些都是您不需要的,如果您使用数GB的数据和非常快的插入速率,这可能会使速度变慢。所以NoSQL数据库可能是正确的答案(比较this answer的一些建议)。数据库的一些要求是:
更新:已经存在一些问题:Database suggestion for processing/reporting on large amount of log file type data和What are good NoSQL and non-relational database solutions for audit/logging database。但是,我很好奇哪些数据库满足了哪些要求。
答案 0 :(得分:5)
在尝试了很多nosql解决方案后,我最好的赌注是:
Riak + Riak轻松搜索(非常!)并允许您对数据进行免费表单查询。您还可以轻松地混合数据模式,甚至可以将数据压缩为innostore作为后端。
如果您真的想要使用索引而不是放慢速度爬行,MongoDB很难扩展到几千兆字节的数据。考虑单节点性能并提供索引创建,它确实很快。一旦您的工作数据集不再适合内存,就会出现问题......
mysql / postgresql仍然非常快,并且由于通常的b +树索引而允许自由格式查询。如果某些字段没有显示在每条记录中,请查看partial indexes的postgres。它们还提供压缩表,并且由于模式已修复,因此您不会反复保存行名称(这是许多nosql解决方案通常会发生的情况)
如果您已经知道要查看的查询,那么CouchDB很不错,他们基于增量地图/缩小的视图是一个很好的系统。
答案 1 :(得分:3)
您可以查看很多不同的选项。您可以使用Hive进行分析,使用Flume来使用和加载日志文件。 MongoDB也可能是一个很好的选择,请看log analytics with MongoDB, Ruby, and Google Charts
上的这篇文章答案 2 :(得分:1)
根据您的需要Splunk可能是个不错的选择。它不仅仅是一个数据库,而是您可以获得各种报告。此外,它被设计为日志文件替换,因此他们已经解决了扩展问题。